Пример #1
0
void main(void) {
	clock_int_4MHz();
	habilita_canal_AD(AN0);
	
	lcd_ini();
	//Lcd_Cmd(LCD_CLEAR);
	Lcd_Cmd(LCD_CURSOR_OFF);
	tempo_ms(100);

        CGRAM_SanUSB(1,sino);//CGRAM_build(monta posicao do caractere especial,vetor do desenho);
        tempo_ms(300);
        Lcd_Chr(1, 2, 1); //Lcd_Chr(linha, coluna, posicao do caractere especial);
        
	tempo_ms(500);

        lcd_escreve(1, 3, "Microcontrol");
	tempo_ms(500);
	
	lcd_escreve(2, 1, "Converte");
	tempo_ms(500);
	
    while(1)
    {
		i= le_AD10bits(0);
                inverte_saida(pin_b7);inverte_saida(pin_d7);
		sprintf(buffer1,"%d  ",i);
		lcd_escreve2(2, 12, buffer1); //com buffer
		tempo_ms(300);

                //printf("a ");
       	}
}
void main(void) {
	clock_int_48MHz();
	habilita_canal_AD(AN0);
	
	lcd_ini();
	//Lcd_Cmd(LCD_CLEAR);
	Lcd_Cmd(LCD_CURSOR_OFF);
	tempo_ms(100);

        CGRAM_SanUSB(1,abre1);//CGRAM_build(monta posicao do caractere especial,vetor do desenho);
        tempo_ms(100);
        CGRAM_SanUSB(2,fecha1);
        tempo_ms(100);
        CGRAM_SanUSB(3,abre2);
        tempo_ms(100);
        CGRAM_SanUSB(4,fecha2);
        tempo_ms(100);
        CGRAM_SanUSB(5,vazio);
        tempo_ms(100);
        CGRAM_SanUSB(6,b1);
        tempo_ms(100);

 while(1){
    lcd_escreve(1,1,"SanUSB pisca o");
    tempo_ms(500);
    lcd_escreve(2,1,"Led pra voce ");
    tempo_ms(500);

    Lcd_Chr(2, 14, 6); //Lcd_Chr(linha, coluna, posicao do caractere especial);
    tempo_ms(500);
    
    for (kl = 1; kl < 16; kl++) {
    Lcd_Chr(1, kl, 2);
    tempo_ms(300);
    Lcd_Chr(1, kl, 1);
    tempo_ms(300);
    Lcd_Chr(1, kl, 5);
    tempo_ms(100);
    inverte_saida(pin_b7);
    inverte_saida(pin_d7);
          }
    //*
    kl=16;
    for (kl = 16; kl > 0; kl--) {
    Lcd_Chr(2, kl, 4);
    tempo_ms(300);
    Lcd_Chr(2, kl, 3);
    tempo_ms(300);
    Lcd_Chr(2, kl, 5);
    tempo_ms(100);
    inverte_saida(pin_b7);
    inverte_saida(pin_d7);
                            }//*/
 }
}
Пример #3
0
//#pragma interrupt interrupcao
void interrupt interrupcao(){

    if (INTCONbits.TMR0IF)     {  //espera o estouro do timer0 -> TMR0L=0
    INTCONbits.TMR0IF = 0;        //limpa a flag de interrupção
    i++; if(i>255){i=0;}
    if(i>=comand[1]){nivel_alto(pinored);} else {nivel_baixo(pinored);}
    if(i>=comand[2]){nivel_alto(pinogreen);} else {nivel_baixo(pinogreen);}
    if(i>=comand[3]){nivel_alto(pinoblue);} else {nivel_baixo(pinoblue);}

    TMR0L = TMR0L + 16; // load time before plus 240us/12(48MHz) = 10us x 4 (prescaler 001) = 80us -> T = 80us * 255 =~  20ms
                                }

if (serial_interrompeu)  { INTCONbits.TMR0IE = 0;//Desabilita interupção timer 0
     serial_interrompeu=0;
     comando[n] = le_serial();
     if (comando[n]==79) {flagb=1;n=0;}

         if (m>13 && comando[0]==65) {m=n; flag=1;}

         if (comando[n]=='R'){n=0;comando[0] = 'R';} //UTILIZAR VALORES DECIMAIS EM DOIS DIGITOS. ex:06, 23, 15, etc.

         if (n>=3 && comando[0]=='R')  {
                         comand[1]= comando[1]; //Led RGB anodo comum//
                         comand[2]= comando[2];
                         comand[3]= comando[3];
                         n=0;  comando[0] = 32;
                         inverte_saida(pin_b7); INTCONbits.TMR0IE = 1;
                                        }
            ++n; m=n; if(n>=29){n=0;}

            switch (comando[0]){
            case  79 : {flag=0; chegou=1;m=0;}

            case 'L' : {flag=0; n=0; c=1; nivel_alto(pin_b7); envia=1;} //habilita envio online via APK SanUSBLE
            break;
            case 'D' : {flag=0; n=0; nivel_baixo(pin_b7); envia=0;} //Desabilita envio
            break;
            case 'P': { flag=0; n=0; nivel_alto(pin_b7);envia=0;} //Desabilita envio
            break;
            case 'T': {flag=0; n=0; inverte_saida(pin_b7); envia=0;} //Desabilita envio
            break;
                               }
                            }
}
Пример #4
0
void main(){

    clock_int_48MHz();
    habilita_interrupcao(recep_serial);
    taxa_serial(9600);
    habilita_canal_AD(AN0_a_AN1);
    bt_ini();

    T0CON =0B11000001; //TMR0ON, 8 bits, Prescaler 1:4 (001 - see datasheet)
    TMR0L = 16; //conta 240us antes de estourar x 4 (prescaler)
    RCONbits.IPEN = 1;    //apenas interrupções de alta prioridade
    INTCONbits.GIEH = 1;  //Habilita interrupções de alta prioridade
    INTCONbits.TMR0IE = 1;//Habilita interupção timer 0

    while(1){
    if (entrada_pin_e3==0){Reset();} //com interrupcao evitar no while, pois pode dar conflito com a gravacao
       if (envia){
       inverte_saida(pin_b7);tempo_ms (500);
       sendrw((char *)"https://docs.google.com/forms/d/1PZOqjnitER0m03Ix4r9gDBqhp7Xs1YrPmjLymE2VWAU/formResponse?ifq&entry.962023089=");
       sendnum(le_AD10bits(0));
       sendrw((char *)"&entry.1468266733=");
       temperatura=(420*le_AD10bits(1))/1023;
       sendnum(temperatura);
       sendrw((char *)"&entry.1609904957=");
       sendnum(41);
       sendrw((char *)"&entry.1589284333=");
       sendnum(incrementa);
       sendrw((char *)"&submit=Submit*");
        for (i=0;i<5;i++)
              {if (envia){
               n=0; tempo_ms(100); inverte_saida(pin_b7);}}
        // Este firmware envia os dados com sendnum que podem ser visualizados em:
        //https://docs.google.com/spreadsheets/d/1tDX1NalMiKmKVawsHfS7hpAf7lB5ZeHpYu0nLmau-TE/edit#gid=1687639411
        envia=0;
                    }

      ++incrementa;
      n=0; tempo_ms(300);


    }
}
void main() {
    clock_int_4MHz(); //Função necessari para o dual clock
    taxa_serial(9600);
    habilita_canal_AD(AN0);

    while (1) {
        for (i = 0; i < 100; i = i + 5) {
            SetaPWM1(10000, i);
            SetaPWM2(10000, i); //frequência em Hz

            resultado = le_AD10bits(0); //Lê canal  0 da entrada analógica com  resolução de 10 bits (ADRES)
            Vresult = (resultado * 5000) / 1023;

            //printf("Tensao Result= %lu mV\r\n", Vresult); //evitar  o printf o uso do printf e imprimir com sendsw e sendnum
            sendsw((char *) Tensao);
            sendnum(Vresult);
            sendsw((char *) Rn);

            inverte_saida(pin_b7);
            tempo_ms(500);
        }

        for (i = 100; i > 0; i = i - 5) {
            SetaPWM1(1200, i);
            SetaPWM2(1200, i);

            resultado = le_AD10bits(0); //Lê canal  0 da entrada analógica com  resolução de 10 bits (ADRES)
            //printf("Valor AD= %lu\r\n", resultado); //evitar  o printf o uso do printf e imprimir com sendsw e sendnum

            sendsw((char *) TextoAD);
            sendnum(resultado);
            sendsw((char *) Rn);

            inverte_saida(pin_b7);
            tempo_ms(500);
        }


    }
}
void main(){
    TRISB = 0;
    clock_int_4MHz();
    habilita_interrupcao(recep_serial);
    taxa_serial(19200);
while(1){

   while (pisca==1){
            inverte_saida(pin_b7);tempo_ms (300);
    }
     tempo_ms (2000);
}
}
void main (void){
    unsigned char i;
        clock_int_48MHz();
	Init_GLCD();
        
        SetPos(1,1);  
	SanDraw((char*)imagem);
        tempo_ms(4000);
        ClearScreen();

///*    //box(1,1,126,62);//plota caixa entre os 4 pontos x1,y1,x2,y2 (máx 126 e 62)
	//ASCII 22 (x16) is set position followed by x,y
	PutMessage((char*)"\x16\x26\x08 Grupo\x16\x20\x10  SanUSB\n Titulo:\n Autor:\n Compilador:");
	PutMessage((char*)"\x16\x32\x18LcdGrafico C18");
	PutMessage((char*)"\x16\x32\x20Grupo SanUSB");
	PutMessage((char*)"\x16\x40\x28MPLABX C18");
        tempo_ms(1000);
        //ClearScreen(); //*/
   
	while (1){inverte_saida(pin_b7); inverte_saida(pin_d7); tempo_ms(500);
                  if(!entrada_pin_e3){Reset();} //Estado de gravação via USB
                 }
}
Пример #8
0
//#pragma interrupt interrupcao
void interrupt interrupcao(){

if (serial_interrompeu)  {
     serial_interrompeu=0;
     comando[n] = le_serial(); 
     if (comando[n]==79) {flagb=1;}
     switch (comando[n]){
            case 'L' : { nivel_alto(pin_b7);}
            break;
            case 'D' : { nivel_baixo(pin_b7);} //Desabilita envio
            break;
            case 'P': {inverte_saida(pin_b7);} //Desabilita envio
            break;
            case 'T': {inverte_saida(pin_b7);} //Desabilita envio
            break;
                        }
     //////////FUNCAO 4: CONFIGURA RELÓGIO////////////////////Ex: Digitar A4H09 (Hora = 09) , A4D15 (Dia = 15).
     if (comando[n]=='A'){n=0;comando[0] = 'A';} //UTILIZAR VALORES DECIMAIS EM DOIS DIGITOS. ex:06, 23, 15, etc.

         if ( comando[1]== '4' && comando[2]== 'H' && n==2) { endereco=2;} //Escreve o endereco das horas
         if ( comando[1]== '4' && comando[2]== 'M' && n==2) { endereco=1;} //Escreve o endereco dos minutos
         if ( comando[1]== '4' && comando[2]== 'S' && n==2) { endereco=0;} //Escreve o endereco dos segundos
         if ( comando[1]== '4' && comando[2]== 'D' && n==2) { endereco=4;} //Escreve o endereco do dia
         if ( comando[1]== '4' && comando[2]== 'N' && n==2) { endereco=5;} //Escreve o endereco do mes
         if ( comando[1]== '4' && comando[2]== 'Y' && n==2) { endereco=6;} //Escreve o endereco do ano
         
         if ( comando[1]== '4' && comando[3]>='0'&&comando[3]<='9'&& n==3) {numquant=(comando[3]-0x30);}
         if ( comando[1]== '4' && comando[4]>='0'&&comando[4]<='9'&& n==4) {numquant=numquant*10+(comando[4]-0x30);                                                                         
                                                                            flagA4=1;
                                                                            }

     //////////////*////////FUNCAO 5: LÊ RELÓGIO////////////////////////////Ex: A5- Lê o relógio e o calendário
         if (comando[1]== '5' && n==1){flagA5=1;}

         ++n; if(n>=5){n=0;}
   }
}
void
main(void) {
   clock_int_48MHz();
   
   TRISB=0;
    lcd_ini();
    lcd_envia_byte(LCD_CLEAR);
    lcd_envia_byte(LCD_CURSOR_OFF);
    lcd_envia_byte(LCD_CLEAR);
    
    CopyConstToRAM(ram_msg,text);
    Lcd4_Write_Text(ram_msg);
    tempo_ms(10);

    //Store Heart in CGRAM of LCD
    lcd_envia_byte(0x40); ////64 Envia o comando de escrita na CGRAM 4-bit mode, Padrao 5 x 7 
    for (i=0;i<=7;i++)
    {
        Lcd4_Write(character[i]);
    }

    lcd_envia_byte(SECOND_ROW);
    //Lcd4_Write('I');
    //Lcd4_Write(' ');
    
   Lcd4_Write(0);        //Custom Character
    
   //Lcd4_Write(' ');
   
   //CopyConstToRAM(ram_msg,love);
    //Lcd4_Write_Text(ram_msg);

    while(1){
        inverte_saida(pin_b7); inverte_saida(pin_d7);
        tempo_ms(500);
            }
}
void main() {
    clock_int_4MHz();

    habilita_interrupcao(recep_serial);
    taxa_serial(19200);

    while (1) {

        sendsw((char *) Teste); // const char Teste[] = "Teste\r\n ";

        inverte_saida(pin_b7);
        //inverte_saida(pin_d6);
        tempo_ms(3000);

    }
}
Пример #11
0
void interrupcao(){
if (serial_interrompeu)  {
     serial_interrompeu=0;
     comando[n] = le_serial(); m=n; //comand[m]=comando[n];

         switch (comando[n]){

             case 'C':
             AT1=1;
             break;

             case 'I':
             AT2=1;
             break;

             case 'A':
             AT1=1;
             break;

             case 'S':
             AT1=1;
             break;

             case '*':
             AT1=1;
             break;
           case 'Y':
             {n=0;comando[0] = 'Y';}
              break;
         }
 //***************possibility 1->character***********************
                            if (comando[0]== 'Y' && n==1){comando[0]== 32;
                                       switch(RCREG)
                                                  {
                                                case 'L':  nivel_alto(pin_b7); //type in browser address bar: 192.168.1.195/YL
                                                           flagsw=1;
                                                break;

                                                case 'D': nivel_baixo(pin_b7); //type in browser address bar: 192.168.1.195/YD
                                                break;

                                                case 'P':  nivel_alto(pin_b7); //type in browser address bar: 192.168.1.195/YP
                                                break;

                                                case 'T': inverte_saida(pin_b7); //type in browser address bar: 192.168.1.195/YT to toggle Led and open a HTML page
                                                          flagsw=1;
                                                break;

                                                 }
                                                         }
//***************possibility 2-> word**************************
                            if ( comando[1]== 'O' && comando[2]== 'N')
                                                {
                                                 nivel_alto(pin_b7);  // ON
                                                }

                            if ( comando[1]== 'O' && comando[2]== 'F' && comando[3]== 'F')
                                                {

                                                 nivel_baixo(pin_b7); // OFF
                                                }
         ++n; if(n>=64){n=0;}
   }

                   }
Пример #12
0
void main(){

    clock_int_48MHz();
    habilita_interrupcao(recep_serial);
    habilita_canal_AD(AN0);
    taxa_serial(9600);
    i2c_ini();

    while(1){

        if (flagA4){ flagA4=0; //Comandos A4 para Configurar o RTC
                escreve_rtc(endereco, dec_para_bcd(numquant)); //Escrever em BCD no RTC
                send_hex(le_rtc(hora)); swputc (':');     //Envia resultado via serial por bluetooth ou qualquer outro modem.
                send_hex(le_rtc(min));  swputc (':');     //Exemplo de resposta: 18:49:37 19/04/14
                send_hex(le_rtc(seg));  swputc (' ');
                send_hex(le_rtc(dia));  swputc ('/');
                send_hex(le_rtc(mes));  swputc ('/');
                send_hex(le_rtc(ano));  swputc(' ');
                    }

        if (flagA5){ flagA5=0; //BCD em hexadecimal representa o decimal
                send_hex(le_rtc(hora)); swputc (':');
                send_hex(le_rtc(min));  swputc (':');
                send_hex(le_rtc(seg));  swputc (' ');
                send_hex(le_rtc(dia));  swputc ('/');
                send_hex(le_rtc(mes));  swputc ('/');
                send_hex(le_rtc(ano));  swputc(' ');
                      }

        resultado = le_AD10bits(0);
        tensao_lida16 = (resultado * 5000)/1023; //Valor até 16 bits (2 bytes)
        sendnum(tensao_lida16); swputc(' ');

        /***************************************************************************
        conv_dec_2bytes(tensao_lida16);
        posicao=2*endereco16; //endereço é o ponteiro de 16 bits (byte 1 e byte 2)
        escreve_ieeprom( posicao, byte2); //Byte mais significativo do int16
        escreve_ieeprom( posicao+1, byte1 ); //byte menos significativo do int16
        ++endereco16; if (endereco16>=150){endereco16=0;} //Buffer de 300 bytes posicao<300
        //***************************************************************************/

        if(entrada_pin_e3==0){
       send_hex(le_eeprom(5)); swputc(' ');

         /***************LEITURA DO BUFFER DA EEPROM EXTERNA I2C********************
                for(i=0; i<10; ++i) { //150 Valores de 16 bits ou 300 de 8 bits.
                    for(j=0; j<15; ++j) {
                        valorgravado= 256*le_ieeprom((i*30)+2*j) + le_ieeprom((i*30)+2*j+1);
                        sendnum(valorgravado); swputc(' ');
                                        }
                        sendrw((rom char *)"\n\r");
                                    }
                        sendrw((rom char *)"\n\r");
    //***************************************************************************/
                              }
        ++i; if(i>255) {i=0;}
        escreve_eeprom(5, i); 
        inverte_saida(pin_b7);
        tempo_ms(1000);
             }
}
void main(){
    TRISA = 0x00;
    TRISB = 0x00;
    TRISC = 0x00;
    PORTB = 0x7F;
    clock_int_48MHz();
    habilita_interrupcao(recep_serial);
    taxa_serial(19200);
    //T0CON BITS = TMR0ON , T08BIT(0=16bits OR 1=8bits), T0CS , T0SE , PSA , T0PS2 T0PS1 T0PS0.
    //Defaull 1 in all bits.
    T0CON =0B11000001; //TMR0ON, 8 bits, Prescaler 1:4 (001 - see datasheet)
    TMR0L = 6; //conta 250us antes de estourar x 4 = 1ms
    nivel_baixo(pin_c1);
    nivel_baixo(pin_c2);
    while(1){
        if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação
        inverte_saida(pin_b7);
        tempo_ms(500);
        n=0;
        flag = 0;
        if(dia >=0 && dia <=9 && hora >=0 && hora <=23 && minuto >=0 && minuto <=59 && segundo >=0 && segundo <=59){
            nivel_baixo(pin_b7);
            if(dia!=0 || hora!=0 || minuto!=0 || segundo!=0){
                nivel_alto(pin_c1);
                nivel_alto(pin_c2);
                for(i=dia;i>=0;i--){
                    for(j=hora;j>=0;j--){
                        dezhora=j/10;
                        undhora=j%10;
                        for(w=minuto;w>=0;w--){
                            dezmin=w/10;
                            undmin=w%10;
                            for(x=segundo;x>=0;x--){
                                if(flag != 1){
                                    dezseg=x/10;
                                    undseg=x%10;
                                    for(y=0;y<71;y++){           //71 * 14 = 994 ms
                                        TMR0L = 0;
                                        nivel_alto(pin_c0);
                                        nivel_baixo(pin_a5);
                                        nivel_baixo(pin_a4);
                                        nivel_baixo(pin_a3);
                                        nivel_baixo(pin_a2);
                                        nivel_baixo(pin_a1);
                                        nivel_baixo(pin_a0);
                                        PORTB=set_segC[i];
                                        timer0_ms(2);

                                        nivel_baixo(pin_c0);
                                        nivel_alto(pin_a5);
                                        PORTB=set_segC[dezhora];
                                        timer0_ms(2);

                                        nivel_baixo(pin_a5);
                                        nivel_alto(pin_a4);
                                        PORTB=set_segC[undhora];
                                        timer0_ms(2);

                                        nivel_baixo(pin_a4);
                                        nivel_alto(pin_a3);
                                        PORTB=set_segC[dezmin];
                                        timer0_ms(2);

                                        nivel_baixo(pin_a3);
                                        nivel_alto(pin_a2);
                                        PORTB=set_segC[undmin];
                                        timer0_ms(2);

                                        nivel_baixo(pin_a2);
                                        nivel_alto(pin_a1);
                                        PORTB=set_segC[dezseg];
                                        timer0_ms(2);

                                        nivel_baixo(pin_a1);
                                        nivel_alto(pin_a0);
                                        PORTB=set_segC[undseg];
                                        timer0_ms(2);
                                    }
                                    if (flag == 1){
                                        nivel_baixo(pin_a0);
                                    }
                                }
                            }segundo=59;
                        }minuto=59;
                    }hora=23;
                }
                nivel_baixo(pin_a0);
                nivel_baixo(pin_c1);
                nivel_baixo(pin_c2);
                flag = 0;
            }
            for(a=0;a<2;a++){
                for(b=0;b<3;b++){
                    for(c=0;c<50;c++){
                        nivel_alto(pin_c0);
                        nivel_baixo(pin_a5);
                        nivel_baixo(pin_a4);
                        nivel_baixo(pin_a3);
                        nivel_baixo(pin_a2);
                        nivel_baixo(pin_a1);
                        nivel_baixo(pin_a0);
                        PORTB=set_theend[5];
                        tempo_ms(3);

                        nivel_baixo(pin_c0);
                        nivel_alto(pin_a5);
                        PORTB=set_theend[4];
                        tempo_ms(3);

                        nivel_baixo(pin_a5);
                        nivel_alto(pin_a4);
                        PORTB=set_theend[3];
                        tempo_ms(3);

                        nivel_baixo(pin_a4);
                        nivel_alto(pin_a2);
                        PORTB=set_theend[2];
                        tempo_ms(3);

                        nivel_baixo(pin_a2);
                        nivel_alto(pin_a1);
                        PORTB=set_theend[1];
                        tempo_ms(3);

                        nivel_baixo(pin_a1);
                        nivel_alto(pin_a0);
                        PORTB=set_theend[0];
                        tempo_ms(3);
                    }
                    PORTB=0x7F;
                    tempo_ms(time);
                }
                time=900;
            }
            PORTB = 0x7F;
            dia = -1;
            hora = -1;
            minuto = -1;
            segundo = -1;
        }
    }
}