Hola de nuevo.
Despues de un par meses sin poder estudiar el xc8 ahora me he puesto de nuevo y me falla hasta lo mas basico

Sobre el tema del polling, para hacerlo en ensamblador utilizaba esta secuencia:
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
Para hacerlo por xc8, he leido que se puede hacer utilizando un while de esta manera(corregirme si me equivoco):
while(flag_timer1) // Espera sin hacer nada el cambio de estado de flag_timer1
{
}
El caso es que, al poner esta secuencia en un programa (os lo adjunto) no tiene los resultados esperados.
Segun el programa deseado
1) El timer1 cuenta un segundo (100 interrupciones x 10ms cada una = 1sg)
2) Pone a 1 un bit (bandera) llamado flag_timer1
3) Durante 1 segundo, hasta el cambio de bandera, el programa principal espera sin hacer nada
4) Al cambiar flag_timer1, el programa principal cambia el estado de un led en el PORTC2
5) Vuelve a hacer 1~4 hasta el infinito
Si embargo el resultado es que el led de PORTC2 se apaga y se enciende sin ningun significado (por lo menos para mi

)
y no es problema del timer, eso esa comprobado.
Resumiendo, me gustaria saber si esta es la forma correcta de hacer polling en xc8?
Si no es asi, como se puede hacer polling en XC8?
Se que es una cuestion muy muy basica pero me tiene loco casi-todo el dia

Saludos
main.c(1.81 kB - descargado 201 veces)