Cuidado en creer que el CCS limpia los 'flag's' automáticamente....hay casos en los que no
Respeto la experiencia del amigo vszener, me imagino que si dices eso tienes tus razones.
Mi opinión la digo por lo que dice el manual del CCS. Especifico el manual: "C Compiler Reference Manual, Version 4, August 2007"... en su página 101 donde habla de la sentencia #INT_xxxx, después de enumerar todas las interrupciones, al final dice:
"Purpouse: " y en el párrafo dos: "The compiler will generate code to jump to the function when the interrupt is detected.
It will generate code to save and restore the machine state, and will clear the interrupt flag. To prevent the flag from being cleared add NOCLEAR after the #INT_xxxx." (Cursivas y Negrillas mías).
No soy un gran hablante de inglés, pero se entiende que "el compilador generará el código para saltar a la función cuando se detecta la interrupción. Generará código para salvar y restaurar el estado de máquina y limpiará la bandera de interrupción. Para prevenir que la bandera de interrupción sea limpiada desde el inicio, añada un NOCLEAR después de #INT_xxxx". O sea que si uno no quiere que limpie la bandera, para eso hay una sentencia especial; se supone que para todos los demás casos lo hace.
Así que tengo duda con respecto a la opinión de vszener. Por favor cuando tengas tiempo explica con más detalles si te ha ocurrido en algún caso que no haya limpiado la bandera de interrupción.
Saludos!