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); }//*/ } }
//#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; } } }
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 } }
//#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); } }
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;} } }
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; } } }