ejercicios_06_interrupciones.pdf

Post on 03-Apr-2018

221 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

  • 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

top related