Beruflich Dokumente
Kultur Dokumente
La familia 16f87x dispone de hasta 15 fuentes de interrupcin. La interrupciones pueden ser por software o hardware. Todas las interrupciones provocan un salto a la posicin 04. (vector de interrupcin). Los registros implicados en el manejo de interrupciones son: OPTION_REG, INTCON, PIE1, PIE2, PIR1 y PIR2. La interrupcin externa est implementada en el pin RB0. La interrupcin externa se habilita activando el bit INTE y el GIE del registro INTCON. Se puede configurar para que se genere por flanco de subida o por flanco de bajada.
Habilitacin de la interrupcin
Para habilitar la interrupcin externa hay que poner a uno los bits GIE e INTE del registro INTCON En CCS usamos las instrucciones: enable_interrupts(INT_EXT); enable_interrupts(GLOBAL);
Conexin hardware
La interrupcin externa est implementada en el pin RB0. Para usarla hay que colocar el puente JP13 en posicin INT. Al usar la interrupcin externa no podemos utilizar el led en RB0. Para generar una interrupcin utilizar la clema 3 puenteando 1-2.
Ejemplo de programa
Disear un programa que presente un segmento girando en la parte baja del display de la placa de perifricos a intervalos de 300ms. Configurar la interrupcin externa, generada por flanco de bajada, para que cuando se produzca parpadee la parte baja del display tres veces a intervalos de 200ms. Cuando termine la interrupcin el segmento debe seguir girando en la misma posicin donde se encontraba.
x3
interrupcin
Luego hay que crear la carpeta para nuestro proyecto y dar un nombre al archivo con extensin .pjt
10
11
12
Resumen
Para realizar un programa con la interrupcin externa habilitada: 1.- Antes de la funcin main();
#use fast_io(b) #int_EXT void EXT_isr(void) { // programar aqu la funcin de interrupcin // }
3.- Programar la funcin main() segn corresponda. 4.- Cada vez que se genere un flanco de subida o bajada en RB0 se ejecutar la funcin de interrupcin EXT_isr(void) y luego el programa continuar con el programa principal.
(c) Domingo Llorente 2010 13