void main(void) { clock_int_48MHz(); habilita_interrupcao(recep_serial); taxa_serial(9600); habilita_canal_AD(AN0); iniws(); //habilita_wdt(); while(1) { //ClrWdt(); if (flagsw==1) {flagsw=0;tempo_ms(500); ADvalue=le_AD10bits(0); tempo_ms(500); for(i=0;pg[i]!=0;i++) {smid[i]=pg[i];sputc(smid[i]);} for(i=0;pg1[i]!=0;i++) {smid[i]=pg1[i];sputc(smid[i]);} for(i=0;rede[i]!='\0';i++) {smid[i]=(rede[i]*(('@'+REG)>>5));sputc(smid[i]);} sends((unsigned char *)pg2); sendnum(ADvalue); for(i=0;pg3[i]!=0;i++) {smid[i]=pg3[i];sputc(smid[i]);} for(i=0;pg4[i]!=0;i++) {smid[i]=pg4[i];sputc(smid[i]);} 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() { 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 main(void) { clock_int_4MHz(); habilita_canal_AD(AN0); taxa_serial(9600); i2c_ini(); 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(buffer,"%d ",i); lcd_escreve2(2, 12, buffer); //com buffer tempo_ms(500); sprintf(buffer, "%02X ", le_ieeprom(hora)); lcd_escreve2(2,1, buffer); //com buffer sprintf(buffer, "%02X ", le_ieeprom(min)); lcd_escreve2(2,4, buffer); //com buffer sprintf(buffer, "%02X ", le_ieeprom(seg)); lcd_escreve2(2,7, buffer); //com buffer } }
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(){ clock_int_4MHz(); taxa_serial(19200); while(1) { if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação if(PIR1bits.RCIF) //Flag que indica byte na USART - Serial_avaliable() { PIR1bits.RCIF = 0; //reset flag switch(RCREG)// byte recebido { case 'L': nivel_alto(pin_b7); break;//Chega L acende o led case 'D' : nivel_baixo(pin_b7); break;//Chega D apaga o led } } } }
void main() { clock_int_4MHz(); habilita_interrupcao(recep_serial); taxa_serial(9600); while (1) { if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação nivel_alto(pin_b7); tempo_ms(1000); nivel_baixo(pin_b7); tempo_ms(1000); //tempo_ms(2000); ultoa(d,str); // convert to string and print d - importante para sensores putsUSART(str); tempo_ms(200);// o tempo para envio de mais de um caractere // escreve_serial('A'); //while (envia_byte());// escreve só um byte //------------Transmissão Serial ---------------------------------------------------------------- putsUSART((char *) Txdata); // transmite the string if (avisa_interrompeu == 1) //foi inserido um caracter? { if(inputstr[str_pos - 1] == 'K') //0x0D o último caracter foi o ENTER? {avisa_interrompeu = 0; // printf("Comando digitado %s\r", inputstr); str_pos = 0; //reset da posição na string de buffer } } } }
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() { taxa_serial(9600); enable_interrupts(GLOBAL); enable_interrupts(INT_RDA); #priority rda //serial for(k=0;k<=25;k++){comando[k]=32;} for(k=0;k<=25;k++){comand[k]=32;} //Es vesucht mindestens einmal shreiben, wenn es lehr ist. SPBRGH = 0x02; SPBRG = 0x70; while(1) { while (pisca==1){output_toggle(pin_B7);delay_ms (300);n=0;m=0;} while (chegou==1){ output_toggle(pin_B7);delay_ms(200); if(flagBD==0 && c1==3){ c1=2; write_eeprom(251,2);} serial_putc(79);serial_putc(75);serial_putc(32);n=0; } if (flagBD==1 && chegou==0 && c==0){ SPBRGH = 0x04; SPBRG = 0xE1; serial_putc(S);serial_putc(a);serial_putc(an);serial_putc(u);serial_putc(us); serial_putc(b);serial_putc(x);serial_putc(z); delay_ms(1000); output_toggle(pin_b7); SPBRGH = 0x02; SPBRG = 0x70; } if (flag==1) { flag=0; output_toggle(pin_b7); if (m==12) {comand[1]=a;comand[3]=78;comand[5]=77;comand[8]=S;comand[10]=b;comand[12]=u; for(k=0;k<=m;k++){serial_putc(comand[k]);} for(k=m+1;k<25;k++){serial_putc(32);} ++j;if(j>=5){j=0;flagBD=1;} } write_eeprom(250,m); //PLatz von m-Byte-Zaeler if (c==1){ for(k=0;k<=25;k++){serial_putc(comand[k]);} for(k=0;k<=25;k++){comando[k]=32;comand[k]=32;} n=0;m=0; } delay_ms(1000); } if(chegou==0 && zeit==1){ c1=read_eeprom(251);if(c1==255){++c2;if(c2>3){write_eeprom(251,3);}}//Das erste Lesen ist 255 if (c==0 && c1==3 && flagBD==0){output_toggle(pin_b7);//write_eeprom(251,3); if(m<=12 || m==255){flag=1; m=12; comand[0]=S;comand[2]=an;comand[4]=S;comand[6]=69;comand[7]=83;comand[9]=78;comand[11]=83; } } delay_ms(1000);n=0;} delay_us(30); ++i; //if(i>255) {i=0;} if(i>=comand[1]){output_low(pinored);} else {output_high(pinored);} if(i>=comand[2]){output_low(pinoblue);} else {output_high(pinoblue);} if(i>=comand[3]){output_low(pinogreen);} else {output_high(pinogreen);} }}
void main() { clock_int_4MHz(); TRISB = 0b00000011; //B0 a B5 como entrada e B6-B7 como Saída //habilita_interrupcao(timer0); INTCONbits.TMR0IE = 1; T0CONbits.TMR0ON = 1; multiplica_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 8 tempo_timer16bits(0,62500); //Conta 16 x 62500us = 1 seg. taxa_serial(19200); //printf("Aguardando tecla de comando..."); // Exibimos a mensagem serial via bluetoth... while (1){ if(!entrada_pin_e3){Reset();}//pressionar o botão para gravação bitStd = entrada_pin_b0; //Lê o estado do pino STD e armazena em 'bitStd' if (bitStd == 1) {//Se estiver em nível alto fará as leituras //dos bits dos pinos Q3, Q2, Q1 e Q0 bit01 = entrada_pin_b1; bit02 = entrada_pin_b2; bit03 = entrada_pin_b3; bit04 = entrada_pin_b4; tecla = (bit04 * 8) + (bit03 * 4) + (bit02 * 2) + (bit01 * 1);//Conversão binária para //decimal (ver Vídeo1) sendsw((char *)Recebido); switch (tecla){ // Seleciona a tecla pressionada case 1: // Tecla 1 swputc('1'); /* COMANDO PARA RELE1 */ RELE1_STATE = !RELE1_STATE; // Guarda o estado INVERTIDO do Relé. break; case 2: // Tecla 2 swputc('2'); break; case 3: // Tecla 3 swputc('3'); break; case 4: // Tecla 4 swputc('4'); break; case 5: // Tecla 5 swputc('5'); break; case 6: // Tecla 6 swputc('6'); break; case 7: // Tecla 7 swputc('7'); break; case 8: // Tecla 8 swputc('8'); break; case 9: // Tecla 9 swputc('9'); break; case 10: // Tecla 0 swputc('0'); break; case 11: // Tecla * swputc('*'); break; case 12: // Tecla # swputc('#'); break; } saida_pino(RELE1, RELE1_STATE);//Liga ou desliga o Relé1 conforme o estado (HIGH/ LOW) // Zeram-se todas as variáveis tecla = 0; bit01 = 0; bit02 = 0; bit03 = 0; bit04 = 0; bitStd= 0; tempo_ms(500); // Aguarda 500 milissegundos - o pino Std fica ativo por volta de 30ms } } }
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; } } }