Download - EJERCICIOS_06_INTERRUPCIONES.pdf
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
1/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 1
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
EJERCICIO DE UTILIZACIN DEINTERRUPCIONES EXTERNAS
ENUNCIADO DEL EJERCICIO:
Programa para un reloj digital que se muestra en seis displays de ctodo comn,controlado mediante interrupciones externas producidas por tres teclas, que tienen lassiguientes funciones:
La tecla A/D conectada a la Interrupcin Externa 2 arranca y detiene elfuncionamiento del reloj digital.
La tecla HH conectada a la Interrupcin Externa 0 incrementa el contador dehoras para igualar, solo cuando est detenido el reloj digital.
La tecla MM conectada a la Interrupcin Externa 1 incrementa el contador deminutos para igualar, solo cuando est detenido el reloj digital.
ANLISIS Y ALGORITMO DE LA SOLUCIN:
La solucin al problema implica el manejo por parte del programa principal de los seisdisplays mediante la subrutina ASEG, que ha sido acondicionada para que enciendalos puntos decimales como separacin de los campos y de la subrutina SCAN quemuestra el reloj digital en los displays. El programa tambin, debe cambiar de valor quemuestra en el display cada segundo, cuando est corriendo el reloj digital y mantener sincambiar el valor cuando est detenido.
En cuanto a las funciones que las teclas realizan, mediante las rutinas de servicio a lasinterrupciones externas, responden a los siguientes algoritmos:
Tecla de ARRANCAR / DETENER (A/D) que activa la interrupcin externaINT2 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 odesactivar a estas otras interrupciones externas, con el fin de cambiar el
estado de operacin el reloj digital, entre corriendo y detenido.
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
2/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 2
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
Poner ceros lgicos en los bits INTF0 e INTF1 del Registro de Banderas delas Interrupciones Externas (EIFR), para evitar la ejecucin de las rutinas delas interrupciones por las transiciones que se pueden producir mediante lasteclas cuando el reloj digital est corriendo.
Tecla de HORAS (HH) que activa la interrupcin externa INT0 mediante latransicin 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 latransicin 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 unasola vez al inicio:
Inicializar el Puntero del Stack, establecer como salidas los prticos quemanejan los displays y habilitar las resistencias de pull-up en los prticos dondeestn 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 quelas interrupciones INT0 e INT1 respondan a las transiciones negativas. Habilitarla interrupcin INT2 mediante la Mscara de Habilitacin de las InterrupcionesExternas (EIMSK). Borrar las banderas del Registro de Banderas de lasInterrupciones Externas (EIFR) que se activan al momento del encendido delequipo. Y habilitar el sistema de respuesta a las interrupciones mediante laBandera 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 losdisplays. Finalmente el programa entra en el lazo que da la temporizacin de unsegundo o deteniendo los incrementos, de acuerdo al estado del bit INT1 del RegistroEIMSK, que cuando es 0 el reloj digital corre y cuando es 1 est detenido.
CODIFICACIN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DEINTERRUPCIN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST; DEFINICIN DE ETIQUETAS PARA LOS REGISTROS.DEF AUX1 = R16 ; REGISTRO AUXILIAR1.DEF AUX2 = R17 ; REGISTRO AUXILIAR2.DEF AUX3 = R18 ; REGISTRO AUXILIAR3.DEF HORAS = R19 ; REGISTRO PARA LAS HORAS.DEF MINUT = R20 ; REGISTRO PARA LAS MINUTOS.DEF SEGUN = R21 ; REGISTRO PARA LOS SEGUNDOS.DEF AUXI1 = R23 ; REGISTRO AUXILIAR 1 INTERRUPCIONES.DEF AUXI2 = R24 ; REGISTRO AUXILIAR 2 INTERRUPCIONES; SEGMENTO DE CDIGO o MEMORIA FLASH
.CSEGJMP PROGP
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
3/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 3
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
.ORG $02 ; RUTINA DE LA INTERRUPCIN EXTERNA 0JMP RUTINT0
.ORG $04 ; RUTINA DE LA INTERRUPCIN EXTERNA 1JMP RUTINT1
.ORG $06 ; RUTINA DE LA INTERRUPCIN EXTERNA 2JMP RUTINT2
; INICIALIZACIN DEL PUNTERO DEL STACK Y DE LOS PRTICOSPROGP: LDI AUX1,LOW(RAMEND)OUT SPL,AUX1LDI AUX1,HIGH(RAMEND)OUT SPH,AUX1LDI AUX1,0B00000100OUT PORTB,AUX1 ; PULL-UP INT2 = PB2LDI AUX1,0B00001100OUT PORTD,AUX1 ; PULL-UP INT0/1 = PD2/3
; PROGRAMACIN DE LAS INTERRUPCIONES EXTERNASLDI AUX1,0B00101111STS EICRA,AUX1 ; INT2 T. NEGAT. INT1/0 T. POS.LDI AUX1,0B00000100OUT EIMSK,AUX1 ; INT2 HABILITADALDI AUX1,0B00000111OUT EIFR,AUX1 ; BORRAR LAS BANDERAS
; VALORES INICIALES DE HH:MM:SSLDI HORAS,23LDI MINUT,59LDI SEGUN,49
; HABILITACIN GLOBAL DE INTERRUPCIONESSEI
; INCREMENTO DE LOS CONTADORES DEL RELOJRELOJ: INC SEGUN
CPI SEGUN,60BRNE RELOJ1CLR SEGUNINC MINUTCPI MINUT,60BRNE RELOJ1CLR MINUTINC HORASCPI HORAS,24BRNE RELOJ1CLR HORAS
; TRANSFORMACIN A BCD DE LOS CONTADORESRELOJ1: LDI XL,LOW(DIGIT)
LDI XH,HIGH(DIGIT)MOV AUX2,HORASRCALL BINBCD
MOV AUX2,MINUTRCALL BINBCDMOV AUX2,SEGUNRCALL BINBCD
; TRANSFORMACIN A 7 SEGMENTOSRCALL ASEG
; MOSTRAR EN EL DISPLAY EL RELOJ DIGITALLDI R22,54
RELOJ2: RCALL SCANIN AUX1,EIMSKSBRC AUX1,1 ; SALTA SI EST CORRIENDORJMP RELOJ1 ; REPITE SI EST DETENIDODEC R22
BRNE RELOJ2RJMP RELOJ ; YA PAS UN SEGUNDO
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
4/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 4
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
; TRANSFORMACIN DE BINARIO A BCD Y ALMACENAMIENTOBINBCD: CLR AUX1BINBCD1:SUBI AUX2,10
BRCS BINBCD2INC AUX1RJMP BINBCD1
BINBCD2:LDI AUX3,10ADD AUX2,AUX3ST X+,AUX1ST X+,AUX2RET
; ARRANCAR - DETENER EL RELOJRUTINT2: IN AUXI1,EIMSK
LDI AUXI2,0B00000011EOR AUXI1,AUXI2 ; COMPLEMENTAR LOS 2 BITSOUT EIMSK,AUXI1 ; CAMBIAR HABILITACINOUT EIFR,AUXI2 ; BORRA INTF0 y INTF1
FINR2: RETI; IGUALAR MINUTOS Y PUBLICAR EN LOS DISPLAYSRUTINT1: INC MINUT
CPI MINUT,60BRNE RUT11CLR MINUT
RUT11: RETI; IGUALAR HORAS Y PUBLICAR EN LOS DISPLAYSRUTINT0: INC HORAS
CPI HORAS,24BRNE RUT01CLR HORAS
RUT01: RETI;.INCLUDE "SUBCC.ASM";.EXIT ; FIN DEL MODULO FUENTE
MAPA DE MEMORIA QUE UTILIZA EL PROGRAMA: aunque explcitamenteen el cdigo del programa principal no se han definido las localidades de la SRAM quese utilizan, dentro de la TRANSFORMACIN A BCD DE LOS CONTADORES yen de las subrutinas ASEG y SCAN se utilizan las siguientes localidades de memoria.
ETIQUETA SRAM DESCRIPCINDIGIT
Dgitos del Reloj HH:MM:SS
COD7S
Cdigos de 7 segmentos que sirven paramostrar en los displays
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
5/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 5
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
CODIFICACIN DE LAS SUBRUTINAS EN EL ARCHIVO SECUNDARIO:
Tanto la definicin de las localidades del mapa de memoria, como la configuracin delos Prticos que manejan los displays, se han incluido en el cdigo de las subrutinas quese 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 minutosy de los minutos con los segundos.
; SEGMENTO DE DATOS o MEMORIA SRAM.DSEGDIGIT: .BYTE 6 ; DGITOS QUE SE MUESTRANCOD7S: .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 TRANSFORMACIONESLDI YL,LOW(DIGIT) ; INICIO DE LOS DGITOSLDI YH,HIGH(DIGIT)
ASEG1: LDI ZL,LOW(TABLA
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
6/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 6
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
DLY: LDI AUX1,4 ; PARA DAR TIEMPOCLR R15
DLY1: DEC R15BRNE DLY1DEC AUX1BRNE DLY1
; CLCROL AUX2 ; SIGUIENTE DISPLAYLDI AUX1,0x00 ; APAGAR SEGMENTOSOUT SEGME,AUX1DEC AUX3BRNE SCAN1 ; REPETIR N VECESRET
ANLISIS PARA INCREMENTAR LOS CONTADORES DEL RELOJDIGITAL, CADA SEGUNDO
Analizando la siguiente secuencia del programa principal, se concluye que: cuando elreloj digital est corriendo (INT1 = 0), se repiten 54 veces la llamada a la subrutinaSCAN, antes de incrementar los contadores del reloj.
; MOSTRAR EN EL DISPLAY EL RELOJ DIGITALLDI R22,54
RELOJ2: RCALL SCANIN AUX1,EIMSKSBRC AUX1,1 ; SALTA SI EST CORRIENDORJMP RELOJ1 ; REPITE SI EST DETENIDODEC R22BRNE RELOJ2RJMP RELOJ ; YA PAS UN SEGUNDO
La demora para barrer los seis displays por parte de la subrutina SCAN, considerandoque el microcontrolador trabaja con un oscilador de 1 MHz., se obtiene multiplicandopor 6 a la demora que ocurre para cada uno de los displays y que corresponde a lasiguiente secuencia.
DLY: LDI AUX1,4 ; 4 VECES EL LAZO EXTERIORCLR R15 ; 256 VECES EL LAZO INTERIOR
DLY1: DEC R15 ; 1 CICLO DE MQUINABRNE DLY1 ; 2 CICLOS DE MQUINADEC AUX1BRNE DLY1
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 setoman en cuenta las dems instrucciones que se encuentran involucradas en lassubrutinas y en el programa principal. Una precisin mayor con este algoritmo no sepuede lograr, si no se introducen el uso de los TIMERS.
COMPROBACIN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CONPANTALLAS OBTENIDAS DE LA SIMULACIN DEL PROGRAMAMEDIANTE EL PROTEUS
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
7/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 7
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
Reloj detenido por transicin negativa en INT2
Para igualar las horas con transiciones positivas en INT0
Para igualar los minutos con transiciones positivas en INT1
Reloj funcionando por segunda transicin negativa en INT2
Primer pulsopara detener
Segundo
pulso para
arrancar
Varios pulsos
para cambiarlas horas
Varios pulsos
para cambiarlos minutos
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
8/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 8
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
EJERCICIO DE UTILIZACIN DEINTERRUPCIONES POR CAMBIO DE ESTADO EN
LOS PRTICOS
ENUNCIADO DEL EJERCICIO:
Modificar al programa anterior, correspondiente al reloj digital que se muestra en seisdisplays de ctodo comn, para que sea controlado mediante interrupciones producidaspor cuatro teclas conectadas al Prtico B, que tienen las siguientes funciones:
Tecla STOP conectada a PB0 detiene el funcionamiento del reloj digital. Tecla START conectada a PB1 arranca el funcionamiento del reloj digital. Tecla HH conectada a PB2 incrementa el contador de horas para igualar, solo
cuando est detenido el reloj digital. Tecla MM conectada a PB3 incrementa el contador de minutos para igualar, solo
cuando est detenido el reloj digital.
MODIFICACIONES QUE REEMPLAZAN A LAS TRES INTERRUPCIONESEXTERNAS CON LA INTERRUPCIN POR CAMBIO DE ESTADO EN ELPRTICO B
Cambio en el Vector de Interrupcin, antes se utilizaban los tres vectores de lasinterrupciones externas, ahora solo se utiliza nicamente el vector por cambio deestado en el Prtico B.
Habilitacin de las resistencias de pull-up del Prtico B donde se conectan las 4teclas, en lugar de las que se encuentran a la entrada de las interrupcionesexternas.
Configuracin de los Registros pertenecientes a la Interrupcin por Cambios enel Prtico B (PCICR, PCIFR y PCMSK1) en reemplazo de los Registros de lasInterrupciones Externas (EICRA, EIFR y EIMSK).
Para determinar si el reloj digital est corriendo o detenido, se chequea el bit1del Registro PCMSK1 en lugar del bit INT1 del Registro EIMSK.
Reemplazo de las tres Rutinas de las Interrupciones Externas por una sola, la dela Rutina por Cambio de Estado en el Prtico B. Donde se determina que teclaproduce el cambio de estado para luego ejecutar la tarea asignada.
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
9/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 9
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
CODIFICACIN DEL PROGRAMA PRINCIPAL Y DE LA RUTINA DEINTERRUPCIN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIN DE ETIQUETAS PARA LOS REGISTROS.DEF AUX1 = R16 ; REGISTRO AUXILIAR1.DEF AUX2 = R17 ; REGISTRO AUXILIAR2.DEF AUX3 = R18 ; REGISTRO AUXILIAR3.DEF HORAS = R19 ; REGISTRO PARA LAS HORAS.DEF MINUT = R20 ; REGISTRO PARA LAS MINUTOS.DEF SEGUN = R21 ; REGISTRO PARA LOS SEGUNDOS.DEF AUXI1 = R23 ; REGISTRO AUXILIAR 1 INTERRUPCIONES.DEF AUXI2 = R24 ; REGISTRO AUXILIAR 2 INTERRUPCIONES; SEGMENTO DE CDIGO o MEMORIA FLASH.CSEG
JMP PROGP.ORG $0A ; RUTINA DE LA INTERRUPCIN POR CAMBIO EN PB
JMP RUTPC1; INICIALIZACIN DEL PUNTERO DEL STACK Y DE LOS PRTICOSPROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1LDI AUX1,HIGH(RAMEND)OUT SPH,AUX1LDI AUX1,0B00001111OUT PORTB,AUX1 ; PULL-UP PB3..0
; PROGRAMACIN DE LAS INTERRUPCIONES POR CAMBIOS EN PBLDI AUX1,0B00000010STS PCICR,AUX1 ; PCINT1 HABILITADALDI AUX1,0B00000010STS PCIFR,AUX1 ; BORRAR LA BANDERA
LDI AUX1,0B00000001STS PCMSK1,AUX1 ; MASCARA PARA PCINT8 - PB0; VALORES INICIALES DE HH:MM:SS
LDI HORAS,11LDI MINUT,59LDI SEGUN,39
; HABILITACIN GLOBAL DE INTERRUPCIONESSEI
; INCREMENTO DE LOS CONTADORES DEL RELOJRELOJ: INC SEGUN
CPI SEGUN,60BRNE RELOJ1CLR SEGUN
INC MINUTCPI MINUT,60BRNE RELOJ1CLR MINUTINC HORASCPI HORAS,24BRNE RELOJ1CLR HORAS
; TRANSFORMACIN A BCD DE LOS CONTADORESRELOJ1: LDI XL,LOW(DIGIT)
LDI XH,HIGH(DIGIT)MOV AUX2,HORASRCALL BINBCDMOV AUX2,MINUTRCALL BINBCDMOV AUX2,SEGUN
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
10/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 10
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
RCALL BINBCD; TRANSFORMACIN A 7 SEGMENTOS
RCALL ASEG; MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL
LDI R22,54RELOJ2: RCALL SCAN
LDS AUX1,PCMSK1SBRC AUX1,1 ; SALTA SI EST CORRIENDORJMP RELOJ1 ; REPITE SI EST DETENIDODEC R22BRNE RELOJ2RJMP RELOJ ; YA PAS UN SEGUNDO
; TRANSFORMACIN DE BINARIO A BCD Y ALMACENAMIENTOBINBCD: CLR AUX1BINBCD1:SUBI AUX2,10
BRCS BINBCD2INC AUX1RJMP BINBCD1
BINBCD2:LDI AUX3,10ADD AUX2,AUX3ST X+,AUX1ST X+,AUX2RET
; POR CAMBIO EN LAS ENTRADAS DEL PRTICO BRUTPC1: IN AUXI1,PINB
ANDI AUXI1,0x0F; CUANDO ES CERO EN PB0 DETENER EL RELOJ
CPI AUXI1,0x0EBRNE CHECK1LDI AUXI1,0x0ESTS PCMSK1,AUXI1RJMP FINR
; CUANDO ES CERO EN PB1 ARRANCAR EL RELOJCHECK1: CPI AUXI1,0x0D
BRNE CHECK2LDI AUXI1,0x01STS PCMSK1,AUXI1RJMP FINR
; CUANDO ES CERO EN PB2 IGUALAR HORASCHECK2: CPI AUXI1,0x0B
BRNE CHECK3INC HORASCPI HORAS,24BRNE FINRCLR HORASRJMP FINR
; CUANDO ES CERO EN PB3 IGUALAR MINUTOSCHECK3: CPI AUXI1,0x07
BRNE FINRINC MINUTCPI MINUT,60BRNE FINRCLR 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.
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
11/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 11
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
Reloj detenido por cambio de estado en PB0
Para igualar las horas con varios cambios de estados en PB2
Para igualar los minutos con varios cambios de estados en PB3
Reloj funcionando por cambio de estado en PB1
Pulso paradetener
Pulso para
arrancar
Varios pulsos
para cambiar
las horas
Varios pulsos
para cambiarlos minutos
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
12/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 12
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
EJERCICIO DE INTERRUPCIONES POR CAMBIOEN 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, elcontrol se realiza mediante 4 teclas conectadas a los bits menos significativos delPrtico B.
ANLISIS DE LA SOLUCIN:
La principal ventaja en la solucin de este ejercicio es la liberacin del programaprincipal de la necesidad de realizar el barrido del display, con lo cual el clculo paradejar 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 lasubrutina UNSEG que se encuentra codificada en el archivo secundario.
Tambin se aprovecha de las 4 lneas del display (80 caracteres), para mostrar el estadoen que se encuentra el reloj digital y facilitar la operacin; por lo que se utilizan lassubrutinas que existen para este propsito, contenidas en el archivo secundario.Adems, como no existe la necesidad de ingresar un dato para obtener el resultado seapaga el cursor mediante la subrutina OFFCUR, a fin de mejorar la presentacin delreloj digital.
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
13/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 13
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
CODIFICACIN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DEINTERRUPCIN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIN DE ETIQUETAS PARA LOS REGISTROS.DEF AUX1 = R16 ; REGISTRO AUXILIAR1.DEF AUX2 = R17 ; REGISTRO AUXILIAR2.DEF AUX3 = R18 ; REGISTRO AUXILIAR3.DEF HORAS = R19 ; REGISTRO PARA LAS HORAS.DEF MINUT = R20 ; REGISTRO PARA LAS MINUTOS.DEF SEGUN = R21 ; REGISTRO PARA LOS SEGUNDOS.DEF AUXI1 = R23 ; REGISTRO AUXILIAR 1 INTERRUPCIONES.DEF AUXI2 = R24 ; REGISTRO AUXILIAR 2 INTERRUPCIONES; SEGMENTO DE CDIGO o MEMORIA FLASH.CSEG
JMP PROGP.ORG $0A ; RUTINA DE LA INTERRUPCIN POR CAMBIO EN PB
JMP RUTPC1; INICIALIZACIN DEL PUNTERO DEL STACK Y DE LOS PRTICOSPROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1LDI AUX1,HIGH(RAMEND)OUT SPH,AUX1LDI AUX1,0B00001111OUT PORTB,AUX1 ; PULL-UP PB3..0
; PROGRAMACIN DE LAS INTERRUPCIONES POR CAMBIOS EN PBLDI AUX1,0B00000010STS PCICR,AUX1 ; PCINT1 HABILITADALDI AUX1,0B00000010STS PCIFR,AUX1 ; BORRAR LA BANDERA
LDI AUX1,0B00000001STS PCMSK1,AUX1 ; MASCARA PARA PCINT8 - PB0OUT PORTD,AUX1
; INICIALIZACIN DEL LCDRCALL LCDRST
; PANTALLA DE INFORMACINLDI ZL,LOW(TEXT1
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
14/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 14
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
; TRANSFORMACIN A BCD Y PUBLICACIN DE LOS CONTADORESRELOJ1: LDI AUX1,26
RCALL POSCURMOV AUX2,HORASRCALL BINBCDRCALL WRTBYT
LDI AUX1,':'RCALL WRTCHRMOV AUX2,MINUTRCALL BINBCDRCALL WRTBYTLDI AUX1,':'RCALL WRTCHRMOV AUX2,SEGUNRCALL BINBCDRCALL WRTBYT
; MOSTRAR EN EL DISPLAY EL RELOJ DIGITALRELOJ2: RCALL UNSEG
LDS AUX1,PCMSK1SBRC AUX1,1 ; SALTA SI EST CORRIENDORJMP RELOJ2 ; REPITE SI EST DETENIDORJMP 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 BCDBINBCD: CLR AUX1BINBCD1:SUBI AUX2,10
BRCS BINBCD2INC AUX1RJMP BINBCD1
BINBCD2:LDI AUX3,10ADD AUX2,AUX3SWAP AUX1ADD AUX1,AUX2RET
; POR CAMBIO EN LAS ENTRADAS DEL PRTICO BRUTPC1: IN AUXI1,PINB
ANDI AUXI1,0x0F; CUANDO ES CERO EN PB0 DETENER EL RELOJ
CPI AUXI1,0x0EBRNE CHECK1
LDI AUXI1,0x0ESTS PCMSK1,AUXI1PUSH AUX1PUSH AUX2PUSH AUX3IN AUXI1,SREGPUSH AUXI1LDI ZL,LOW(TEXT3
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
15/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 15
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
POP AUXI1OUT SREG,AUXI1POP AUX3POP AUX2POP AUX1RJMP FINR
; CUANDO ES CERO EN PB1 ARRANCAR EL RELOJCHECK1: CPI AUXI1,0x0DBRNE CHECK2LDI AUXI1,0x01STS PCMSK1,AUXI1PUSH AUX1PUSH AUX2PUSH AUX3IN AUXI1,SREGPUSH AUXI1LDI ZL,LOW(TEXT2
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
16/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 16
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
PUSH AUX2PUSH AUX3IN AUXI1,SREGPUSH AUXI1LDI AUX1,29RCALL POSCUR
MOV AUX2,MINUTRCALL BINBCDRCALL WRTBYTPOP AUXI1OUT SREG,AUXI1POP AUX3POP AUX2POP AUX1
FINR: RETI;.INCLUDE "SUB4B80CH.ASM";.EXIT ; FIN DEL MODULO FUENTE
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 almicrocontrolador mediante un bus de 4 bits.
COMPROBACIN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CONDISPLAY DE CRISTAL LQUIDO
Al activar la tecla STOP el reloj se detiene
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
17/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 17
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesde Informacin
Mediante la tecla HH se igualan las horas
Con la tecla MM se igualan los minutos
-
7/28/2019 EJERCICIOS_06_INTERRUPCIONES.pdf
18/18
SISTEMAS MICROPROCESADOS: Uso de interrupciones por seales externas para elcontrol de los programas
Pgina 18
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redesd f i
Al activar la tecla START el reloj entra nuevamente en funcionamiento