#include <16f873a.h>
#device adc=10
#fuses NOWDT,BROWNOUT,XT,NOLVP,noPUT
#use delay (clock=4m)
#define use_portb_lcd true
#include <lcd420.c>
float valor,volt,valor2,amper;
int32 tiempo=0;//Tiempo
int32 tiempoS;// conteo de segundos
int32 tiempoH;// conteo de minutos
int32 tiempoM;// conteo de horas
#int_ext
void interupcion_externa (void)
{
if(input(PIN_A1)==true)
tiempo++;
if(input(PIN_A1)==false)
tiempo
=0;
}
#INT_TIMER2
void timer2_isr(void)
{
set_timer2(25536);
if (tiempo < 17999999)tiempo ++; else tiempo=0;
}
void main(){
setup_adc_ports(an0_an1_an3);
setup_adc(adc_clock_div_32 );
lcd_init();
lcd_gotoxy(1,3);
lcd_putc("secion");
lcd_gotoxy(2,1);
lcd_putc("Volt Amper");
while (true){
setup_timer_2(t2_div_by_4,124,1);
enable_interrupts(int_timer2);
enable_interrupts(INT_EXT);
ext_int_edge(L_TO_H);
enable_interrupts(global);
set_adc_channel(0);
delay_us(20);
volt = read_adc();
delay_us(500);
valor=volt*50/1023;
lcd_gotoxy(2,2);
printf(lcd_putc,"%04.2f",valor );
delay_ms(500);
set_adc_channel(3);
delay_us(20);
amper = read_adc();
delay_us(500);
valor2=amper*18/1023;
lcd_gotoxy(11,2);
printf(lcd_putc,"%04.3f",valor2);
delay_ms(200);
bucle:
lcd_gotoxy(1,4);
tiempoS=((tiempo*20)/1000);//pasar de numero de instrucciones a segundos
tiempoH=tiempoS /3600;//saco horas
tiempoS=tiempoS-(tiempoH*3600);//resto horas de los segundos
tiempoM=tiempoS/60;//saco minutos
tiempoS=tiempoS - (tiempoM*60);//resto minutos de los segundos
printf(lcd_putc,"%02lu:%02lu:%02lu",tiempoH,tiempoM,tiempoS);
goto bucle;
}
}
como puedo hacer para que el contador pare arranca apenas enciendo el pic necesito que encienda con un botón y pare con el mismo y para poner en cero tener apretado el mismo un tiempo, gracias por leer el cogigo