Está en la página 1de 3

El paso vital al que muchos quieren llegar, el c�digo a usar es el siguiente:

01
#include <16f877A.h>
02
#Fuses XT,NOWDT,NOPUT,NOPROTECT
03
#use delay(clock=4000000)
04
#use fast_io(B)
05
#use fast_io(D)
06
#use fast_io(C)
07
#use fast_io(E)
08
int8 disp1,disp2, cont;
09
int8 const Deco[10]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 2, 0x78, 0, 0x18};
10

11

12
/*FUNCION DE INICIALIZACION DE PUERTOS*/
13
void ini_puertos(){
14
port_B_pullups(true); //pull - up activos en port B
15
set_tris_B(0xFF); // todo port B como entrada
16
set_tris_D(0x00);
17
set_tris_C(0x00);
18
set_tris_E(0x00);
19
cont=0;
20
}
21

22
/*FUNCION DE INCREMENTO EN DISPLAYS POR LIMITE*/
23
void incrementa(){
24
cont++;
25
disp2++;
26
if(disp2==10){
27
disp2=0;
28
disp1++;
29
if(disp1==10){
30
disp1=0;
31
}}}
32

33
/*FUNCI�N DE DECREMENTO EN DISPLAYS*/
34
void inicio(){
35
if((disp1!=0)||(disp2!=0)){
36
disp2--;
37
if(disp2==255 ){
38
disp2=9;
39
disp1--;
40

41
}
42
}
43

44
}
45
void main(){
46
ini_puertos();
47
disp1=0;
48
disp2=0;
49
output_D(Deco[disp1]);
50
output_C(Deco[disp2]);
51
output_high(pin_E0); //Led apagado
52

53
while(true){
54
if(!input(pin_B7)){ //CONTADOR CON BOTON
55
incrementa();
56
output_D(Deco[disp1]);
57
output_c(Deco[disp2]);
58
delay_ms(200); //Configuraci�n tiempo de incremeto al pulsar el
bot�n
59
}
60

61
if(!input(pin_B5)){ //Encendido de LED � prueba de carga
62
output_low(pin_E0);
63
delay_ms(200);
64
output_high(pin_E0);
65
}
66

67
if(!input(pin_B6)){ //descontador de #
68
while(cont!=0){
69
inicio();
70
output_D(Deco[disp1]);
71
output_c(Deco[disp2]);
72
delay_ms(1000);
73
cont--;
74
}
75
if((disp1==0)||( disp2==0)){
76
output_high(pin_E0);
77
delay_ms(200);
78
output_low(pin_E0);
79
}
80
}
81

82
}
83

84
return;
85
}
Bien, muy bien el c�digo tiene comentado lo m�s relevante no hace falta modificarlo
si entiendes muy bien lenguaje C podr�s interpretarlo completamente aunque es muy
corto.