POLL
btfss flag_timer1 ; Testea si esta en 1 o en 0
goto POLL ; Esta en 0, vuelve y espera el cambio indefinidamente
goto siguiente ; Esta en 1, sigue con el programa
while(flag_timer1) // Espera sin hacer nada el cambio de estado de flag_timer1
{
}
Tu problema es que flag esta activandose cada ves que entra a la interrupcion, es decir cada 10ms
flag_timer1 = 0; // Baja la bandera de interrupcion
while(flag_timer1) // Espera sin hacer nada la interrupcion del timer1
{
}
void main(void)
{
IO_CONFIG(); // Solo la primera vez
TMR1_Initialize(); // Configura el timer1
TMR1_StartTimer(); // Empieza a contar
while(1)
{
flag_timer1 = 0; // Baja la bandera de interrupcion
while(flag_timer1) // Espera sin hacer nada la interrupcion del timer1
{
}
LATCbits.LATC2=~LATCbits.LATC2; // Cuando hay interrupcion cambia el led del PORTC2
}
}
void main(void)
{
IO_CONFIG(); // Solo la primera vez
Configuration_ADC_AN0();
TMR1_Initialize(); // Configura el timer1
TMR1_StartTimer(); // Empieza a contar
while(1)
{
flag_timer1 = 0;
if(flag_timer1 == 1) // Espera sin hacer nada la interrupcion del timer1
{
LATCbits.LATC2=~LATCbits.LATC2; // Cuando hay interrupcion cambia el led del PORTC2
flag_timer1 = 0; // Baja la bandera de interrupcion
}
else
{
_nop(); // Si no hay interrupcion no hace nada
}
}
}
flag_timer1 = 0;
Break point at line 35 in file E:/Programas X C/Pruebas_C/main.c cannot be resolved to a valid program memory address"
Despues de escribir el mensaje anterior he compilado de nuevo (sin tocar nada del programa) y ya no ha salido ningun error, el programa funciona
Voy a estudiar electronica analogica.
Pienso hacerlo todo a base de integrados, nada de programacion.
LATCbits.LATC2=~LATCbits.LATC2;
main.c:31: warning: (373) implicit signed to unsigned conversion
LATCbits.LATC2 ^= 1;