Hola, estoy haciendo un reloj binario con un microcontrolador PIC. El reloj expresará la hora en código binario a continuacion inserto el diagrama en ISIS
y el código que se me viene a la mente es este:
Bien pues, aparentemente todo está bien, sin embargo cuando llega a la hora 3 es decir 0011 en binario solo se pone la salida del puerto b como 0010. ¿Cómo puedo lograr que se mantenga en alto una salida? Es decir que si yo activé el pin B0 un ciclo atrás, que en el siguiente ciclo permanesca encendido y se encienda el pin B1 solamente sin afectar el B0.
Tambien se me habia ocurrido imprimir el valor de la variable horas justo como lo hice con "minutos" pero el problema es que debía mantenerlo encendido y en el compilador CSS que es el que uso, no encontré alguna funcion que me permita imprimir algo(por asi decirlo) y mantenerlo hasta que decida imprimir otra cosa.
De antemano muchas gracias
y el código que se me viene a la mente es este:
Código:
#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=20000000)
void main()
{
int horas, minutos, segundero;
set_tris_b(0); // Solo para limpiar las salidas
set_tris_c(0);
output_b(0x00);
output_c(0x00);
while(true){
for(horas=1;horas<=12;horas++) { // empieza el ciclo para contar las horas transcurridas
for(minutos=0;minutos<60;minutos++){ // empieza el ciclo para los minutos
output_c(minutos);
delay_ms(1000); //un retardo de un segundo
}
switch(horas) { // se evalua la variable horas y dependiendo de su valor sera la salida
case 1: output_high(pin_b0);
break;
case 2:output_high(pin_b1);
break;
case 3:output_high(pin_b0); // esta parte es la del problema
output_high(pin_b1);
break;
case 4:output_high(pin_b2);
break;
case 5:output_high(pin_b0);
output_high(pin_b2);
break;
case 6:output_high(pin_b1);
output_high(pin_b2);
break;
case 7:output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b2);
break;
case 8:output_high(pin_b4);
break;
case 9:output_high(pin_b0);
output_high(pin_b4);
break;
case 10:output_high(pin_b1);
output_high(pin_b4);
break;
case 11:output_high(pin_b0);
output_high(pin_b1);
output_high(pin_b4);
break;
case 12:output_high(pin_b3);
output_high(pin_b4);
break;
}
}
}
}
Tambien se me habia ocurrido imprimir el valor de la variable horas justo como lo hice con "minutos" pero el problema es que debía mantenerlo encendido y en el compilador CSS que es el que uso, no encontré alguna funcion que me permita imprimir algo(por asi decirlo) y mantenerlo hasta que decida imprimir otra cosa.
De antemano muchas gracias