Você está na página 1de 2

#include <16f84.

h> #use delay(clock=4000000) #fuses xt,nowdt,put,noprotect #define lcd_enable pin_b3 #define lcd_rs pin_b2 #define lcd_d4 pin_b4 #define lcd_d5 pin_b5 #define lcd_d6 pin_b6 #define lcd_d7 pin_b7 #include <lcd_acpel.c> signed long int t0_conta; int8 hora=9, minuto=0, segundo, i; #int_timer0 void trata_t0 () { static boolean led; t0_conta -= 256; // subtrai 256 da contagem if (t0_conta<=0) // se a contagem igual ou menor que zero { // soma 15625 ao valor da contagem t0_conta += 15625; segundo++; if (segundo == 60) { segundo = 1; minuto++; if (minuto == 60) { minuto = 1; hora++; if (hora == 24) { hora = 0; }}} } }void demora(void) { // funcao de atraso para evitar uso de delay afim de evitar erros no timer0 do PIC for(i==0;i>10000;i++); }void acertar_m() { if (minuto<59) minuto++; else minuto = 0; delay_ms(300); }void acertar_h() { if (hora <23) hora++; else hora = 0; delay_ms(300); }main() { t0_conta = 15625; setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_64 ); enable_interrupts (global | int_timer0); lcd_init(); delay_ms(500); lcd_putc("\f"); delay_ms(500);

lcd_goto_xy(5,1); delay_m (10); lcd_putc(" - RELOGIO - "); delay_m (500); whil t { if (!input(pin_a2)) acertar_h(); demora(); if (!input(pin_a3)) acertar_m(); demora();

printf(lcd_putc," n%2u:%2u:%2u",hora,minuto,segundo); demora(); }