#include <16F877A.h> #include #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #use fast_io(B) #use fast_io(C) #use fast_io(D) byte const DISPLAY[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; void main() { byte ud = 0, dec = 0, cen = 0, mil = 0; set_tris_b(0xFF); set_tris_c(0x00); set_tris_d(0x00); output_d(0); output_c(0); while(TRUE) { // mientras sea verdadero mil = 0; // inicializa la variable mil while (mil < 6) { // mientras mil sea menor que 10 cen = 0; // inicializa la variable cen while (cen < 10) { // mientras cen sea menor que 10 dec = 0; // inicializa la variable dec while (dec < 6) { // mientras dec sea menor que 10 ud = 0; // inicializa la variable ud while (ud < 10) { // mientras ud sea menor que 10 delay_ms(5); output_low(PIN_C0); // apaga el pin A0 output_low(PIN_C1); // apaga el pin A1 output_low(PIN_C2); // apaga el pin A2 output_low(PIN_C3); output_c(0x08); // selecciona el display de las unidades output_d(DISPLAY[ud % 10]); delay_ms(200); delay_ms(5); output_low(PIN_C0); // apaga el pin A0 output_low(PIN_C1); // apaga el pin A1 output_low(PIN_C2); // apaga el pin A2 output_low(PIN_C3); output_c(0x04); // selecciona el display de las decenas output_d(DISPLAY[dec % 10]); delay_ms(5); output_low(PIN_C0); // apaga el pin A0 output_low(PIN_C1); // apaga el pin A1 output_low(PIN_C2); // apaga el pin A2 output_low(PIN_C3); output_c(0x02); // selecciona el display de las centenas output_d(DISPLAY[cen % 10]); delay_ms(5); output_low(PIN_C0); // apaga el pin A0 output_low(PIN_C1); // apaga el pin A1 output_low(PIN_C2); // apaga el pin A2 output_low(PIN_C3); output_c(0x01); // selecciona el display de los miles output_d(DISPLAY[mil % 10]); delay_ms(5); ud++; // incrementa ud en uno } dec++; // incrementa dec en uno } cen++; // incrementa cen en uno } mil++; // incrementa mil en uno } } }