Ir ao conteúdo
  • Cadastre-se

fabio fg

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Obrigado pela dica...vou seguir aqui para alcançar o sucesso. Sou programador que arrisco na eletrônica, rs mas ei de conseguir ! Obrigado pelo elogio referente a ideia.
  2. Boa tarde caro amigos, estou com um pequeno problema com EEPROM de um 16f628a. Bem vamos lá...estou desenvolvendo um cronômetro mas com incremento de 10 em 10 minutos mas com leds...que já está funcionando por sinal mas estou querendo deixá-lo mais redondo podendo salvar os minutos restantes e a sua atual posição em relação ao sistema em uma eventual falta de energia. Pelo que já fiz simplesmente não funciona no Proteus e muito menos na prática. Utilizando o CCS compiler gostaria de saber poderia estar acontecendo .... #include <16f628a.h> #include <internal_eeprom.c> #use delay(clock=4000000) #fuses xt,put,NOwdt,protect,NOLVP,NOCPD,INTRC_IO,BROWNOUT,NOMCLR //atual //#fuses XT,INTRC_IO,NOWDT,PUT,BROWNOUT,NOMCLR,NOLVP,PROTECT #DEFINE pulso PIN_A0 //coin #DEFINE ciclo_1 PIN_A1 //led 1 #DEFINE ciclo_2 PIN_A3 //led 2 #DEFINE ciclo_3 PIN_B7 //led 3 #DEFINE ciclo_4 PIN_B0 //led 4 #DEFINE ciclo_5 PIN_B1 //led 5 #DEFINE buzzer PIN_B5 #DEFINE RELE PIN_A2 // relê #DEFINE PILOTO PIN_B4 //led piloto //#include "lcd_FLEX.c" #rom 0x2100 = {0x08,0x07} int16 h,m,s,ms,op,es,AUX,ini,pos_save; int adress; char estado; void main(VOID){ //DELAY_MS(500); es = 1 ; // lcd_init(); // lcd_putc("\fDIVIRTA-xx"); // lcd_putc("\nR$ 0,50 - 10 Min"); estado = 'e'; h=00; m=00; s=00; ms=00; OUTPUT_low(rele); OUTPUT_high(ciclo_1); delay_ms(1000); OUTPUT_high(ciclo_2); delay_ms(1000); OUTPUT_high(ciclo_3); delay_ms(1000); OUTPUT_high(ciclo_4); delay_ms(1000); OUTPUT_high(ciclo_5); delay_ms(1000); OUTPUT_high(piloto); OUTPUT_low(ciclo_1); OUTPUT_low(ciclo_2); OUTPUT_low(ciclo_3); OUTPUT_low(ciclo_4); OUTPUT_low(ciclo_5); ini=1; pos_save = read_int16_eeprom(1); // lê a memória eeprom // habilita interrupções SETUP_CCP1(CCP_CAPTURE_RE); enable_interrupts(INt_CCP1); enable_interrupts(global); switch(pos_save) // verifica se há memória alocada { case 1: {OUTPUT_high(ciclo_1); break;} case 2: {OUTPUT_high(ciclo_2); break;} case 3: {OUTPUT_high(ciclo_3); break;} case 4: {OUTPUT_high(ciclo_4); break;} case 5: {OUTPUT_high(ciclo_5); break;} } while(TRUE) { if (input(pulso)==0) { OUTPUT_high(rele); delay_ms(10); OUTPUT_low(piloto); m = m + 10; // incremento em 10 minutos if (ms == 00) { ms=10; } estado='t'; if (m > 60) { h++; m=0; m=m+5-1; } } if (estado=='t') { ms=ms-1; if (ms == 0) { s--; ms=10; if (s == -1) { s=59; m--; if ((m == -1) && (h > 0)) { m=59; h--; }else { s=59; } } } } //if ((s == 0) && (m == 0) && (h == 0)) if ((m <= 0)) { estado = 'i'; OUTPUT_low(ciclo_1); OUTPUT_low(ciclo_2); OUTPUT_low(ciclo_3); OUTPUT_low(ciclo_4); OUTPUT_low(ciclo_5); OUTPUT_high(piloto); m = 00; } if (estado=='t') { //lcd_gotoxy(1,1); //lcd_putc("\fTEMPO RESTANTE:"); //lcd_gotoxy(1,2); //printf (lcd_putc,"%02d:%02d:%02d\n", h, m, s); /* switch (m){ case 2: { //delay_ms(50); OUTPUT_low(ciclo_2); } case 4: { //delay_ms(50); OUTPUT_low(ciclo_3); } case 6: { //delay_ms(50); OUTPUT_low(ciclo_4); } case 8: { //delay_ms(50); OUTPUT_low(ciclo_5); } }*/ if (m > 0) { delay_ms(20); OUTPUT_high(ciclo_1); write_int16_eeprom(0,1); } if (m > 10) { delay_ms(20); OUTPUT_high(ciclo_2); write_int16_eeprom(0,2); }else { OUTPUT_low(ciclo_2); } if (m > 20) { delay_ms(20); OUTPUT_high(ciclo_3); write_int16_eeprom(1,3); }else { OUTPUT_low(ciclo_3); } if (m > 30) { delay_ms(10); OUTPUT_high(ciclo_4); write_int16_eeprom(0,4); }else { OUTPUT_low(ciclo_4); } if (m > 40) { //delay_ms(10); OUTPUT_high(ciclo_5); write_int16_eeprom(0,5); }else { OUTPUT_low(ciclo_5); } if (m > 50) { m = 50; OUTPUT_high(piloto); } delay_ms(90); }else { //lcd_putc("\f"); op=2; //lcd_putc("\fDIVIRTA-xx"); //lcd_putc("\nR$ 0,50 - 10 Min"); OUTPUT_low(rele); //OUTPUT_low(buzzer); OUTPUT_low(ciclo_1); OUTPUT_low(ciclo_2); OUTPUT_low(ciclo_3); OUTPUT_low(ciclo_4); OUTPUT_low(ciclo_5); OUTPUT_high(piloto); m = 00; estado='e'; delay_ms(50); ES = 0; } } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...