Paso 7: ClearIntFlag() y setIntEnable()
Hasta este punto, has hablado de interrupciones está "activa" y saltar directamente a los ISRs, sin prestar mucha atención a cómo Salto ocurre.
Cuando se activa una interrupción, se voltea un poco muy específico en la memoria, uno asociado a esa interrupción, de 0 a 1. Esto dice el chip que esa interrupción se ha disparado y tendrá su ISR ejecutado. Este bit se llama una interrupción "bandera".
Lo de banderas de interrupción es que puede ser activadas independientemente de si la interrupción está activa o no. De hecho, durante el funcionamiento normal de la tabla, usted puede han sido desencadenando banderas de interrupción sin saberlo. La única razón que esto no ejecuta un ISR es debido a la interrupción no ha sido activado.
Antes de que permite una interrupción, claro siempre cuenta con la bandera. Si nosotros no estaría prácticamente garantizada que el ISR sería ejecutado inmediatamente después de la interrupción fue habilitada. Por eso clearIntFlag() siempre es * antes setIntEnable().
¿Por último, observe cómo clearIntFlag() y setIntEnable() utilizan "_EXTERNAL_2_IRQ" en lugar de "_EXTERNAL_2_VECTOR"? Esto es porque se están haciendo referencia a diferentes lugares de la memoria. "IRQ" está parado para "Solicitud de Int", que es otra manera de referirse a la bandera de interrupción.
* Estoy seguro de que hay algunos flecos escenario donde no desea borrar la bandera antes de habilitar la interrupción, pero no vamos a preocuparse por eso por ahora.