Microcontroladores - Botones de Inicio, Pausa y Reset en Cronometro con Pic16F877A

 
Vista:

Botones de Inicio, Pausa y Reset en Cronometro con Pic16F877A

Publicado por Jefferson (1 intervención) el 18/06/2018 15:28:31
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#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);
}
         }
         }
         }
 
        }
      }
          }
         }
       }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder