Professional Documents
Culture Documents
ANLISIS Y ALGORITMO DE LA SOLUCIN: La solucin al problema implica el manejo por parte del programa principal de los seis displays mediante la subrutina ASEG, que ha sido acondicionada para que encienda los puntos decimales como separacin de los campos y de la subrutina SCAN que muestra el reloj digital en los displays. El programa tambin, debe cambiar de valor que muestra en el display cada segundo, cuando est corriendo el reloj digital y mantener sin cambiar el valor cuando est detenido. En cuanto a las funciones que las teclas realizan, mediante las rutinas de servicio a las interrupciones externas, responden a los siguientes algoritmos: Tecla de ARRANCAR / DETENER (A/D) que activa la interrupcin externa INT2 mediante la transicin positiva, realiza las siguientes tareas: Conmutar el valor lgico de los bits INT0 e INT1 de la Mscara de Habilitacin de las Interrupciones Externas (EIMSK), para activar o desactivar a estas otras interrupciones externas, con el fin de cambiar el estado de operacin el reloj digital, entre corriendo y detenido.
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 2
Poner ceros lgicos en los bits INTF0 e INTF1 del Registro de Banderas de las Interrupciones Externas (EIFR), para evitar la ejecucin de las rutinas de las interrupciones por las transiciones que se pueden producir mediante las teclas cuando el reloj digital est corriendo.
Tecla de HORAS (HH) que activa la interrupcin externa INT0 mediante la transicin negativa, para realizar la siguiente tarea: Incrementar el contador de Horas y publicar en los displays. Tecla de MINUTOS (MM) que activa la interrupcin externa INT1 mediante la transicin negativa, para realizar la siguiente tarea: Incrementar el contador de Minutos y publicar en los displays. Para completar el algoritmo, el programa principal debe hacer las siguientes tareas una sola vez al inicio: Inicializar el Puntero del Stack, establecer como salidas los prticos que manejan los displays y habilitar las resistencias de pull-up en los prticos donde estn las entradas de las interrupciones y a las que se conectan las teclas. Programar en el Registro A de Control de las Interrupciones Externas (EICRA) para que la interrupcin INT2 responda a las transiciones positivas, mientras que las interrupciones INT0 e INT1 respondan a las transiciones negativas. Habilitar la interrupcin INT2 mediante la Mscara de Habilitacin de las Interrupciones Externas (EIMSK). Borrar las banderas del Registro de Banderas de las Interrupciones Externas (EIFR) que se activan al momento del encendido del equipo. Y habilitar el sistema de respuesta a las interrupciones mediante la Bandera I del SREG. Inicializar los contadores con los que arranca el reloj digital. El resto del programa la incluye el incremento de los contadores que forman el reloj, cada segundo; las transformaciones de binario a BCD de los contadores de horas, minutos, segundos y luego a cdigos de 7 segmentos para ser publicados en los displays. Finalmente el programa entra en el lazo que da la temporizacin de un segundo o deteniendo los incrementos, de acuerdo al estado del bit INT1 del Registro EIMSK, que cuando es 0 el reloj digital corre y cuando es 1 est detenido. CODIFICACIN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIN
.NOLIST .INCLUDE "m164pdef.inc" .LIST ; DEFINICIN DE ETIQUETAS PARA .DEF AUX1 = R16 ; .DEF AUX2 = R17 ; .DEF AUX3 = R18 ; .DEF HORAS = R19 ; .DEF MINUT = R20 ; .DEF SEGUN = R21 ; .DEF AUXI1 = R23 ; .DEF AUXI2 = R24 ; ; SEGMENTO DE CDIGO o MEMORIA .CSEG JMP PROGP
LOS REGISTROS REGISTRO AUXILIAR1 REGISTRO AUXILIAR2 REGISTRO AUXILIAR3 REGISTRO PARA LAS HORAS REGISTRO PARA LAS MINUTOS REGISTRO PARA LOS SEGUNDOS REGISTRO AUXILIAR 1 INTERRUPCIONES REGISTRO AUXILIAR 2 INTERRUPCIONES FLASH
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 3
.ORG $02 JMP .ORG $04 JMP .ORG $06 RUTINT1 RUTINT0
; RUTINA DE LA INTERRUPCIN EXTERNA 2 JMP RUTINT2 ; INICIALIZACIN DEL PUNTERO DEL STACK Y DE LOS PRTICOS PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 LDI AUX1,0B00000100 OUT PORTB,AUX1 ; PULL-UP INT2 = PB2 LDI AUX1,0B00001100 OUT PORTD,AUX1 ; PULL-UP INT0/1 = PD2/3 ; PROGRAMACIN DE LAS INTERRUPCIONES EXTERNAS LDI AUX1,0B00101111 STS EICRA,AUX1 ; INT2 T. NEGAT. INT1/0 T. POS. LDI AUX1,0B00000100 OUT EIMSK,AUX1 ; INT2 HABILITADA LDI AUX1,0B00000111 OUT EIFR,AUX1 ; BORRAR LAS BANDERAS ; VALORES INICIALES DE HH:MM:SS LDI HORAS,23 LDI MINUT,59 LDI SEGUN,49 ; HABILITACIN GLOBAL DE INTERRUPCIONES SEI ; INCREMENTO DE LOS CONTADORES DEL RELOJ RELOJ: INC SEGUN CPI SEGUN,60 BRNE RELOJ1 CLR SEGUN INC MINUT CPI MINUT,60 BRNE RELOJ1 CLR MINUT INC HORAS CPI HORAS,24 BRNE RELOJ1 CLR HORAS ; TRANSFORMACIN A BCD DE LOS CONTADORES RELOJ1: LDI XL,LOW(DIGIT) LDI XH,HIGH(DIGIT) MOV AUX2,HORAS RCALL BINBCD MOV AUX2,MINUT RCALL BINBCD MOV AUX2,SEGUN RCALL BINBCD ; TRANSFORMACIN A 7 SEGMENTOS RCALL ASEG ; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL LDI R22,54 RELOJ2: RCALL SCAN IN AUX1,EIMSK SBRC AUX1,1 ; SALTA SI EST CORRIENDO RJMP RELOJ1 ; REPITE SI EST DETENIDO DEC R22 BRNE RELOJ2 RJMP RELOJ ; YA PAS UN SEGUNDO
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 4
; TRANSFORMACIN DE BINARIO A BCD Y ALMACENAMIENTO BINBCD: CLR AUX1 BINBCD1:SUBI AUX2,10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3,10 ADD AUX2,AUX3 ST X+,AUX1 ST X+,AUX2 RET ; ARRANCAR - DETENER EL RELOJ RUTINT2: IN AUXI1,EIMSK LDI AUXI2,0B00000011 EOR AUXI1,AUXI2 ; COMPLEMENTAR LOS 2 BITS OUT EIMSK,AUXI1 ; CAMBIAR HABILITACIN OUT EIFR,AUXI2 ; BORRA INTF0 y INTF1 FINR2: RETI ; IGUALAR MINUTOS Y PUBLICAR EN LOS DISPLAYS RUTINT1: INC MINUT CPI MINUT,60 BRNE RUT11 CLR MINUT RUT11: RETI ; IGUALAR HORAS Y PUBLICAR EN LOS DISPLAYS RUTINT0: INC HORAS CPI HORAS,24 BRNE RUT01 CLR HORAS RUT01: RETI ; .INCLUDE "SUBCC.ASM" ; .EXIT ; FIN DEL MODULO FUENTE
MAPA DE MEMORIA QUE UTILIZA EL PROGRAMA: aunque explcitamente en el cdigo del programa principal no se han definido las localidades de la SRAM que se utilizan, dentro de la TRANSFORMACIN A BCD DE LOS CONTADORES y en de las subrutinas ASEG y SCAN se utilizan las siguientes localidades de memoria. ETIQUETA DIGIT SRAM DESCRIPCIN
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 5
CODIFICACIN DE LAS SUBRUTINAS EN EL ARCHIVO SECUNDARIO: Tanto la definicin de las localidades del mapa de memoria, como la configuracin de los Prticos que manejan los displays, se han incluido en el cdigo de las subrutinas que se encuentra en el archivo "SUBCC.ASM". Tambin se ha modificado a la subrutina ASEG para encender los puntos decimales como separador de las horas con los minutos y de los minutos con los segundos.
; SEGMENTO DE DATOS o MEMORIA SRAM .DSEG DIGIT: .BYTE 6 ; DGITOS QUE SE MUESTRAN COD7S: .BYTE 6 ; CDIGOS DE LOS DGITOS ; SEGMENTO DE PROGRAMA o MEMORIA FLASH .CSEG ; SUBRUTINA DE CONVERSIN A 7 SEGMENTOS .EQU NDIG = 6 ; NMERO DE DISPLAYS ; ASEG: LDI AUX2,NDIG ; N TRANSFORMACIONES LDI YL,LOW(DIGIT) ; INICIO DE LOS DGITOS LDI YH,HIGH(DIGIT) ASEG1: LDI ZL,LOW(TABLA<<1) ; INICIO DE CDIGOS LDI ZH,HIGH(TABLA<<1) LD AUX1,Y+ ; TOMAR EL DGITO ADD ZL,AUX1 LDI AUX1,0 ADC ZH,AUX1 LPM AUX1,Z ; TOMAR EL CDIGO cpi aux2,5 brne aseg2 rjmp aseg3 aseg2: cpi aux2,3 brne aseg4 aseg3: ori aux1,0x80 ; encender el punto decimal aseg4: STD Y+5,AUX1 ; ALMACENAR CDIGO DEC AUX2 BRNE ASEG1 ; REPETIR N VECES RET ; TABLA DE CDIGOS DE 7 SEGMENTOS PARA CTODO COMN (pgfedcba) TABLA: .DB 0b00111111,0b00000110 ;CDIGOS 0 y 1 .DB 0b01011011,0b01001111 ;CDIGOS 2 y 3 .DB 0b01100110,0b01101101 ;CDIGOS 4 y 5 .DB 0b01111101,0b00000111 ;CDIGOS 6 y 7 .DB 0b01111111,0b01101111 ;CDIGOS 8 y 9 ; SUBRUTINA PARA BARRIDO DE DISPLAYS DE CTODO COMN .EQU SEGME = PORTA ; PRTICO DE LOS SEGMENTOS .EQU DISPL = PORTC ; PRTICO DE LOS CTODOS SCAN: LDI AUX1,0xFF OUT SEGME-1,AUX1 ; SALIDA PARA LOS SEGMENTOS LDI AUX1,0xFC OUT DISPL-1,AUX1 ; SALIDA PARA LOS CTODOS COMUNES LDI XL,LOW(COD7S) ; INICIO DE CDIGOS LDI XH,HIGH(COD7S) LDI AUX2,0B00000100 ; INICIO DE DISPLAYS LDI AUX3,NDIG ; N DISPLAYS SCAN1: LD AUX1,X+ ; TOMA EL CDIGO OUT SEGME,AUX1 ; A LOS SEGMENTOS OUT DISPL,AUX2 ; ACTIVA UN DISPLAY ;
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 6
DLY: DLY1:
LDI CLR DEC BRNE DEC BRNE CLC ROL LDI OUT DEC BRNE RET
AUX1,4 R15 R15 DLY1 AUX1 DLY1 AUX2 AUX1,0x00 SEGME,AUX1 AUX3 SCAN1
ANLISIS PARA INCREMENTAR LOS CONTADORES DEL RELOJ DIGITAL, CADA SEGUNDO Analizando la siguiente secuencia del programa principal, se concluye que: cuando el reloj digital est corriendo (INT1 = 0), se repiten 54 veces la llamada a la subrutina SCAN, antes de incrementar los contadores del reloj.
; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL LDI R22,54 RELOJ2: RCALL SCAN IN AUX1,EIMSK SBRC AUX1,1 ; SALTA SI EST CORRIENDO RJMP RELOJ1 ; REPITE SI EST DETENIDO DEC R22 BRNE RELOJ2 RJMP RELOJ ; YA PAS UN SEGUNDO
La demora para barrer los seis displays por parte de la subrutina SCAN, considerando que el microcontrolador trabaja con un oscilador de 1 MHz., se obtiene multiplicando por 6 a la demora que ocurre para cada uno de los displays y que corresponde a la siguiente secuencia.
DLY: DLY1: LDI CLR DEC BRNE DEC BRNE AUX1,4 R15 R15 DLY1 AUX1 DLY1 ; ; ; ; 4 VECES EL LAZO EXTERIOR 256 VECES EL LAZO INTERIOR 1 CICLO DE MQUINA 2 CICLOS DE MQUINA
Demora para un display = 4 * 256 * 3 CM = 3072 CM = 3072 seg Demora de la subrutina SCAN = 6 * 3072 seg = 18432 seg 54 llamadas a la subrutina SCAN = 54 * 18432 seg = 995328 seg Este valor obtenido para la demora de 1 segundo es un valor aproximado; porque, no se toman en cuenta las dems instrucciones que se encuentran involucradas en las subrutinas y en el programa principal. Una precisin mayor con este algoritmo no se puede lograr, si no se introducen el uso de los TIMERS. COMPROBACIN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON PANTALLAS OBTENIDAS DE LA SIMULACIN DEL PROGRAMA MEDIANTE EL PROTEUS
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 7
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 8
MODIFICACIONES QUE REEMPLAZAN A LAS TRES INTERRUPCIONES EXTERNAS CON LA INTERRUPCIN POR CAMBIO DE ESTADO EN EL PRTICO B Cambio en el Vector de Interrupcin, antes se utilizaban los tres vectores de las interrupciones externas, ahora solo se utiliza nicamente el vector por cambio de estado en el Prtico B. Habilitacin de las resistencias de pull-up del Prtico B donde se conectan las 4 teclas, en lugar de las que se encuentran a la entrada de las interrupciones externas. Configuracin de los Registros pertenecientes a la Interrupcin por Cambios en el Prtico B (PCICR, PCIFR y PCMSK1) en reemplazo de los Registros de las Interrupciones Externas (EICRA, EIFR y EIMSK). Para determinar si el reloj digital est corriendo o detenido, se chequea el bit1 del Registro PCMSK1 en lugar del bit INT1 del Registro EIMSK. Reemplazo de las tres Rutinas de las Interrupciones Externas por una sola, la de la Rutina por Cambio de Estado en el Prtico B. Donde se determina que tecla produce el cambio de estado para luego ejecutar la tarea asignada.
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 9
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 10
RCALL BINBCD ; TRANSFORMACIN A 7 SEGMENTOS RCALL ASEG ; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL LDI R22,54 RELOJ2: RCALL SCAN LDS AUX1,PCMSK1 SBRC AUX1,1 ; SALTA SI EST CORRIENDO RJMP RELOJ1 ; REPITE SI EST DETENIDO DEC R22 BRNE RELOJ2 RJMP RELOJ ; YA PAS UN SEGUNDO ; TRANSFORMACIN DE BINARIO A BCD Y ALMACENAMIENTO BINBCD: CLR AUX1 BINBCD1:SUBI AUX2,10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3,10 ADD AUX2,AUX3 ST X+,AUX1 ST X+,AUX2 RET ; POR CAMBIO EN LAS ENTRADAS DEL PRTICO B RUTPC1: IN AUXI1,PINB ANDI AUXI1,0x0F ; CUANDO ES CERO EN PB0 DETENER EL RELOJ CPI AUXI1,0x0E BRNE CHECK1 LDI AUXI1,0x0E STS PCMSK1,AUXI1 RJMP FINR ; CUANDO ES CERO EN PB1 ARRANCAR EL RELOJ CHECK1: CPI AUXI1,0x0D BRNE CHECK2 LDI AUXI1,0x01 STS PCMSK1,AUXI1 RJMP FINR ; CUANDO ES CERO EN PB2 IGUALAR HORAS CHECK2: CPI AUXI1,0x0B BRNE CHECK3 INC HORAS CPI HORAS,24 BRNE FINR CLR HORAS RJMP FINR ; CUANDO ES CERO EN PB3 IGUALAR MINUTOS CHECK3: CPI AUXI1,0x07 BRNE FINR INC MINUT CPI MINUT,60 BRNE FINR CLR MINUT FINR: RETI ; .INCLUDE "SUBCC.ASM" ; .EXIT ; FIN DEL MODULO FUENTE
Las subrutinas contenidas en el archivo secundario se mantienen sin modificaciones, con respecto al ejerci anterior.
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 11
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 12
EJERCICIO DE INTERRUPCIONES POR CAMBIO EN EL ESTADO DEL PRTICO CON DISPLAYS DE CRISTAL LQUIDO (LCD)
ENUNCIADO DEL EJERCICIO: Adecuar el programa del reloj digital para mostrarlo en un LCD de 80 caracteres, el control se realiza mediante 4 teclas conectadas a los bits menos significativos del Prtico B. ANLISIS DE LA SOLUCIN: La principal ventaja en la solucin de este ejercicio es la liberacin del programa principal de la necesidad de realizar el barrido del display, con lo cual el clculo para dejar transcurrir un segundo ya no dependen de las demoras utilizadas en el barrido, sino nicamente del reloj con el que trabaja el microcontrolador; por eso, se utiliza la subrutina UNSEG que se encuentra codificada en el archivo secundario. Tambin se aprovecha de las 4 lneas del display (80 caracteres), para mostrar el estado en que se encuentra el reloj digital y facilitar la operacin; por lo que se utilizan las subrutinas que existen para este propsito, contenidas en el archivo secundario. Adems, como no existe la necesidad de ingresar un dato para obtener el resultado se apaga el cursor mediante la subrutina OFFCUR, a fin de mejorar la presentacin del reloj digital.
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 13
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 14
; TRANSFORMACIN A BCD Y PUBLICACIN DE LOS CONTADORES RELOJ1: LDI AUX1,26 RCALL POSCUR MOV AUX2,HORAS RCALL BINBCD RCALL WRTBYT LDI AUX1,':' RCALL WRTCHR MOV AUX2,MINUT RCALL BINBCD RCALL WRTBYT LDI AUX1,':' RCALL WRTCHR MOV AUX2,SEGUN RCALL BINBCD RCALL WRTBYT ; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL RELOJ2: RCALL UNSEG LDS AUX1,PCMSK1 SBRC AUX1,1 ; SALTA SI EST CORRIENDO RJMP RELOJ2 ; REPITE SI EST DETENIDO RJMP RELOJ ; YA PAS UN SEGUNDO ; "01234567890123456789" TEXT1: .DB "RELOJ DIGITAL DE 24H" .DB " HH:MM:SS " TEXT2: .DB "RELOJ ESTA CORRIENDO" .DB "NO SE PUEDE IGUALAR." TEXT3: .DB "RELOJ SE HA DETENIDO" .DB "SI SE PUEDE IGUALAR." ; TRANSFORMACIN DE BINARIO A BCD BINBCD: CLR AUX1 BINBCD1:SUBI AUX2,10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3,10 ADD AUX2,AUX3 SWAP AUX1 ADD AUX1,AUX2 RET ; POR CAMBIO EN LAS ENTRADAS DEL PRTICO B RUTPC1: IN AUXI1,PINB ANDI AUXI1,0x0F ; CUANDO ES CERO EN PB0 DETENER EL RELOJ CPI AUXI1,0x0E BRNE CHECK1 LDI AUXI1,0x0E STS PCMSK1,AUXI1 PUSH AUX1 PUSH AUX2 PUSH AUX3 IN AUXI1,SREG PUSH AUXI1 LDI ZL,LOW(TEXT3<<1) LDI ZH,HIGH(TEXT3<<1) LDI AUX1,40 RCALL POSCUR RCALL WRTLIN LDI AUX1,60 RCALL POSCUR RCALL WRTLIN
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 15
POP AUXI1 OUT SREG,AUXI1 POP AUX3 POP AUX2 POP AUX1 RJMP FINR ; CUANDO ES CERO EN PB1 ARRANCAR EL RELOJ CHECK1: CPI AUXI1,0x0D BRNE CHECK2 LDI AUXI1,0x01 STS PCMSK1,AUXI1 PUSH AUX1 PUSH AUX2 PUSH AUX3 IN AUXI1,SREG PUSH AUXI1 LDI ZL,LOW(TEXT2<<1) LDI ZH,HIGH(TEXT2<<1) LDI AUX1,40 RCALL POSCUR RCALL WRTLIN LDI AUX1,60 RCALL POSCUR RCALL WRTLIN POP AUXI1 OUT SREG,AUXI1 POP AUX3 POP AUX2 POP AUX1 RJMP FINR ; CUANDO ES CERO EN PB2 IGUALAR HORAS CHECK2: CPI AUXI1,0x0B BRNE CHECK3 INC HORAS CPI HORAS,24 BRNE SHOWHH CLR HORAS SHOWHH: PUSH AUX1 PUSH AUX2 PUSH AUX3 IN AUXI1,SREG PUSH AUXI1 LDI AUX1,26 RCALL POSCUR MOV AUX2,HORAS RCALL BINBCD RCALL WRTBYT POP AUXI1 OUT SREG,AUXI1 POP AUX3 POP AUX2 POP AUX1 RJMP FINR ; CUANDO ES CERO EN PB3 IGUALAR MINUTOS CHECK3: CPI AUXI1,0x07 BRNE FINR INC MINUT CPI MINUT,60 BRNE SHOWMM CLR MINUT SHOWMM: PUSH AUX1
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 16
PUSH PUSH IN PUSH LDI RCALL MOV RCALL RCALL POP OUT POP POP POP RETI
AUX2 AUX3 AUXI1,SREG AUXI1 AUX1,29 POSCUR AUX2,MINUT BINBCD WRTBYT AUXI1 SREG,AUXI1 AUX3 AUX2 AUX1
Las subrutinas contenidas en el archivo secundario se mantienen sin modificaciones, con respecto a las utilizadas en el ltimo ejercicio de subrutinas con LCD conectado al microcontrolador mediante un bus de 4 bits. COMPROBACIN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON DISPLAY DE CRISTAL LQUIDO
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 17
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para el control de los programas Pgina 18