P. 1
EJERCICIOS_06_INTERRUPCIONES.pdf

EJERCICIOS_06_INTERRUPCIONES.pdf

|Views: 13|Likes:
Publicado porAlexis Aldás

More info:

Published by: Alexis Aldás on Apr 10, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/02/2014

pdf

text

original

SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 1

EJERCICIO DE UTILIZACIÓN DE INTERRUPCIONES EXTERNAS
ENUNCIADO DEL EJERCICIO: Programa para un reloj digital que se muestra en seis displays de cátodo común, controlado mediante interrupciones externas producidas por tres teclas, que tienen las siguientes funciones: La tecla A/D conectada a la Interrupción Externa 2 arranca y detiene el funcionamiento del reloj digital. La tecla HH conectada a la Interrupción Externa 0 incrementa el contador de horas para igualar, solo cuando está detenido el reloj digital. La tecla MM conectada a la Interrupción Externa 1 incrementa el contador de minutos para igualar, solo cuando está detenido el reloj digital.

ANÁLISIS Y ALGORITMO DE LA SOLUCIÓN: La solución 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 separación de los campos y de la subrutina “SCAN” que muestra el reloj digital en los displays. El programa también, 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 interrupción externa INT2 mediante la transición positiva, realiza las siguientes tareas: • Conmutar el valor lógico de los bits INT0 e INT1 de la Máscara de Habilitación de las Interrupciones Externas (EIMSK), para activar o desactivar a estas otras interrupciones externas, con el fin de cambiar el estado de operación el reloj digital, entre corriendo y detenido.

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

El resto del programa la incluye el incremento de los contadores que forman el reloj. . de acuerdo al estado del bit INT1 del Registro EIMSK.DEF AUX1 = R16 . Borrar las banderas del Registro de Banderas de las Interrupciones Externas (EIFR) que se activan al momento del encendido del equipo. . cada segundo. Tecla de HORAS (HH) que activa la interrupción externa INT0 mediante la transición negativa. que cuando es 0 el reloj digital corre y cuando es 1 está detenido.DEF SEGUN = R21 . .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 Ing. el programa principal debe hacer las siguientes tareas una sola vez al inicio: Inicializar el Puntero del Stack. para realizar la siguiente tarea: • Incrementar el contador de Minutos y publicar en los displays. segundos y luego a códigos de 7 segmentos para ser publicados en los displays. Inicializar los contadores con los que arranca el reloj digital. Velarde – Departamento de Electrónica. . Programar en el Registro A de Control de las Interrupciones Externas (EICRA) para que la interrupción INT2 responda a las transiciones positivas. para evitar la ejecución de las rutinas de las interrupciones por las transiciones que se pueden producir mediante las teclas cuando el reloj digital está corriendo. DEFINICIÓN DE ETIQUETAS PARA . mientras que las interrupciones INT0 e INT1 respondan a las transiciones negativas. las transformaciones de binario a BCD de los contadores de horas. .inc" . . Habilitar la interrupción INT2 mediante la Máscara de Habilitación de las Interrupciones Externas (EIMSK).DEF HORAS = R19 . Y habilitar el sistema de respuesta a las interrupciones mediante la Bandera I del SREG.DEF AUX3 = R18 .LIST . Jaime E.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 2 • Poner ceros lógicos en los bits INTF0 e INTF1 del Registro de Banderas de las Interrupciones Externas (EIFR).DEF AUXI2 = R24 . . Finalmente el programa entra en el lazo que da la temporización de un segundo o deteniendo los incrementos.DEF AUX2 = R17 .INCLUDE "m164pdef. Tecla de MINUTOS (MM) que activa la interrupción externa INT1 mediante la transición negativa.DEF AUXI1 = R23 . SEGMENTO DE CÓDIGO o MEMORIA . Telecomunicaciones y Redes de Información . establecer como salidas los pórticos que manejan los displays y habilitar las resistencias de pull-up en los pórticos donde están las entradas de las interrupciones y a las que se conectan las teclas. CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN . Para completar el algoritmo. .DEF MINUT = R20 .NOLIST . para realizar la siguiente tarea: • Incrementar el contador de Horas y publicar en los displays. minutos.

49 .0B00000100 OUT PORTB.0B00000100 OUT EIMSK. INCREMENTO DE LOS CONTADORES DEL RELOJ RELOJ: INC SEGUN CPI SEGUN.60 BRNE RELOJ1 CLR MINUT INC HORAS CPI HORAS.24 BRNE RELOJ1 CLR HORAS . HABILITACIÓN GLOBAL DE INTERRUPCIONES SEI . SALTA SI ESTÁ CORRIENDO RJMP RELOJ1 .LOW(RAMEND) OUT SPL.LOW(DIGIT) LDI XH.AUX1 . Jaime E. RUTINA DE LA INTERRUPCIÓN EXTERNA 1 .54 RELOJ2: RCALL SCAN IN AUX1. Telecomunicaciones y Redes de Información .HORAS RCALL BINBCD MOV AUX2.0B00000111 OUT EIFR. REPITE SI ESTÁ DETENIDO DEC R22 BRNE RELOJ2 RJMP RELOJ .60 BRNE RELOJ1 CLR SEGUN INC MINUT CPI MINUT. LDI AUX1. INT1/0 T. PROGRAMACIÓN DE LAS INTERRUPCIONES EXTERNAS LDI AUX1. INT2 HABILITADA LDI AUX1.AUX1 LDI AUX1.HIGH(RAMEND) OUT SPH.ORG $02 JMP .AUX1 .MINUT RCALL BINBCD MOV AUX2.AUX1 .AUX1 LDI AUX1.0B00001100 OUT PORTD. RUTINA DE LA INTERRUPCIÓN EXTERNA 0 .AUX1 . Velarde – Departamento de Electrónica.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 3 . INT2 T.EIMSK SBRC AUX1.HIGH(DIGIT) MOV AUX2.59 LDI SEGUN. PULL-UP INT0/1 = PD2/3 . MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL LDI R22.0B00101111 STS EICRA. VALORES INICIALES DE HH:MM:SS LDI HORAS.SEGUN RCALL BINBCD . INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS PROGP: LDI AUX1. YA PASÓ UN SEGUNDO Ing. BORRAR LAS BANDERAS .1 . TRANSFORMACIÓN A 7 SEGMENTOS RCALL ASEG .23 LDI MINUT.ORG $06 RUTINT1 RUTINT0 . PULL-UP INT2 = PB2 LDI AUX1.ORG $04 JMP .AUX1 . NEGAT. RUTINA DE LA INTERRUPCIÓN EXTERNA 2 JMP RUTINT2 . TRANSFORMACIÓN A BCD DE LOS CONTADORES RELOJ1: LDI XL. POS.

SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 4 . IGUALAR HORAS Y PUBLICAR EN LOS DISPLAYS RUTINT0: INC HORAS CPI HORAS. Velarde – Departamento de Electrónica. BORRA INTF0 y INTF1 FINR2: RETI . .AUX2 RET .10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3. ETIQUETA DIGIT SRAM DESCRIPCIÓN Dígitos del Reloj HH:MM:SS COD7S Códigos de 7 segmentos que sirven para mostrar en los displays Ing.10 ADD AUX2. IGUALAR MINUTOS Y PUBLICAR EN LOS DISPLAYS RUTINT1: INC MINUT CPI MINUT.24 BRNE RUT01 CLR HORAS RUT01: RETI .EIMSK LDI AUXI2. Telecomunicaciones y Redes de Información . CAMBIAR HABILITACIÓN OUT EIFR.AUX1 ST X+.DETENER EL RELOJ RUTINT2: IN AUXI1.EXIT .60 BRNE RUT11 CLR MINUT RUT11: RETI . TRANSFORMACIÓN DE BINARIO A BCD Y ALMACENAMIENTO BINBCD: CLR AUX1 BINBCD1:SUBI AUX2. dentro de la “TRANSFORMACIÓN A BCD DE LOS CONTADORES” y en de las subrutinas ASEG y SCAN se utilizan las siguientes localidades de memoria. ARRANCAR .0B00000011 EOR AUXI1. Jaime E. COMPLEMENTAR LOS 2 BITS OUT EIMSK.AUXI1 .AUXI2 .AUX3 ST X+. FIN DEL MODULO FUENTE MAPA DE MEMORIA QUE UTILIZA EL PROGRAMA: aunque explícitamente en el código del programa principal no se han definido las localidades de la SRAM que se utilizan.INCLUDE "SUBCC.ASM" .AUXI2 . .

0b01001111 .AUX1 . ALMACENAR CÓDIGO DEC AUX2 BRNE ASEG1 .CÓDIGOS 0 y 1 . INICIO DE LOS DÍGITOS LDI YH.0b00000111 .DB 0b01111111. Velarde – Departamento de Electrónica. ASEG: LDI AUX2.CÓDIGOS 4 y 5 .0b01101111 .AUX1 .ASM".5 brne aseg2 rjmp aseg3 aseg2: cpi aux2.HIGH(COD7S) LDI AUX2.0x80 .LOW(DIGIT) .BYTE 6 . INICIO DE CÓDIGOS LDI XH.EQU SEGME = PORTA .NDIG .CÓDIGOS 6 y 7 . .LOW(COD7S) . se han incluido en el código de las subrutinas que se encuentra en el archivo "SUBCC.LOW(TABLA<<1) . SEGMENTO DE PROGRAMA o MEMORIA FLASH .AUX1 .X+ .CSEG . DÍGITOS QUE SE MUESTRAN COD7S: .HIGH(DIGIT) ASEG1: LDI ZL. TOMAR EL CÓDIGO cpi aux2. Jaime E.Y+ .AUX1 LDI AUX1. CÓDIGOS DE LOS DÍGITOS . SALIDA PARA LOS CÁTODOS COMUNES LDI XL.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 5 CODIFICACIÓN DE LAS SUBRUTINAS EN EL ARCHIVO SECUNDARIO: Tanto la definición de las localidades del mapa de memoria. INICIO DE DISPLAYS LDI AUX3.AUX1 LPM AUX1.CÓDIGOS 8 y 9 . N TRANSFORMACIONES LDI YL. N DISPLAYS SCAN1: LD AUX1.0 ADC ZH. REPETIR N VECES RET . SUBRUTINA PARA BARRIDO DE DISPLAYS DE CÁTODO COMÚN . NÚMERO DE DISPLAYS . como la configuración de los Pórticos que manejan los displays. SEGMENTO DE DATOS o MEMORIA SRAM . Ing.0xFC OUT DISPL-1. TOMA EL CÓDIGO OUT SEGME.0xFF OUT SEGME-1.Z . SALIDA PARA LOS SEGMENTOS LDI AUX1. TOMAR EL DÍGITO ADD ZL. SUBRUTINA DE CONVERSIÓN A 7 SEGMENTOS .AUX1 .DB 0b00111111.0b00000110 .AUX2 . También 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.NDIG . PÓRTICO DE LOS CÁTODOS SCAN: LDI AUX1. encender el punto decimal aseg4: STD Y+5.0B00000100 . PÓRTICO DE LOS SEGMENTOS .HIGH(TABLA<<1) LD AUX1. Telecomunicaciones y Redes de Información . A LOS SEGMENTOS OUT DISPL.CÓDIGOS 2 y 3 . INICIO DE CÓDIGOS LDI ZH.0b01101101 .DSEG DIGIT: .EQU NDIG = 6 .DB 0b01100110.3 brne aseg4 aseg3: ori aux1. ACTIVA UN DISPLAY .EQU DISPL = PORTC .DB 0b01111101. TABLA DE CÓDIGOS DE 7 SEGMENTOS PARA CÁTODO COMÚN (pgfedcba) TABLA: .DB 0b01011011.BYTE 6 .

. no se toman en cuenta las demás instrucciones que se encuentran involucradas en las subrutinas y en el programa principal. Telecomunicaciones y Redes de Información .. PARA DAR TIEMPO . antes de incrementar los contadores del reloj. APAGAR SEGMENTOS . SALTA SI ESTÁ CORRIENDO RJMP RELOJ1 . si no se introducen el uso de los TIMERS.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 6 DLY: DLY1: LDI CLR DEC BRNE DEC BRNE CLC ROL LDI OUT DEC BRNE RET AUX1. se concluye que: cuando el reloj digital está corriendo (INT1 = 0).4 R15 R15 DLY1 AUX1 DLY1 AUX2 AUX1.0x00 SEGME. COMPROBACIÓN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON PANTALLAS OBTENIDAS DE LA SIMULACIÓN DEL PROGRAMA MEDIANTE EL PROTEUS Ing. SIGUIENTE DISPLAY . Velarde – Departamento de Electrónica. REPETIR N VECES ANÁLISIS PARA INCREMENTAR LOS CONTADORES DEL RELOJ DIGITAL. . . MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL LDI R22. se repiten 54 veces la llamada a la subrutina SCAN. REPITE SI ESTÁ DETENIDO DEC R22 BRNE RELOJ2 RJMP RELOJ .EIMSK SBRC AUX1. porque. Jaime E. YA PASÓ UN SEGUNDO La demora para barrer los seis displays por parte de la subrutina SCAN.4 R15 R15 DLY1 AUX1 DLY1 . CADA SEGUNDO Analizando la siguiente secuencia del programa principal.AUX1 AUX3 SCAN1 .54 RELOJ2: RCALL SCAN IN AUX1. DLY: DLY1: LDI CLR DEC BRNE DEC BRNE AUX1.1 . considerando que el microcontrolador trabaja con un oscilador de 1 MHz. 4 VECES EL LAZO EXTERIOR 256 VECES EL LAZO INTERIOR 1 CICLO DE MÁQUINA 2 CICLOS DE MÁQUINA 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. . Una precisión mayor con este algoritmo no se puede lograr. se obtiene multiplicando por 6 a la demora que ocurre para cada uno de los displays y que corresponde a la siguiente secuencia. .

Telecomunicaciones y Redes de Información . Velarde – Departamento de Electrónica.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 7 Primer pulso para detener Reloj detenido por transición negativa en INT2 Varios pulsos para cambiar las horas Para igualar las horas con transiciones positivas en INT0 Varios pulsos para cambiar los minutos Para igualar los minutos con transiciones positivas en INT1 Segundo pulso para arrancar Reloj funcionando por segunda transición negativa en INT2 Ing. Jaime E.

Reemplazo de las tres Rutinas de las Interrupciones Externas por una sola. Donde se determina que tecla produce el cambio de estado para luego ejecutar la tarea asignada. ahora solo se utiliza únicamente el vector por cambio de estado en el Pórtico B. solo cuando está detenido el reloj digital. solo cuando está detenido el reloj digital. antes se utilizaban los tres vectores de las interrupciones externas. Habilitación de las resistencias de pull-up del Pórtico B donde se conectan las 4 teclas. MODIFICACIONES QUE REEMPLAZAN A LAS TRES INTERRUPCIONES EXTERNAS CON LA INTERRUPCIÓN POR CAMBIO DE ESTADO EN EL PÓRTICO B Cambio en el Vector de Interrupción. Tecla HH conectada a PB2 incrementa el contador de horas para igualar. PCIFR y PCMSK1) en reemplazo de los Registros de las Interrupciones Externas (EICRA. Ing. Configuración de los Registros pertenecientes a la Interrupción por Cambios en el Pórtico B (PCICR. 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. para que sea controlado mediante interrupciones producidas por cuatro teclas conectadas al Pórtico B. Para determinar si el reloj digital está corriendo o detenido. EIFR y EIMSK). Velarde – Departamento de Electrónica.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 8 EJERCICIO DE UTILIZACIÓN DE INTERRUPCIONES POR CAMBIO DE ESTADO EN LOS PÓRTICOS ENUNCIADO DEL EJERCICIO: Modificar al programa anterior. Tecla MM conectada a PB3 incrementa el contador de minutos para igualar. se chequea el bit1 del Registro PCMSK1 en lugar del bit INT1 del Registro EIMSK. correspondiente al reloj digital que se muestra en seis displays de cátodo común. Telecomunicaciones y Redes de Información . la de la Rutina por Cambio de Estado en el Pórtico B. en lugar de las que se encuentran a la entrada de las interrupciones externas. Jaime E.

Telecomunicaciones y Redes de Información .39 .DEF AUX2 = R17 . BORRAR LA BANDERA LDI AUX1. PROGRAMACIÓN DE LAS INTERRUPCIONES POR CAMBIOS EN PB LDI AUX1. PCINT1 HABILITADA LDI AUX1. PULL-UP PB3. REGISTRO AUXILIAR1 . REGISTRO PARA LAS MINUTOS .LOW(DIGIT) LDI XH. REGISTRO PARA LAS HORAS .DEF HORAS = R19 . Velarde – Departamento de Electrónica.MINUT RCALL BINBCD MOV AUX2. HABILITACIÓN GLOBAL DE INTERRUPCIONES SEI . SEGMENTO DE CÓDIGO o MEMORIA FLASH .AUX1 LDI AUX1.DEF AUXI1 = R23 .LOW(RAMEND) OUT SPL.0B00001111 OUT PORTB.INCLUDE "m164pdef.0B00000010 STS PCIFR. TRANSFORMACIÓN A BCD DE LOS CONTADORES RELOJ1: LDI XL.DEF AUX3 = R18 .AUX1 .AUX1 .0 . INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS PROGP: LDI AUX1.inc" .24 BRNE RELOJ1 CLR HORAS . Jaime E.DEF MINUT = R20 .0B00000010 STS PCICR. REGISTRO AUXILIAR 2 INTERRUPCIONES .DEF AUX1 = R16 .59 LDI SEGUN.11 LDI MINUT. MASCARA PARA PCINT8 .60 BRNE RELOJ1 CLR SEGUN INC MINUT CPI MINUT. REGISTRO AUXILIAR2 .CSEG JMP PROGP .HIGH(DIGIT) MOV AUX2.0B00000001 STS PCMSK1.DEF SEGUN = R21 . REGISTRO AUXILIAR 1 INTERRUPCIONES .NOLIST .DEF AUXI2 = R24 .HIGH(RAMEND) OUT SPH. REGISTRO PARA LOS SEGUNDOS .HORAS RCALL BINBCD MOV AUX2.LIST .ORG $0A .AUX1 .AUX1 LDI AUX1. VALORES INICIALES DE HH:MM:SS LDI HORAS.SEGUN Ing.AUX1 .SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 9 CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LA RUTINA DE INTERRUPCIÓN . DEFINICIÓN DE ETIQUETAS PARA LOS REGISTROS . INCREMENTO DE LOS CONTADORES DEL RELOJ RELOJ: INC SEGUN CPI SEGUN. REGISTRO AUXILIAR3 .PB0 .60 BRNE RELOJ1 CLR MINUT INC HORAS CPI HORAS.. RUTINA DE LA INTERRUPCIÓN POR CAMBIO EN PB JMP RUTPC1 .

REPITE SI ESTÁ DETENIDO DEC R22 BRNE RELOJ2 RJMP RELOJ .PINB ANDI AUXI1. Ing.0x0E BRNE CHECK1 LDI AUXI1. . CUANDO ES CERO EN PB3 IGUALAR MINUTOS CHECK3: CPI AUXI1. MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL LDI R22. Velarde – Departamento de Electrónica.0x0E STS PCMSK1. CUANDO ES CERO EN PB0 DETENER EL RELOJ CPI AUXI1. TRANSFORMACIÓN DE BINARIO A BCD Y ALMACENAMIENTO BINBCD: CLR AUX1 BINBCD1:SUBI AUX2. Jaime E.0x0D BRNE CHECK2 LDI AUXI1.ASM" .SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 10 RCALL BINBCD .60 BRNE FINR CLR MINUT FINR: RETI . SALTA SI ESTÁ CORRIENDO RJMP RELOJ1 .0x0F .AUX1 ST X+. Telecomunicaciones y Redes de Información .0x01 STS PCMSK1. CUANDO ES CERO EN PB1 ARRANCAR EL RELOJ CHECK1: CPI AUXI1.54 RELOJ2: RCALL SCAN LDS AUX1. con respecto al ejerció anterior.EXIT .AUX3 ST X+. CUANDO ES CERO EN PB2 IGUALAR HORAS CHECK2: CPI AUXI1.0x07 BRNE FINR INC MINUT CPI MINUT.10 ADD AUX2.0x0B BRNE CHECK3 INC HORAS CPI HORAS.AUXI1 RJMP FINR .24 BRNE FINR CLR HORAS RJMP FINR .AUX2 RET . . POR CAMBIO EN LAS ENTRADAS DEL PÓRTICO B RUTPC1: IN AUXI1. TRANSFORMACIÓN A 7 SEGMENTOS RCALL ASEG .PCMSK1 SBRC AUX1.AUXI1 RJMP FINR .1 .INCLUDE "SUBCC.10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3. YA PASÓ UN SEGUNDO . FIN DEL MODULO FUENTE Las subrutinas contenidas en el archivo secundario se mantienen sin modificaciones.

Jaime E. Velarde – Departamento de Electrónica. Telecomunicaciones y Redes de Información .SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 11 Pulso para detener Reloj detenido por cambio de estado en PB0 Varios pulsos para cambiar las horas Para igualar las horas con varios cambios de estados en PB2 Varios pulsos para cambiar los minutos Para igualar los minutos con varios cambios de estados en PB3 Pulso para arrancar Reloj funcionando por cambio de estado en PB1 Ing.

como no existe la necesidad de ingresar un dato para obtener el resultado se apaga el cursor mediante la subrutina OFFCUR. por lo que se utilizan las subrutinas que existen para este propósito. con lo cual el cálculo para dejar transcurrir un segundo ya no dependen de las demoras utilizadas en el barrido. Jaime E. a fin de mejorar la presentación del reloj digital. para mostrar el estado en que se encuentra el reloj digital y facilitar la operación. Ing. contenidas en el archivo secundario. sino únicamente del reloj con el que trabaja el microcontrolador. el control se realiza mediante 4 teclas conectadas a los bits menos significativos del Pórtico B. Velarde – Departamento de Electrónica. Telecomunicaciones y Redes de Información . se utiliza la subrutina UNSEG que se encuentra codificada en el archivo secundario. ANÁLISIS DE LA SOLUCIÓN: La principal ventaja en la solución de este ejercicio es la liberación del programa principal de la necesidad de realizar el barrido del display. por eso.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 12 EJERCICIO DE INTERRUPCIONES POR CAMBIO EN EL ESTADO DEL PÓRTICO CON DISPLAYS DE CRISTAL LÍQUIDO (LCD) ENUNCIADO DEL EJERCICIO: Adecuar el programa del reloj digital para mostrarlo en un LCD de 80 caracteres. También se aprovecha de las 4 líneas del display (80 caracteres). Además.

REGISTRO AUXILIAR1 .inc" .DEF SEGUN = R21 .59 LDI SEGUN.0 . PCINT1 HABILITADA LDI AUX1. PULL-UP PB3. SEGMENTO DE CÓDIGO o MEMORIA FLASH .AUX1 .CSEG JMP PROGP .0B00000010 STS PCICR.LOW(RAMEND) OUT SPL.PB0 OUT PORTD.24 BRNE RELOJ1 CLR HORAS Ing.AUX1 .23 LDI MINUT. INICIALIZACIÓN DEL LCD RCALL LCDRST .AUX1 . REGISTRO AUXILIAR 2 INTERRUPCIONES .ORG $0A . RUTINA DE LA INTERRUPCIÓN POR CAMBIO EN PB JMP RUTPC1 .INCLUDE "m164pdef.HIGH(TEXT1<<1) RCALL WRTMSJ RCALL OFFCUR .SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 13 CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN . REGISTRO PARA LAS HORAS .AUX1 LDI AUX1.DEF AUX3 = R18 .DEF AUXI2 = R24 . DEFINICIÓN DE ETIQUETAS PARA LOS REGISTROS . HABILITACIÓN GLOBAL DE INTERRUPCIONES SEI .0B00001111 OUT PORTB. Telecomunicaciones y Redes de Información . REGISTRO PARA LAS MINUTOS . PANTALLA DE INFORMACIÓN LDI ZL. REGISTRO AUXILIAR 1 INTERRUPCIONES .LIST .0B00000010 STS PCIFR.LOW(TEXT1<<1) LDI ZH.60 BRNE RELOJ1 CLR MINUT INC HORAS CPI HORAS. REGISTRO AUXILIAR2 .DEF HORAS = R19 .DEF AUX1 = R16 . INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS PROGP: LDI AUX1. Jaime E. PROGRAMACIÓN DE LAS INTERRUPCIONES POR CAMBIOS EN PB LDI AUX1.60 BRNE RELOJ1 CLR SEGUN INC MINUT CPI MINUT.DEF AUX2 = R17 .HIGH(RAMEND) OUT SPH.AUX1 .49 . MASCARA PARA PCINT8 . VALORES INICIALES DE HH:MM:SS LDI HORAS.DEF AUXI1 = R23 .0B00000001 STS PCMSK1..DEF MINUT = R20 .NOLIST . REGISTRO PARA LOS SEGUNDOS . INCREMENTO DE LOS CONTADORES DEL RELOJ RELOJ: INC SEGUN CPI SEGUN. REGISTRO AUXILIAR3 . BORRAR LA BANDERA LDI AUX1. Velarde – Departamento de Electrónica.AUX1 LDI AUX1.AUX1 .

AUX2 RET .SREG PUSH AUXI1 LDI ZL.DB "RELOJ SE HA DETENIDO" . Velarde – Departamento de Electrónica.1 .DB "RELOJ DIGITAL DE 24H" .0x0E STS PCMSK1. REPITE SI ESTÁ DETENIDO RJMP RELOJ .40 RCALL POSCUR RCALL WRTLIN LDI AUX1.0x0E BRNE CHECK1 LDI AUXI1.LOW(TEXT3<<1) LDI ZH.DB " HH:MM:SS " TEXT2: .AUXI1 PUSH AUX1 PUSH AUX2 PUSH AUX3 IN AUXI1. CUANDO ES CERO EN PB0 DETENER EL RELOJ CPI AUXI1. TRANSFORMACIÓN DE BINARIO A BCD BINBCD: CLR AUX1 BINBCD1:SUBI AUX2.10 ADD AUX2. MOSTRAR EN EL DISPLAY EL RELOJ DIGITAL RELOJ2: RCALL UNSEG LDS AUX1. POR CAMBIO EN LAS ENTRADAS DEL PÓRTICO B RUTPC1: IN AUXI1. "01234567890123456789" TEXT1: .10 BRCS BINBCD2 INC AUX1 RJMP BINBCD1 BINBCD2:LDI AUX3." TEXT3: .26 RCALL POSCUR MOV AUX2. SALTA SI ESTÁ CORRIENDO RJMP RELOJ2 .AUX3 SWAP AUX1 ADD AUX1. Telecomunicaciones y Redes de Información . Jaime E. TRANSFORMACIÓN A BCD Y PUBLICACIÓN DE LOS CONTADORES RELOJ1: LDI AUX1.0x0F .60 RCALL POSCUR RCALL WRTLIN Ing.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 14 .HORAS RCALL BINBCD RCALL WRTBYT LDI AUX1.':' RCALL WRTCHR MOV AUX2.MINUT RCALL BINBCD RCALL WRTBYT LDI AUX1.DB "RELOJ ESTA CORRIENDO" .DB "NO SE PUEDE IGUALAR.SEGUN RCALL BINBCD RCALL WRTBYT .DB "SI SE PUEDE IGUALAR.PINB ANDI AUXI1.HIGH(TEXT3<<1) LDI AUX1. YA PASÓ UN SEGUNDO ." .PCMSK1 SBRC AUX1.':' RCALL WRTCHR MOV AUX2.

AUXI1 POP AUX3 POP AUX2 POP AUX1 RJMP FINR .SREG PUSH AUXI1 LDI AUX1.60 RCALL POSCUR RCALL WRTLIN POP AUXI1 OUT SREG. Telecomunicaciones y Redes de Información .AUXI1 POP AUX3 POP AUX2 POP AUX1 RJMP FINR .40 RCALL POSCUR RCALL WRTLIN LDI AUX1.0x0D BRNE CHECK2 LDI AUXI1.HORAS RCALL BINBCD RCALL WRTBYT POP AUXI1 OUT SREG.AUXI1 PUSH AUX1 PUSH AUX2 PUSH AUX3 IN AUXI1. CUANDO ES CERO EN PB3 IGUALAR MINUTOS CHECK3: CPI AUXI1. Velarde – Departamento de Electrónica. Jaime E.60 BRNE SHOWMM CLR MINUT SHOWMM: PUSH AUX1 Ing.AUXI1 POP AUX3 POP AUX2 POP AUX1 RJMP FINR .26 RCALL POSCUR MOV AUX2.HIGH(TEXT2<<1) LDI AUX1.SREG PUSH AUXI1 LDI ZL. CUANDO ES CERO EN PB2 IGUALAR HORAS CHECK2: CPI AUXI1.24 BRNE SHOWHH CLR HORAS SHOWHH: PUSH AUX1 PUSH AUX2 PUSH AUX3 IN AUXI1.0x0B BRNE CHECK3 INC HORAS CPI HORAS.LOW(TEXT2<<1) LDI ZH. CUANDO ES CERO EN PB1 ARRANCAR EL RELOJ CHECK1: CPI AUXI1.0x01 STS PCMSK1.0x07 BRNE FINR INC MINUT CPI MINUT.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 15 POP AUXI1 OUT SREG.

EXIT . .29 POSCUR AUX2.INCLUDE "SUB4B80CH. Telecomunicaciones y Redes de Información . con respecto a las utilizadas en el último ejercicio de subrutinas con LCD conectado al microcontrolador mediante un bus de 4 bits.AUXI1 AUX3 AUX2 AUX1 Las subrutinas contenidas en el archivo secundario se mantienen sin modificaciones. COMPROBACIÓN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON DISPLAY DE CRISTAL LÍQUIDO Al activar la tecla STOP el reloj se detiene Ing.MINUT BINBCD WRTBYT AUXI1 SREG. FIN DEL MODULO FUENTE PUSH PUSH IN PUSH LDI RCALL MOV RCALL RCALL POP OUT POP POP POP RETI AUX2 AUX3 AUXI1. . Velarde – Departamento de Electrónica. Jaime E.ASM" .SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 16 FINR: .SREG AUXI1 AUX1.

Telecomunicaciones y Redes de Información . Velarde – Departamento de Electrónica. Jaime E.SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 17 Mediante la tecla HH se igualan las horas Con la tecla MM se igualan los minutos Ing.

SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 18 Al activar la tecla START el reloj entra nuevamente en funcionamiento Ing. Telecomunicaciones y Redes de Información . Jaime E. Velarde – Departamento de Electrónica.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->