SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 1
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
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.
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 2
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
• Poner ceros lógicos en los bits INTF0 e INTF1 del Registro de Banderas de
las Interrupciones Externas (EIFR), 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.
Tecla de HORAS (HH) que activa la interrupción externa INT0 mediante la
transición negativa, para realizar la siguiente tarea:
• Incrementar el contador de Horas y publicar en los displays.
Tecla de MINUTOS (MM) que activa la interrupción externa INT1 mediante la
transición 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 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.
Programar en el Registro A de Control de las Interrupciones Externas (EICRA)
para que la interrupción INT2 responda a las transiciones positivas, mientras que
las interrupciones INT0 e INT1 respondan a las transiciones negativas. Habilitar
la interrupción INT2 mediante la Máscara de Habilitación 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 códigos de 7 segmentos para ser publicados en los
displays. Finalmente el programa entra en el lazo que da la temporización 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.
CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE
INTERRUPCIÓN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIÓN 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 CÓDIGO o MEMORIA FLASH
.CSEG
JMP PROGP
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 3
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
.ORG $02 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0
JMP RUTINT0
.ORG $04 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1
JMP RUTINT1
.ORG $06 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2
JMP RUTINT2
; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS
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
; PROGRAMACIÓN 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
; HABILITACIÓN 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
; TRANSFORMACIÓN 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
; TRANSFORMACIÓN 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 señales externas para el
control de los programas
Página 4
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
; TRANSFORMACIÓN 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 HABILITACIÓN
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 explícitamente
en el código del programa principal no se han definido las localidades de la SRAM que
se utilizan, 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.
ETIQUETA SRAM DESCRIPCIÓN
DIGIT
Dígitos del Reloj HH:MM:SS
COD7S
Códigos de 7 segmentos que sirven para
mostrar en los displays
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 5
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
CODIFICACIÓN DE LAS SUBRUTINAS EN EL ARCHIVO SECUNDARIO:
Tanto la definición de las localidades del mapa de memoria, como la configuración de
los Pórticos que manejan los displays, se han incluido en el código de las subrutinas que
se encuentra en el archivo "SUBCC.ASM". 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.
; SEGMENTO DE DATOS o MEMORIA SRAM
.DSEG
DIGIT: .BYTE 6 ; DÍGITOS QUE SE MUESTRAN
COD7S: .BYTE 6 ; CÓDIGOS DE LOS DÍGITOS
; SEGMENTO DE PROGRAMA o MEMORIA FLASH
.CSEG
; SUBRUTINA DE CONVERSIÓN A 7 SEGMENTOS
.EQU NDIG = 6 ; NÚMERO DE DISPLAYS
;
ASEG: LDI AUX2,NDIG ; N TRANSFORMACIONES
LDI YL,LOW(DIGIT) ; INICIO DE LOS DÍGITOS
LDI YH,HIGH(DIGIT)
ASEG1: LDI ZL,LOW(TABLA<<1) ; INICIO DE CÓDIGOS
LDI ZH,HIGH(TABLA<<1)
LD AUX1,Y+ ; TOMAR EL DÍGITO
ADD ZL,AUX1
LDI AUX1,0
ADC ZH,AUX1
LPM AUX1,Z ; TOMAR EL CÓDIGO
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 CÓDIGO
DEC AUX2
BRNE ASEG1 ; REPETIR N VECES
RET
; TABLA DE CÓDIGOS DE 7 SEGMENTOS PARA CÁTODO COMÚN (pgfedcba)
TABLA: .DB 0b00111111,0b00000110 ;CÓDIGOS 0 y 1
.DB 0b01011011,0b01001111 ;CÓDIGOS 2 y 3
.DB 0b01100110,0b01101101 ;CÓDIGOS 4 y 5
.DB 0b01111101,0b00000111 ;CÓDIGOS 6 y 7
.DB 0b01111111,0b01101111 ;CÓDIGOS 8 y 9
; SUBRUTINA PARA BARRIDO DE DISPLAYS DE CÁTODO COMÚN
.EQU SEGME = PORTA ; PÓRTICO DE LOS SEGMENTOS
.EQU DISPL = PORTC ; PÓRTICO DE LOS CÁTODOS
SCAN: LDI AUX1,0xFF
OUT SEGME-1,AUX1 ; SALIDA PARA LOS SEGMENTOS
LDI AUX1,0xFC
OUT DISPL-1,AUX1 ; SALIDA PARA LOS CÁTODOS COMUNES
LDI XL,LOW(COD7S) ; INICIO DE CÓDIGOS
LDI XH,HIGH(COD7S)
LDI AUX2,0B00000100 ; INICIO DE DISPLAYS
LDI AUX3,NDIG ; N DISPLAYS
SCAN1: LD AUX1,X+ ; TOMA EL CÓDIGO
OUT SEGME,AUX1 ; A LOS SEGMENTOS
OUT DISPL,AUX2 ; ACTIVA UN DISPLAY
;
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 6
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
DLY: LDI AUX1,4 ; PARA DAR TIEMPO
CLR R15
DLY1: DEC R15
BRNE DLY1
DEC AUX1
BRNE DLY1
;
CLC
ROL AUX2 ; SIGUIENTE DISPLAY
LDI AUX1,0x00 ; APAGAR SEGMENTOS
OUT SEGME,AUX1
DEC AUX3
BRNE SCAN1 ; REPETIR N VECES
RET
ANÁLISIS 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: LDI AUX1,4 ; 4 VECES EL LAZO EXTERIOR
CLR R15 ; 256 VECES EL LAZO INTERIOR
DLY1: DEC R15 ; 1 CICLO DE MÁQUINA
BRNE DLY1 ; 2 CICLOS DE MÁQUINA
DEC AUX1
BRNE 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 se
toman en cuenta las demás instrucciones que se encuentran involucradas en las
subrutinas y en el programa principal. Una precisión mayor con este algoritmo no se
puede lograr, si no se introducen el uso de los TIMERS.
COMPROBACIÓN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON
PANTALLAS OBTENIDAS DE LA SIMULACIÓN DEL PROGRAMA
MEDIANTE EL PROTEUS
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 7
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
Reloj detenido por transición 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 transición negativa en INT2
Primer pulso
para detener
Segundo
pulso para
arrancar
Varios pulsos
para cambiar
las horas
Varios pulsos
para cambiar
los minutos
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 8
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
EJERCICIO DE UTILIZACIÓN DE
INTERRUPCIONES POR CAMBIO DE ESTADO EN
LOS PÓRTICOS
ENUNCIADO DEL EJERCICIO:
Modificar al programa anterior, correspondiente al reloj digital que se muestra en seis
displays de cátodo común, para que sea controlado mediante interrupciones producidas
por cuatro teclas conectadas al Pórtico 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 INTERRUPCIONES
EXTERNAS CON LA INTERRUPCIÓN POR CAMBIO DE ESTADO EN EL
PÓRTICO B
Cambio en el Vector de Interrupción, antes se utilizaban los tres vectores de las
interrupciones externas, ahora solo se utiliza únicamente el vector por cambio de
estado en el Pórtico B.
Habilitación de las resistencias de pull-up del Pórtico B donde se conectan las 4
teclas, en lugar de las que se encuentran a la entrada de las interrupciones
externas.
Configuración de los Registros pertenecientes a la Interrupción por Cambios en
el Pórtico 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 Pórtico B. Donde se determina que tecla
produce el cambio de estado para luego ejecutar la tarea asignada.
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 9
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LA RUTINA DE
INTERRUPCIÓN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIÓN 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 CÓDIGO o MEMORIA FLASH
.CSEG
JMP PROGP
.ORG $0A ; RUTINA DE LA INTERRUPCIÓN POR CAMBIO EN PB
JMP RUTPC1
; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
LDI AUX1,0B00001111
OUT PORTB,AUX1 ; PULL-UP PB3..0
; PROGRAMACIÓN DE LAS INTERRUPCIONES POR CAMBIOS EN PB
LDI AUX1,0B00000010
STS PCICR,AUX1 ; PCINT1 HABILITADA
LDI AUX1,0B00000010
STS PCIFR,AUX1 ; BORRAR LA BANDERA
LDI AUX1,0B00000001
STS PCMSK1,AUX1 ; MASCARA PARA PCINT8 - PB0
; VALORES INICIALES DE HH:MM:SS
LDI HORAS,11
LDI MINUT,59
LDI SEGUN,39
; HABILITACIÓN 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
; TRANSFORMACIÓN 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
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 10
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
RCALL BINBCD
; TRANSFORMACIÓN 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
; TRANSFORMACIÓN 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 PÓRTICO 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.
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 11
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
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 para
detener
Pulso para
arrancar
Varios pulsos
para cambiar
las horas
Varios pulsos
para cambiar
los minutos
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 12
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
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, el
control se realiza mediante 4 teclas conectadas a los bits menos significativos del
Pórtico B.
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, con lo cual el cálculo 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.
También se aprovecha de las 4 líneas del display (80 caracteres), para mostrar el estado
en que se encuentra el reloj digital y facilitar la operación; por lo que se utilizan las
subrutinas que existen para este propósito, contenidas en el archivo secundario.
Además, 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 presentación del
reloj digital.
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 13
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE
INTERRUPCIÓN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; DEFINICIÓN 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 CÓDIGO o MEMORIA FLASH
.CSEG
JMP PROGP
.ORG $0A ; RUTINA DE LA INTERRUPCIÓN POR CAMBIO EN PB
JMP RUTPC1
; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
LDI AUX1,0B00001111
OUT PORTB,AUX1 ; PULL-UP PB3..0
; PROGRAMACIÓN DE LAS INTERRUPCIONES POR CAMBIOS EN PB
LDI AUX1,0B00000010
STS PCICR,AUX1 ; PCINT1 HABILITADA
LDI AUX1,0B00000010
STS PCIFR,AUX1 ; BORRAR LA BANDERA
LDI AUX1,0B00000001
STS PCMSK1,AUX1 ; MASCARA PARA PCINT8 - PB0
OUT PORTD,AUX1
; INICIALIZACIÓN DEL LCD
RCALL LCDRST
; PANTALLA DE INFORMACIÓN
LDI ZL,LOW(TEXT1<<1)
LDI ZH,HIGH(TEXT1<<1)
RCALL WRTMSJ
RCALL OFFCUR
; VALORES INICIALES DE HH:MM:SS
LDI HORAS,23
LDI MINUT,59
LDI SEGUN,49
; HABILITACIÓN 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
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 14
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
; TRANSFORMACIÓN A BCD Y PUBLICACIÓN 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."
; TRANSFORMACIÓN 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 PÓRTICO 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 señales externas para el
control de los programas
Página 15
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
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 señales externas para el
control de los programas
Página 16
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
PUSH AUX2
PUSH AUX3
IN AUXI1,SREG
PUSH AUXI1
LDI AUX1,29
RCALL POSCUR
MOV AUX2,MINUT
RCALL BINBCD
RCALL WRTBYT
POP AUXI1
OUT SREG,AUXI1
POP AUX3
POP AUX2
POP 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 al
microcontrolador mediante un bus de 4 bits.
COMPROBACIÓN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON
DISPLAY DE CRISTAL LÍQUIDO
Al activar la tecla STOP el reloj se detiene
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 17
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
Mediante la tecla HH se igualan las horas
Con la tecla MM se igualan los minutos
SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el
control de los programas
Página 18
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
Al activar la tecla START el reloj entra nuevamente en funcionamiento

Más contenido relacionado

La actualidad más candente

Ejercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCDEjercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCDJaime E. Velarde
 
Display de cristal líquido grágico GLCD
Display de cristal líquido grágico GLCDDisplay de cristal líquido grágico GLCD
Display de cristal líquido grágico GLCDJaime E. Velarde
 
Ejercicios 06 subrutinas con LCD continuación
Ejercicios 06 subrutinas con LCD continuaciónEjercicios 06 subrutinas con LCD continuación
Ejercicios 06 subrutinas con LCD continuaciónJaime E. Velarde
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84axeleta
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CLuis Zurita
 
Decodificador dtmf mt8870
Decodificador dtmf mt8870Decodificador dtmf mt8870
Decodificador dtmf mt8870Franz Tarqui
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1Luis Zurita
 

La actualidad más candente (18)

Ejercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCDEjercicios 06 subrutinas con LCD
Ejercicios 06 subrutinas con LCD
 
Display de cristal líquido grágico GLCD
Display de cristal líquido grágico GLCDDisplay de cristal líquido grágico GLCD
Display de cristal líquido grágico GLCD
 
Ejercicio 01 Llenar
Ejercicio 01 LlenarEjercicio 01 Llenar
Ejercicio 01 Llenar
 
Ejercicios 06 subrutinas con LCD continuación
Ejercicios 06 subrutinas con LCD continuaciónEjercicios 06 subrutinas con LCD continuación
Ejercicios 06 subrutinas con LCD continuación
 
Ejercicio 04 Calculos
Ejercicio 04 CalculosEjercicio 04 Calculos
Ejercicio 04 Calculos
 
Funcionamiento del USART
Funcionamiento del USARTFuncionamiento del USART
Funcionamiento del USART
 
Ejercicio 09 Serie
Ejercicio 09 SerieEjercicio 09 Serie
Ejercicio 09 Serie
 
Ejercicio 08 CAD
Ejercicio 08 CADEjercicio 08 CAD
Ejercicio 08 CAD
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
 
Ejercicio 02 Tablas
Ejercicio 02 TablasEjercicio 02 Tablas
Ejercicio 02 Tablas
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN CEJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
 
Decodificador dtmf mt8870
Decodificador dtmf mt8870Decodificador dtmf mt8870
Decodificador dtmf mt8870
 
Informe 4
Informe 4Informe 4
Informe 4
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 

Destacado

Convertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRConvertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRCamilo Okue
 
Ejercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónEjercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónJaime E. Velarde
 
09 Conjunto de Instrucciones de los Atmega
09 Conjunto de Instrucciones  de los Atmega09 Conjunto de Instrucciones  de los Atmega
09 Conjunto de Instrucciones de los AtmegaJaime E. Velarde
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVRabemen
 
Programacion de microcontroladores
Programacion de microcontroladoresProgramacion de microcontroladores
Programacion de microcontroladoresayreonmx
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Miguel Angel Corona Lòpez
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
Microcontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos aoMicrocontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos aohector8764
 

Destacado (11)

Convertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRConvertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVR
 
19 Conversor A/D
19 Conversor A/D19 Conversor A/D
19 Conversor A/D
 
Ejercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónEjercicios 04 cálculo continuación
Ejercicios 04 cálculo continuación
 
09 Conjunto de Instrucciones de los Atmega
09 Conjunto de Instrucciones  de los Atmega09 Conjunto de Instrucciones  de los Atmega
09 Conjunto de Instrucciones de los Atmega
 
07 Familia Atmega
07 Familia Atmega07 Familia Atmega
07 Familia Atmega
 
Microcontroladores AVR
Microcontroladores AVRMicrocontroladores AVR
Microcontroladores AVR
 
Programacion de microcontroladores
Programacion de microcontroladoresProgramacion de microcontroladores
Programacion de microcontroladores
 
Turorial avr Bascom
Turorial avr BascomTurorial avr Bascom
Turorial avr Bascom
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Microcontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos aoMicrocontrolador pic16 f84, desarrollo de proyectos ao
Microcontrolador pic16 f84, desarrollo de proyectos ao
 

Similar a Ejercicio 07 adicionales de Interrupciones

⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-unoAngelik Hdez
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-unoAngelik Hdez
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"Diego Rojas Ruiz
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesiDavid Narváez
 
Introducpic2
Introducpic2Introducpic2
Introducpic2conalep
 
Introducpic
IntroducpicIntroducpic
Introducpicconalep
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Hamiltonn Casallas
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886Victor Asanza
 
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...Jovanny Duque
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresSANTIAGO PABLO ALBERTO
 
Matriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en LinuxMatriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en LinuxSNPP
 
Microprosedador
MicroprosedadorMicroprosedador
Microprosedadordy vc
 

Similar a Ejercicio 07 adicionales de Interrupciones (20)

Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Lab 01 micro
Lab 01 microLab 01 micro
Lab 01 micro
 
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Teclado matricial
Teclado matricialTeclado matricial
Teclado matricial
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
 
Tarea final
Tarea finalTarea final
Tarea final
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Arquitectura interna micro
Arquitectura interna microArquitectura interna micro
Arquitectura interna micro
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
Introducpic2
Introducpic2Introducpic2
Introducpic2
 
Introducpic
IntroducpicIntroducpic
Introducpic
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...ARDUINO - METODOLOGÍA PARA TRADUCIR  AL  LENGUAJE  PROCESSING  UN CIRCUITO  E...
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
 
Pld's
Pld'sPld's
Pld's
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Matriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en LinuxMatriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en Linux
 
Microprosedador
MicroprosedadorMicroprosedador
Microprosedador
 

Más de Jaime E. Velarde

16 Instrucciones de Subrutinas
16 Instrucciones de Subrutinas16 Instrucciones de Subrutinas
16 Instrucciones de SubrutinasJaime E. Velarde
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y LogicasJaime E. Velarde
 
13 Instrucciones de manejo de bits
13  Instrucciones de manejo de bits13  Instrucciones de manejo de bits
13 Instrucciones de manejo de bitsJaime E. Velarde
 
11 Instrucciones de Salto de los Atmega
11  Instrucciones de Salto  de los Atmega11  Instrucciones de Salto  de los Atmega
11 Instrucciones de Salto de los AtmegaJaime E. Velarde
 
10 Instrucciones de Transferencia
10  Instrucciones  de Transferencia10  Instrucciones  de Transferencia
10 Instrucciones de TransferenciaJaime E. Velarde
 
08 Memoria de los Atmega164P
08 Memoria de los Atmega164P08 Memoria de los Atmega164P
08 Memoria de los Atmega164PJaime E. Velarde
 

Más de Jaime E. Velarde (9)

20 Portico Serial
20 Portico Serial20 Portico Serial
20 Portico Serial
 
18 Timers
18 Timers18 Timers
18 Timers
 
16 Instrucciones de Subrutinas
16 Instrucciones de Subrutinas16 Instrucciones de Subrutinas
16 Instrucciones de Subrutinas
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas
 
13 Instrucciones de manejo de bits
13  Instrucciones de manejo de bits13  Instrucciones de manejo de bits
13 Instrucciones de manejo de bits
 
14 Fusibles Programables
14 Fusibles Programables14 Fusibles Programables
14 Fusibles Programables
 
11 Instrucciones de Salto de los Atmega
11  Instrucciones de Salto  de los Atmega11  Instrucciones de Salto  de los Atmega
11 Instrucciones de Salto de los Atmega
 
10 Instrucciones de Transferencia
10  Instrucciones  de Transferencia10  Instrucciones  de Transferencia
10 Instrucciones de Transferencia
 
08 Memoria de los Atmega164P
08 Memoria de los Atmega164P08 Memoria de los Atmega164P
08 Memoria de los Atmega164P
 

Último

3. ¡Promoviendo la Paternidad Responsable en La Recoleta!
3. ¡Promoviendo la Paternidad Responsable en La Recoleta!3. ¡Promoviendo la Paternidad Responsable en La Recoleta!
3. ¡Promoviendo la Paternidad Responsable en La Recoleta!ProfesorGualberto
 
El papel de la microbiota en el sistema inmunologico.pptx
El papel de la microbiota en el sistema inmunologico.pptxEl papel de la microbiota en el sistema inmunologico.pptx
El papel de la microbiota en el sistema inmunologico.pptxsanchezjeraldy7757
 
PROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptx
PROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptxPROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptx
PROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptxMarthaAlejandraHerna1
 
Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...
Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...
Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...Unidad de Espiritualidad Eudista
 
UNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docx
UNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docxUNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docx
UNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docxGLADYSP4
 
Lengua Y Literatura 8 Básico 2024 pdfghh
Lengua Y Literatura 8 Básico 2024 pdfghhLengua Y Literatura 8 Básico 2024 pdfghh
Lengua Y Literatura 8 Básico 2024 pdfghhDidiexy1
 
7. ¡Promoviendo la Paternidad Responsable en La Recoleta!
7. ¡Promoviendo la Paternidad Responsable en La Recoleta!7. ¡Promoviendo la Paternidad Responsable en La Recoleta!
7. ¡Promoviendo la Paternidad Responsable en La Recoleta!ProfesorGualberto
 
4. ¡Promoviendo la Paternidad Responsable en La Recoleta!
4. ¡Promoviendo la Paternidad Responsable en La Recoleta!4. ¡Promoviendo la Paternidad Responsable en La Recoleta!
4. ¡Promoviendo la Paternidad Responsable en La Recoleta!ProfesorGualberto
 
UNIDAD CERO - Desarrollo Personal CC.docx
UNIDAD CERO  - Desarrollo Personal CC.docxUNIDAD CERO  - Desarrollo Personal CC.docx
UNIDAD CERO - Desarrollo Personal CC.docxOlgaLuzFloresGonzale
 
EXPERIENCIA DE APRENDIZAJE 3 EPT - SECUNDARIA-2024.docx
EXPERIENCIA DE APRENDIZAJE 3  EPT - SECUNDARIA-2024.docxEXPERIENCIA DE APRENDIZAJE 3  EPT - SECUNDARIA-2024.docx
EXPERIENCIA DE APRENDIZAJE 3 EPT - SECUNDARIA-2024.docxssuser9be75b1
 
12. ¡Promoviendo la Paternidad Responsable en La Recoleta!
12. ¡Promoviendo la Paternidad Responsable en La Recoleta!12. ¡Promoviendo la Paternidad Responsable en La Recoleta!
12. ¡Promoviendo la Paternidad Responsable en La Recoleta!ProfesorGualberto
 
Proyecto del via crucis para semana s.docx
Proyecto del via crucis para semana s.docxProyecto del via crucis para semana s.docx
Proyecto del via crucis para semana s.docxYANETH ARENAS VALDIVIA
 
Manual guía Liderazgo y Equipo Ciclo 2024 - UPF Argentina
Manual guía Liderazgo y Equipo Ciclo 2024 - UPF ArgentinaManual guía Liderazgo y Equipo Ciclo 2024 - UPF Argentina
Manual guía Liderazgo y Equipo Ciclo 2024 - UPF ArgentinaUPF Argentina
 
6. ¡Promoviendo la Paternidad Responsable en La Recoleta!
6. ¡Promoviendo la Paternidad Responsable en La Recoleta!6. ¡Promoviendo la Paternidad Responsable en La Recoleta!
6. ¡Promoviendo la Paternidad Responsable en La Recoleta!ProfesorGualberto
 
Planes y programas - Nivel Secundaria 2024 word.doc
Planes y programas - Nivel Secundaria 2024 word.docPlanes y programas - Nivel Secundaria 2024 word.doc
Planes y programas - Nivel Secundaria 2024 word.docVaniecitaValverde
 
Dia internacional de peliculas iberoamericanas.pptx 2
Dia internacional de peliculas iberoamericanas.pptx 2Dia internacional de peliculas iberoamericanas.pptx 2
Dia internacional de peliculas iberoamericanas.pptx 2xc025079
 
EVALUACIÓN DIAGNÓSTICA 4° GRADO 2024.docx
EVALUACIÓN DIAGNÓSTICA  4°  GRADO 2024.docxEVALUACIÓN DIAGNÓSTICA  4°  GRADO 2024.docx
EVALUACIÓN DIAGNÓSTICA 4° GRADO 2024.docxssuser9be75b1
 

Último (20)

3. ¡Promoviendo la Paternidad Responsable en La Recoleta!
3. ¡Promoviendo la Paternidad Responsable en La Recoleta!3. ¡Promoviendo la Paternidad Responsable en La Recoleta!
3. ¡Promoviendo la Paternidad Responsable en La Recoleta!
 
El papel de la microbiota en el sistema inmunologico.pptx
El papel de la microbiota en el sistema inmunologico.pptxEl papel de la microbiota en el sistema inmunologico.pptx
El papel de la microbiota en el sistema inmunologico.pptx
 
PROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptx
PROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptxPROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptx
PROYECTO PRIMAVERA NUMERICA PARA PREESCOLAR.pptx
 
Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...
Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...
Vive este tiempo final de la Cuaresma con nuestro Viacrucis eudista de realid...
 
UNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docx
UNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docxUNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docx
UNIDAD DE APRENIZAJE CERO QUINTO GRADO - 2024.docx
 
Sesión de clase: El anhelo de Dios en Sion
Sesión de clase: El anhelo de Dios en SionSesión de clase: El anhelo de Dios en Sion
Sesión de clase: El anhelo de Dios en Sion
 
Lengua Y Literatura 8 Básico 2024 pdfghh
Lengua Y Literatura 8 Básico 2024 pdfghhLengua Y Literatura 8 Básico 2024 pdfghh
Lengua Y Literatura 8 Básico 2024 pdfghh
 
7. ¡Promoviendo la Paternidad Responsable en La Recoleta!
7. ¡Promoviendo la Paternidad Responsable en La Recoleta!7. ¡Promoviendo la Paternidad Responsable en La Recoleta!
7. ¡Promoviendo la Paternidad Responsable en La Recoleta!
 
4. ¡Promoviendo la Paternidad Responsable en La Recoleta!
4. ¡Promoviendo la Paternidad Responsable en La Recoleta!4. ¡Promoviendo la Paternidad Responsable en La Recoleta!
4. ¡Promoviendo la Paternidad Responsable en La Recoleta!
 
UNIDAD CERO - Desarrollo Personal CC.docx
UNIDAD CERO  - Desarrollo Personal CC.docxUNIDAD CERO  - Desarrollo Personal CC.docx
UNIDAD CERO - Desarrollo Personal CC.docx
 
EXPERIENCIA DE APRENDIZAJE 3 EPT - SECUNDARIA-2024.docx
EXPERIENCIA DE APRENDIZAJE 3  EPT - SECUNDARIA-2024.docxEXPERIENCIA DE APRENDIZAJE 3  EPT - SECUNDARIA-2024.docx
EXPERIENCIA DE APRENDIZAJE 3 EPT - SECUNDARIA-2024.docx
 
12. ¡Promoviendo la Paternidad Responsable en La Recoleta!
12. ¡Promoviendo la Paternidad Responsable en La Recoleta!12. ¡Promoviendo la Paternidad Responsable en La Recoleta!
12. ¡Promoviendo la Paternidad Responsable en La Recoleta!
 
Proyecto del via crucis para semana s.docx
Proyecto del via crucis para semana s.docxProyecto del via crucis para semana s.docx
Proyecto del via crucis para semana s.docx
 
Manual guía Liderazgo y Equipo Ciclo 2024 - UPF Argentina
Manual guía Liderazgo y Equipo Ciclo 2024 - UPF ArgentinaManual guía Liderazgo y Equipo Ciclo 2024 - UPF Argentina
Manual guía Liderazgo y Equipo Ciclo 2024 - UPF Argentina
 
6. ¡Promoviendo la Paternidad Responsable en La Recoleta!
6. ¡Promoviendo la Paternidad Responsable en La Recoleta!6. ¡Promoviendo la Paternidad Responsable en La Recoleta!
6. ¡Promoviendo la Paternidad Responsable en La Recoleta!
 
Tema 4.- INSFRAESTRUCTURAS DE TI Y TECNOLOGIAS EMERGENTES.pdf
Tema 4.- INSFRAESTRUCTURAS DE TI Y TECNOLOGIAS EMERGENTES.pdfTema 4.- INSFRAESTRUCTURAS DE TI Y TECNOLOGIAS EMERGENTES.pdf
Tema 4.- INSFRAESTRUCTURAS DE TI Y TECNOLOGIAS EMERGENTES.pdf
 
Planes y programas - Nivel Secundaria 2024 word.doc
Planes y programas - Nivel Secundaria 2024 word.docPlanes y programas - Nivel Secundaria 2024 word.doc
Planes y programas - Nivel Secundaria 2024 word.doc
 
Dia internacional de peliculas iberoamericanas.pptx 2
Dia internacional de peliculas iberoamericanas.pptx 2Dia internacional de peliculas iberoamericanas.pptx 2
Dia internacional de peliculas iberoamericanas.pptx 2
 
EVALUACIÓN DIAGNÓSTICA 4° GRADO 2024.docx
EVALUACIÓN DIAGNÓSTICA  4°  GRADO 2024.docxEVALUACIÓN DIAGNÓSTICA  4°  GRADO 2024.docx
EVALUACIÓN DIAGNÓSTICA 4° GRADO 2024.docx
 
El anhelo de Dios en Sion (Sesión de clase)
El anhelo de Dios en Sion (Sesión de clase)El anhelo de Dios en Sion (Sesión de clase)
El anhelo de Dios en Sion (Sesión de clase)
 

Ejercicio 07 adicionales de Interrupciones

  • 1. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 1 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información 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.
  • 2. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 2 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información • Poner ceros lógicos en los bits INTF0 e INTF1 del Registro de Banderas de las Interrupciones Externas (EIFR), 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. Tecla de HORAS (HH) que activa la interrupción externa INT0 mediante la transición negativa, para realizar la siguiente tarea: • Incrementar el contador de Horas y publicar en los displays. Tecla de MINUTOS (MM) que activa la interrupción externa INT1 mediante la transición 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 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. Programar en el Registro A de Control de las Interrupciones Externas (EICRA) para que la interrupción INT2 responda a las transiciones positivas, mientras que las interrupciones INT0 e INT1 respondan a las transiciones negativas. Habilitar la interrupción INT2 mediante la Máscara de Habilitación 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 códigos de 7 segmentos para ser publicados en los displays. Finalmente el programa entra en el lazo que da la temporización 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. CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN .NOLIST .INCLUDE "m164pdef.inc" .LIST ; DEFINICIÓN 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 CÓDIGO o MEMORIA FLASH .CSEG JMP PROGP
  • 3. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 3 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información .ORG $02 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 0 JMP RUTINT0 .ORG $04 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 1 JMP RUTINT1 .ORG $06 ; RUTINA DE LA INTERRUPCIÓN EXTERNA 2 JMP RUTINT2 ; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS 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 ; PROGRAMACIÓN 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 ; HABILITACIÓN 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 ; TRANSFORMACIÓN 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 ; TRANSFORMACIÓN 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
  • 4. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 4 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información ; TRANSFORMACIÓN 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 HABILITACIÓN 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 explícitamente en el código del programa principal no se han definido las localidades de la SRAM que se utilizan, 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. ETIQUETA SRAM DESCRIPCIÓN DIGIT Dígitos del Reloj HH:MM:SS COD7S Códigos de 7 segmentos que sirven para mostrar en los displays
  • 5. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 5 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información CODIFICACIÓN DE LAS SUBRUTINAS EN EL ARCHIVO SECUNDARIO: Tanto la definición de las localidades del mapa de memoria, como la configuración de los Pórticos que manejan los displays, se han incluido en el código de las subrutinas que se encuentra en el archivo "SUBCC.ASM". 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. ; SEGMENTO DE DATOS o MEMORIA SRAM .DSEG DIGIT: .BYTE 6 ; DÍGITOS QUE SE MUESTRAN COD7S: .BYTE 6 ; CÓDIGOS DE LOS DÍGITOS ; SEGMENTO DE PROGRAMA o MEMORIA FLASH .CSEG ; SUBRUTINA DE CONVERSIÓN A 7 SEGMENTOS .EQU NDIG = 6 ; NÚMERO DE DISPLAYS ; ASEG: LDI AUX2,NDIG ; N TRANSFORMACIONES LDI YL,LOW(DIGIT) ; INICIO DE LOS DÍGITOS LDI YH,HIGH(DIGIT) ASEG1: LDI ZL,LOW(TABLA<<1) ; INICIO DE CÓDIGOS LDI ZH,HIGH(TABLA<<1) LD AUX1,Y+ ; TOMAR EL DÍGITO ADD ZL,AUX1 LDI AUX1,0 ADC ZH,AUX1 LPM AUX1,Z ; TOMAR EL CÓDIGO 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 CÓDIGO DEC AUX2 BRNE ASEG1 ; REPETIR N VECES RET ; TABLA DE CÓDIGOS DE 7 SEGMENTOS PARA CÁTODO COMÚN (pgfedcba) TABLA: .DB 0b00111111,0b00000110 ;CÓDIGOS 0 y 1 .DB 0b01011011,0b01001111 ;CÓDIGOS 2 y 3 .DB 0b01100110,0b01101101 ;CÓDIGOS 4 y 5 .DB 0b01111101,0b00000111 ;CÓDIGOS 6 y 7 .DB 0b01111111,0b01101111 ;CÓDIGOS 8 y 9 ; SUBRUTINA PARA BARRIDO DE DISPLAYS DE CÁTODO COMÚN .EQU SEGME = PORTA ; PÓRTICO DE LOS SEGMENTOS .EQU DISPL = PORTC ; PÓRTICO DE LOS CÁTODOS SCAN: LDI AUX1,0xFF OUT SEGME-1,AUX1 ; SALIDA PARA LOS SEGMENTOS LDI AUX1,0xFC OUT DISPL-1,AUX1 ; SALIDA PARA LOS CÁTODOS COMUNES LDI XL,LOW(COD7S) ; INICIO DE CÓDIGOS LDI XH,HIGH(COD7S) LDI AUX2,0B00000100 ; INICIO DE DISPLAYS LDI AUX3,NDIG ; N DISPLAYS SCAN1: LD AUX1,X+ ; TOMA EL CÓDIGO OUT SEGME,AUX1 ; A LOS SEGMENTOS OUT DISPL,AUX2 ; ACTIVA UN DISPLAY ;
  • 6. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 6 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información DLY: LDI AUX1,4 ; PARA DAR TIEMPO CLR R15 DLY1: DEC R15 BRNE DLY1 DEC AUX1 BRNE DLY1 ; CLC ROL AUX2 ; SIGUIENTE DISPLAY LDI AUX1,0x00 ; APAGAR SEGMENTOS OUT SEGME,AUX1 DEC AUX3 BRNE SCAN1 ; REPETIR N VECES RET ANÁLISIS 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: LDI AUX1,4 ; 4 VECES EL LAZO EXTERIOR CLR R15 ; 256 VECES EL LAZO INTERIOR DLY1: DEC R15 ; 1 CICLO DE MÁQUINA BRNE DLY1 ; 2 CICLOS DE MÁQUINA DEC AUX1 BRNE 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 se toman en cuenta las demás instrucciones que se encuentran involucradas en las subrutinas y en el programa principal. Una precisión mayor con este algoritmo no se puede lograr, si no se introducen el uso de los TIMERS. COMPROBACIÓN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON PANTALLAS OBTENIDAS DE LA SIMULACIÓN DEL PROGRAMA MEDIANTE EL PROTEUS
  • 7. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 7 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información Reloj detenido por transición 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 transición negativa en INT2 Primer pulso para detener Segundo pulso para arrancar Varios pulsos para cambiar las horas Varios pulsos para cambiar los minutos
  • 8. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 8 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información EJERCICIO DE UTILIZACIÓN DE INTERRUPCIONES POR CAMBIO DE ESTADO EN LOS PÓRTICOS ENUNCIADO DEL EJERCICIO: Modificar al programa anterior, correspondiente al reloj digital que se muestra en seis displays de cátodo común, para que sea controlado mediante interrupciones producidas por cuatro teclas conectadas al Pórtico 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 INTERRUPCIONES EXTERNAS CON LA INTERRUPCIÓN POR CAMBIO DE ESTADO EN EL PÓRTICO B Cambio en el Vector de Interrupción, antes se utilizaban los tres vectores de las interrupciones externas, ahora solo se utiliza únicamente el vector por cambio de estado en el Pórtico B. Habilitación de las resistencias de pull-up del Pórtico B donde se conectan las 4 teclas, en lugar de las que se encuentran a la entrada de las interrupciones externas. Configuración de los Registros pertenecientes a la Interrupción por Cambios en el Pórtico 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 Pórtico B. Donde se determina que tecla produce el cambio de estado para luego ejecutar la tarea asignada.
  • 9. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 9 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LA RUTINA DE INTERRUPCIÓN .NOLIST .INCLUDE "m164pdef.inc" .LIST ; DEFINICIÓN 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 CÓDIGO o MEMORIA FLASH .CSEG JMP PROGP .ORG $0A ; RUTINA DE LA INTERRUPCIÓN POR CAMBIO EN PB JMP RUTPC1 ; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 LDI AUX1,0B00001111 OUT PORTB,AUX1 ; PULL-UP PB3..0 ; PROGRAMACIÓN DE LAS INTERRUPCIONES POR CAMBIOS EN PB LDI AUX1,0B00000010 STS PCICR,AUX1 ; PCINT1 HABILITADA LDI AUX1,0B00000010 STS PCIFR,AUX1 ; BORRAR LA BANDERA LDI AUX1,0B00000001 STS PCMSK1,AUX1 ; MASCARA PARA PCINT8 - PB0 ; VALORES INICIALES DE HH:MM:SS LDI HORAS,11 LDI MINUT,59 LDI SEGUN,39 ; HABILITACIÓN 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 ; TRANSFORMACIÓN 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
  • 10. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 10 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información RCALL BINBCD ; TRANSFORMACIÓN 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 ; TRANSFORMACIÓN 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 PÓRTICO 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.
  • 11. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 11 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información 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 para detener Pulso para arrancar Varios pulsos para cambiar las horas Varios pulsos para cambiar los minutos
  • 12. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 12 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información 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, el control se realiza mediante 4 teclas conectadas a los bits menos significativos del Pórtico B. 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, con lo cual el cálculo 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. También se aprovecha de las 4 líneas del display (80 caracteres), para mostrar el estado en que se encuentra el reloj digital y facilitar la operación; por lo que se utilizan las subrutinas que existen para este propósito, contenidas en el archivo secundario. Además, 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 presentación del reloj digital.
  • 13. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 13 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y DE LAS RUTINAS DE INTERRUPCIÓN .NOLIST .INCLUDE "m164pdef.inc" .LIST ; DEFINICIÓN 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 CÓDIGO o MEMORIA FLASH .CSEG JMP PROGP .ORG $0A ; RUTINA DE LA INTERRUPCIÓN POR CAMBIO EN PB JMP RUTPC1 ; INICIALIZACIÓN DEL PUNTERO DEL STACK Y DE LOS PÓRTICOS PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1 LDI AUX1,0B00001111 OUT PORTB,AUX1 ; PULL-UP PB3..0 ; PROGRAMACIÓN DE LAS INTERRUPCIONES POR CAMBIOS EN PB LDI AUX1,0B00000010 STS PCICR,AUX1 ; PCINT1 HABILITADA LDI AUX1,0B00000010 STS PCIFR,AUX1 ; BORRAR LA BANDERA LDI AUX1,0B00000001 STS PCMSK1,AUX1 ; MASCARA PARA PCINT8 - PB0 OUT PORTD,AUX1 ; INICIALIZACIÓN DEL LCD RCALL LCDRST ; PANTALLA DE INFORMACIÓN LDI ZL,LOW(TEXT1<<1) LDI ZH,HIGH(TEXT1<<1) RCALL WRTMSJ RCALL OFFCUR ; VALORES INICIALES DE HH:MM:SS LDI HORAS,23 LDI MINUT,59 LDI SEGUN,49 ; HABILITACIÓN 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
  • 14. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 14 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información ; TRANSFORMACIÓN A BCD Y PUBLICACIÓN 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." ; TRANSFORMACIÓN 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 PÓRTICO 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
  • 15. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 15 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información 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
  • 16. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 16 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información PUSH AUX2 PUSH AUX3 IN AUXI1,SREG PUSH AUXI1 LDI AUX1,29 RCALL POSCUR MOV AUX2,MINUT RCALL BINBCD RCALL WRTBYT POP AUXI1 OUT SREG,AUXI1 POP AUX3 POP AUX2 POP 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 al microcontrolador mediante un bus de 4 bits. COMPROBACIÓN DEL FUNCIONAMIENTO DEL RELOJ DIGITAL CON DISPLAY DE CRISTAL LÍQUIDO Al activar la tecla STOP el reloj se detiene
  • 17. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 17 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información Mediante la tecla HH se igualan las horas Con la tecla MM se igualan los minutos
  • 18. SISTEMAS MICROPROCESADOS: Uso de interrupciones por señales externas para el control de los programas Página 18 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información Al activar la tecla START el reloj entra nuevamente en funcionamiento