// definimos los pines de activacion de los display de siete segmentos
#ifndef DSP_1
#define DSP_1 PIN_B4
#endif
#ifndef DSP_2
#define DSP_2 PIN_B5
#endif
#ifndef DSP_3
#define DSP_3 PIN_B6
#endif
#ifndef DSP_4
#define DSP_4 PIN_B7
#endif
#ifndef DSP_CLK
#define DSP_CLK PIN_A0
#endif
#ifndef DSP_EN
#define DSP_EN PIN_A1
#endif
// definimos funciones recortadas
#define ACT output_low
#define DES output_high
#define enc output_high
#define apg output_low
// envia un pulso de clock necesario para el 74HC377 (flip-flop D octal)
void pulse(int pin){
ACT(pin);
DES(pin);
ACT(pin);
}
// envia los 7 bits del display codificados en binario al 7448 y luego al 74377 (flip-flop D octal) y los muestra en el display,
// con esto usamos 4 pins para informacion y 4 para direccion.
void dsp_putc(BYTE a, BYTE d){
output_b(d);
DES(DSP_1);
DES(DSP_2);
DES(DSP_3);
DES(DSP_4);
enc(DSP_EN);
if(a==0){ACT(DSP_1);}
if(a==1){ACT(DSP_2);}
if(a==2){ACT(DSP_3);}
if(a==3){ACT(DSP_4);}
pulse(DSP_CLK);
apg(DSP_EN);
DES(DSP_1);
DES(DSP_2);
DES(DSP_3);
DES(DSP_4);
}
// iniciamos, ponemos a 0, los 4 display de siete segmentos
void init_dsp(){
dsp_putc(0,0);
dsp_putc(1,0);
dsp_putc(2,0);
dsp_putc(3,0);
}