#include <16f84a.h>
#include <math.h> //libreria matematica
#fuses XT,NOWDT
#byte PORTB=0x06
#byte TRISB=0x86
#byte PORTA=0x05
#byte TRISA=0x85
#use delay(clock=4000000)
#use fixed_io(b_outputs=PIN_B0,PIN_B1,PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6,PIN_B7)
int minutos1; //minutos del reloj 1
int segundos1; //segundos del reloj 1
int minutos2; //minutos del reloj2
int segundos2; //segundos del reloj2
float decena;
int unidad;
int x;
int z;
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void convertir(int x){
decena=floor(x/10);
unidad=x-(decena*10);
}
//////////////////////////////////////////////////////////////////////////////////////
void mostrar(int z){
minutos1=x;
convertir(x);
output_a(decena);
output_low(PIN_B0);
output_high(PIN_B0);
output_a(unidad);
output_low(PIN_B1);
output_high(PIN_B1);
segundos1=x;
convertir(x);
output_a(decena);
output_low(PIN_B2);
output_high(PIN_B2);
output_a(unidad);
output_low(PIN_B3);
output_high(PIN_B3);
minutos2=x;
convertir(x);
output_a(decena);
output_low(PIN_B4);
output_high(PIN_B4);
output_a(unidad);
output_low(PIN_B5);
output_high(PIN_B5);
segundos2=x;
convertir(x);
output_a(decena);
output_low(PIN_B6);
output_high(PIN_B6);
output_a(unidad);
output_low(PIN_B7);
output_high(PIN_B7);
}
void main(void){
minutos1=0;
minutos2=0;
segundos2=59;
segundos1=59;
while(true){
output_a(0);
output_b(0b00000000);
if(input(PIN_B0==1) && minutos1<=99){ //pin incrementa minutos reloj 1
++minutos1;
}
mostrar(z);
if(input(PIN_B1==1) && minutos2<=99){ //pin incrementa minutos reloj 2
++minutos2;
}
mostrar(z);
if(input(PIN_A4)==0){ //si RA4 cambia a 0 se apreto el pulsador START
break;
}
}
reloj1: for(z=0;segundos1>=0 && minutos1>=0;--segundos1){
mostrar(z);
if(input(PIN_B3)==1){ //si el pulsador es 1 va al otro reloj
goto reloj2;
}
delay_ms(999.8);
}
--minutos1;
segundos1=59;
goto reloj1;
/////////////////////////////////////////////////////////////////////////////////////
reloj2: for(z=0;segundos2>=0 && minutos2>=0;--segundos2){
mostrar(z);
if(input(PIN_B4)==1){
goto reloj1;
}
delay_ms(999.8);
}
--minutos2;
segundos2=59;
goto reloj2;
}