Buen dia Compañeros,
Reciban un cordial saludo desde Colombia
Estoy iniciando en el mundo de los pic y hace rato estoy en el trabajo de realizar un cronometro de seis digitos (Min, Seg y Dec-Seg), con un Pic16F877A, ya pude desarrollar la idea pero estoy estancado en el control del cronometro ya que desde el momento de que recibe energia este empieza el conteo, y lo que necesito es poder iniciarlo con un sensor qrd1114 y detenerlo con otro qrd1114 y poderle dar reset para que inicie otra vez en 0's.
Adjunto el codigo, lo estoy desarrollando en en MikroC Pro for PIC 2013
Puertos C y D estan como salidas para los 7 Segmentos
Les Agradeceré eternamente su ayuda.
#define datos PORTC
void d1 () {
portd=0b00000001;
}
void d2 () {
portd=0b00000010;
}
void d3 () {
portd=0b00000100;
}
void d4 () {
portd=0b00001000;
}
void d5 () {
portd=0b00010000;
}
void d6 () {
portd=0b00100000;
}
short numero[]={192,249,164,176,153,146,130,248,128,144
};
int i,minuto,minuto1,segundo,segundo1,milisegundo,milisegundo1;
void main() {
adcon1=6;
TRISC=0;
TRISD=0;
PORTC=0;
PORTD=0;
while(1) {
for(minuto1=0;minuto1<=5;minuto1++){
for(minuto=0;minuto<=9;minuto++){
for(segundo1=0;segundo1<=5;segundo1++){
for(segundo=0;segundo<=9;segundo++){
for(milisegundo1=0;milisegundo1<=9;milisegundo1++){
for(milisegundo=0;milisegundo<=9;milisegundo++){
if(minuto1==5 & minuto==9){
minuto=0;
minuto1=0;
}
for(i=0;i<1;i++) {
d6();
datos=numero[milisegundo];
delay_ms(1);
d5();
datos=numero[milisegundo1];
delay_ms(1);
d4();
datos=numero[segundo];
delay_ms(1);
d3();
datos=numero[segundo1];
delay_ms(1);
d2();
datos=numero[minuto];
delay_ms(1);
d1();
datos=numero[minuto1];
delay_ms(1);
}
}
}
}
}
}
}
}
}