Estoy tratando de crear un temporizador de cuenta regresiva utilizando el PIC18F46K20 y mostrar la hora en el OLED. He configurado TIMER0 para crear un retraso de 1 segundo (T0CON = 0b00000001), por lo que la variable intCLKsecs debería aumentar cada segundo.
Timer0_Init(); //Initialise timer
T0CONbits.TMR0ON = 1; // start timer
while(INTCONbits.TMR0IF = 1) {
/ * Compruebe los bordes del reloj e incremente los segundos de cuenta en uno en cada flanco descendente. El temporizador está configurado para emitir pulsos que están separados aproximadamente 1 segundo. * / INTCONbits.TMR0IF = 0; // Borrar la bandera
korf_intCLKsecs++; //Should increase by one every second on every falling edge
korf_InitSecs = 1800; //Initialised time for a single korfball half
net_timeLeft = net_InitSecs-net_intCLKsecs; //Time remaining in the half
displayTime(net_timeLeft);
}
Paso el [timeLeft] a una función que lo formatea y lo muestra como un reloj, es decir, a las 8:56. Aquí está la función de reproducción de tiempo.
int displayTime(int currentTime)
{
int secs;
int mins;
char Buffer[60];
secs = currentTime % 60;
mins = (currentTime / 60) % 60;
sprintf(Buffer, "\n\t\t %d : %d Timer0_Init(); //Initialise timer
T0CONbits.TMR0ON = 1; // start timer
while(INTCONbits.TMR0IF = 1) {
",mins,secs);
oled_puts_1x(Buffer);
oled_refresh();
oled_clear();
}
Me disculpo si he cometido algún error en la forma en que estoy publicando, soy muy nuevo en los foros y en la programación de PICKit. ¿Alguien puede ayudarme a averiguar cómo obtener un valor correcto en mi variable intCLKsecs contando los pulsos CLK en cada flanco descendente? ¿Qué escribo en MPLAB IDE para asegurarme de que [intCLKsecs] aumenta en cada flanco descendente?