1. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 9
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
CODIFICACIÓN DEL PROGRAMA PRINCIPAL Y LA SUBRUTINA
“CALCULO”
La subrutina “CALCULO” ha sido modificada de la solución anterior para que permita
la transformación de millas a metros de valores hasta de 999.
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
; ASIGNACIÓN DE ETIQUETAS A REGISTROS
.DEF AUX1 = R16 ; REGISTRO AUX1
.DEF AUX2 = R17 ; REGISTRO AUX2
.DEF AUX3 = R18 ; REGISTRO AUX3
; SEGMENTO DE DATOS o MEMORIA SRAM
.DSEG
CENTE: .BYTE 1 ; DÍGITO CENTENAS
DECEN: .BYTE 1 ; DÍGITO DECENAS
UNIDA: .BYTE 1 ; DÍGITO UNIDADES
METBIN: .BYTE 3 ; METROS EN BINARIO
; SEGMENTO DE CÓDIGO o MEMORIA FLASH
.CSEG
; INICIALIZACIÓN DEL STACK
LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
; INICIALIZACIÓN DEL LCD
RCALL LCDRST
; PANTALLA DE INFORMACIÓN
REPITA: LDI ZL,LOW(TEXT1<<1)
LDI ZH,HIGH(TEXT1<<1)
RCALL WRTMSJ
; INGRESO DE LAS MILLAS
LDI AUX1,55
LDI AUX2,3
RCALL INPUT
; ALMACENAMIENTO PARA EL CÁLCULO
LDS AUX1,BUFFER+7
STS CENTE,AUX1
LDS AUX1,BUFFER+8
STS DECEN,AUX1
LDS AUX1,BUFFER+9
STS UNIDA,AUX1
; CÁLCULO Y PRESENTACIÓN DEL RESULTADO
RCALL CALCULO
LDI AUX1,71
RCALL WRTNUM
; REPETIR PARA UN NUEVO VALOR
RCALL TECLAS
RJMP REPITA
; "01234567890123456789"
TEXT1: .DB "TRANSFORMACIONES DE "
.DB " MILLAS A METROS "
.DB "Entrar MILLAS: "
.DB "en METROS: "
;
; SUBRUTINA DE CONVERSIÓN DE BCD A BINARIO DE LAS MILLAS,
; TRANSFORMACIÓN DE MILLAS A METROS
; PARA VALORES COMPRENDIDOS ENTRE 0 Y 999
; Y FINALMENTE CONVERSIÓN DE BINARIO A BCD DE LOS METROS
CALCULO:
Configuración del LCD
para bus de 8 bits
Escritura del mensaje formado
por los 80 caracteres de la
tabla etiquetada como “TEXT1”
Ingreso de 3 dígitos que aparecen a
partir de la posición 55 del LCD
Escritura del resultado a partir
de la posición 71 del LCD
Espera por cualquier
tecla para continuar
Transferencia de los dígitos
ingresados por la subrutina
INPUT a las localidades que
utiliza la subrutina CALCULO
2. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 10
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
; TRANSFORMACIÓN DE LAS CENTENAS A BINARIO
LDS AUX1,CENTE
LDI AUX2,100
MUL AUX1,AUX2
MOV AUX3,R0
MOV R2,R1
; TRANSFORMACIÓN DE LAS DECENAS A BINARIO
LDS AUX1,DECEN
LDI AUX2,10
MUL AUX1,AUX2
; OBTENCIÓN DE LA TRANSFORMACIÓN TOTAL
ADD AUX3,R0
ADC R2,R1
LDS AUX1,UNIDA
ADD AUX1,AUX3
CLR AUX3
ADC AUX3,R2
; MULTIPLICACIÓN DEL BYTE BAJO DE LAS MILLAS POR EL BYTE BAJO DE 1609
LDI AUX2,LOW(1609)
MUL AUX1,AUX2
; ALMACENAMIENTO DEL PRIMER BYTE DEL RESULTADO
STS METBIN+2,R0
MOV R2,R1
; MULTIPLICACIÓN DEL BYTE ALTO DE LAS MILLAS POR EL BYTE BAJO DE 1609
CLR R3
MUL AUX3,AUX2
ADD R2,R0
ADC R3,R1
; MULTIPLICACIÓN DEL BYTE ALTO DE LAS MILLAS POR EL BYTE ALTO DE 1609
LDI AUX2,HIGH(1609)
MUL AUX1,AUX2
; ALMACENAMIENTO DEL SEGUNDO BYTE DEL RESULTADO
ADD R2,R0
STS METBIN+1,R2
ADC R3,R1
; MULTIPLICACIÓN DEL BYTE ALTO DE LAS MILLAS POR EL BYTE ALTO DE 1609
MUL AUX3,AUX2
ADD R3,R0
; ALMACENAMIENTO DEL TERCER BYTE DEL RESULTADO
STS METBIN,R3
; TRANSFORMACIÓN DE BINARIO A BCD DEL RESULTADO
LDI XL,LOW(BUFFER+3)
LDI XH,HIGH(BUFFER+3)
LDI ZL,LOW(CONST<<1)
LDI ZH,HIGH(CONST<<1)
LDI AUX3,6
; PARA OBTENER UN NUEVO DÍGITO
NEWDIG: LDI AUX2,0
LPM R0,Z+
LPM R1,Z+
LPM R2,Z+
; DIVISIÓN MEDIANTE RESTAS SUCESIVAS
RESTAS: LDI YL,LOW(METBIN+3)
LDI YH,HIGH(METBIN+3)
LD AUX1,-Y
SUB AUX1,R0
ST Y,AUX1
LD AUX1,-Y
SBC AUX1,R1
ST Y,AUX1
LD AUX1,-Y
3. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 11
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
SBC AUX1,R2
ST Y,AUX1
BRCS FINDIV
INC AUX2
RJMP RESTAS
; ALMACENAMIENTO DEL DIGITO Y RECUPERACIÓN DEL RESIDUO
FINDIV: ST X+,AUX2
LDI YL,LOW(METBIN+3)
LDI YH,HIGH(METBIN+3)
LD AUX1,-Y
ADD AUX1,R0
ST Y,AUX1
LD AUX1,-Y
ADC AUX1,R1
ST Y,AUX1
LD AUX1,-Y
ADC AUX1,R2
ST Y,AUX1
; FINAL DEL LAZO PARA OBTENER TODOS LOS DÍGITOS
LD R0,Z+ ; EVITA EL BYTE 4 DE LA TABLA
DEC AUX3
BRNE NEWDIG
LDS AUX2,METBIN+2
ST X,AUX2
;
RET
; TABLA DE CONSTANTES PARA LAS DIVISIONES SUCESIVAS
CONST: .DW 1000000,0xF,100000,1,10000,0,1000,0,100,0,10,0
;
.INCLUDE "SUB80CHR.ASM"
;
.EXIT ; FIN DEL MODULO FUENTE
CODIFICACIÓN DE LA SUBRUTINAS CONTENIDAS EN EL ARCHIVO
“SUB80CHR.ASM”
; SUBRUTINAS PARA DISPLAYS DE CRISTAL LÍQUIDO
; DE 4 LÍNEAS CON UN BUS DE 8 BITS
; SEGMENTO DE DATOS o MEMORIA SRAM
.DSEG
BUFFER: .BYTE 10
COLUM: .BYTE 4
; SEGMENTO DE PROGRAMA o MEMORIA FLASH
.CSEG
; ASIGNACIÓN DE ETIQUETAS PARA EL MANEJO DEL DISPLAY
.EQU BUSSAL = PORTC ; BUS PARA ESCRITURA
.EQU BUSINP = PINC ; BUS PARA LECTURA
.EQU CONTROL = PORTD ; LÍNEAS DE CONTROL
.EQU ENABLE = PD7 ; HABILITACIÓN
.EQU RW = PD6 ; LEER=1 ESCRIBIR=0
.EQU RS = PD5 ; DATOS=1 COMANDO=0
; SUBRUTINA DE INICIALIZACIÓN DEL LCD CON BUS DE 8 BITS
LCDRST: LDI AUX1,0xFF ; BUS DEL LCD COMO SALIDA
OUT DDRC,AUX1
LDI AUX1,0xE0 ; LINEAS DE CONTROL DEL LCD
OUT DDRD,AUX1
;
LDI ZL,LOW(TBLLCD<<1)
LDI ZH,HIGH(TBLLCD<<1)
LDI AUX2,5
4. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 12
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
LCDRST1:LPM AUX1,Z+
RCALL WRTCMD
DEC AUX2
BRNE LCDRST1
RET
TBLLCD: .DB 0x33,0x32,0x38,0x06,0x0E,0x00
; SUBRUTINA PARA ESCRIBIR UN MENSAJE EN EL LCD
WRTMSJ: LDI AUX1,0x80
RCALL WRTCMD
RCALL WRTLIN
LDI AUX1,0xC0
RCALL WRTCMD
RCALL WRTLIN
LDI AUX1,0x94
RCALL WRTCMD
RCALL WRTLIN
LDI AUX1,0xD4
RCALL WRTCMD
RCALL WRTLIN
RET
; SUBRUTINA PARA ESCRIBIR UNA LINEA DE 20 CARACTERES
WRTLIN: LDI AUX2,20
WRTLIN1:LPM AUX1,Z+
RCALL WRTDAT
DEC AUX2
BRNE WRTLIN1
RET
; SUBRUTINA PARA ESCRIBIR UN NÚMERO DESDE EL BUFFER
WRTNUM: RCALL POSCUR
LDI XL,LOW(BUFFER)
LDI XH,HIGH(BUFFER)
CLR AUX3
WRTNUM1:LD AUX1,X+
CPI AUX1,0
BRNE WRTNUM2
CPI AUX3,0
BREQ WRTNUM3
WRTNUM2:INC AUX3
RCALL WRTDIG
WRTNUM3:CPI XL,LOW(BUFFER)+10
BRNE WRTNUM1
CPI AUX3,0
BRNE WRTNUM4
RCALL WRTDIG
WRTNUM4:RET
; SUBRUTINA PARA ESCRIBIR UN CARACTER
WRTCHR: RJMP WRTDAT
; SUBRUTINA PARA ESCRIBIR UN BYTE
WRTBYT: PUSH AUX1
SWAP AUX1
RCALL WRTDIG
POP AUX1
RCALL WRTDIG
RET
; SUBRUTINA PARA ESCRIBIR UN DIGITO
WRTDIG: ANDI AUX1,0x0F
ORI AUX1,0x30
CPI AUX1,0x3A
BRCS WRTDAT
LDI AUX2,7
ADD AUX1,AUX2
5. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 13
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
RJMP WRTDAT
; SUBRUTINA PARA MOSTRAR EL CURSOR
ONCUR: LDI AUX1,0x0E
RJMP WRTCMD
; SUBRUTINA PARA APAGAR EL CURSOR
OFFCUR: LDI AUX1,0x0C
RJMP WRTCMD
; SUBRUTINA PARA QUE PARPADEE EL CARACTER Y MOSTRAR EL CURSOR
TITCHR: LDI AUX1,0x0F
RJMP WRTCMD
; SUBRUTINA PARA QUE PARPADEE EL CARACTER
TITCUR: LDI AUX1,0x0D
RJMP WRTCMD
; SUBRUTINA PARA MOVER EL CURSOR EN 80 CARACTERES
POSCUR: CPI AUX1,20
BRCS POSCUR4
SUBI AUX1,20
CPI AUX1,20
BRCS POSCUR3
SUBI AUX1,20
CPI AUX1,20
BRCS POSCUR2
SUBI AUX1,20
CPI AUX1,20
BRCS POSCUR1
RET
POSCUR1:LDI AUX2,0xD4
RJMP POSCUR5
POSCUR2:LDI AUX2,0x94
RJMP POSCUR5
POSCUR3:LDI AUX2,0xC0
RJMP POSCUR5
POSCUR4:LDI AUX2,0x80
POSCUR5:ADD AUX1,AUX2
RJMP WRTCMD
; SUBRUTINA PARA ESCRIBIR UN COMANDO
WRTCMD: CBI CONTROL,RS
RJMP WRTDAT1
; SUBRUTINA PARA ESCRIBIR UN DATO
WRTDAT: SBI CONTROL,RS
WRTDAT1:CBI CONTROL,RW
OUT BUSSAL,AUX1
SBI CONTROL,ENABLE
CBI CONTROL,ENABLE
RCALL BUSY
RET
; SUBRUTINA QUE ESPERA MIENTRAS EL LCD ESTÁ OCUPADO
BUSY: LDI AUX1,0x00
OUT DDRC,AUX1
CBI CONTROL,RS
SBI CONTROL,RW
BUSY1: SBI CONTROL,ENABLE
NOP
IN AUX1,BUSINP
CBI CONTROL,ENABLE
SBRC AUX1,7
RJMP BUSY1
LDI AUX1,0xFF
OUT DDRC,AUX1
RET
; SUBRUTINA PARA UN TECLADO 16 TECLAS
6. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 14
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
.EQU KEYBC = PORTC ; COLUMNAS DEL TECLADO
.EQU KEYBF = PINB ; FILAS DEL TECLADO
; NUEVOS CÓDIGOS PARA EL TECLADO
.EQU S_MAS = 10 ; TECLA DEL SIGNO MAS
.EQU S_CLR = 14 ; TECLA DEL SIGNO CLEAR
.EQU S_IGUAL =15 ; TECLA DEL SIGNO IGUAL
; LECTURA DE LAS COLUMNAS
TECLAS: LDI AUX1,0x00
OUT DDRB,AUX1 ; FILAS DEL TECLADO (ENTRADAS)
LDI AUX1,0xF0
OUT PORTB,AUX1 ; FILAS DEL TECLADO (PULL-UP)
;
LDI YL,LOW(COLUM)
LDI YH,HIGH(COLUM)
LDI AUX3,4
LDI AUX2,0B11111110
TECLA1: LDI AUX1,0x0F
AND AUX1,AUX2
OUT KEYBC,AUX1
SEC
ROL AUX2
IN AUX1,KEYBF
SBR AUX1,0B00001111
ST Y+,AUX1
DEC AUX3
BRNE TECLA1
; CHEQUEO DE TECLA PRESIONADA
LDI YL,LOW(COLUM)
LDI YH,HIGH(COLUM)
LDI AUX3,1
LDI AUX2,0
TECLA2: LD AUX1,Y+
CPI AUX1,$FF
BREQ TECLA3
INC AUX2
PUSH AUX1
PUSH AUX3
TECLA3: INC AUX3
CPI AUX3,5
BRNE TECLA2
CPI AUX2,0
BRNE TECLA4
CLT
RJMP TECLAS
; TECLA YA PROCESADA
TECLA4: POP AUX3
POP AUX1
BRTS TECLAS
; UBICACIÓN DE LA TECLA EN LA MATRIZ
CPI AUX2,1
BRNE TECLAS
SET
CLR AUX2
TECLA5: INC AUX2
SEC
ROL AUX1
BRCS TECLA5
TECLA6: DEC AUX3
BREQ TECLA7
LDI AUX1,4
ADD AUX2,AUX1
7. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 15
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
RJMP TECLA6
; DECODIFICACIÓN DEL TECLADO
TECLA7: LDI ZL,LOW(TBLKB<<1)
LDI ZH,HIGH(TBLKB<<1)
ADD ZL,AUX2
CLR AUX1
ADC ZH,AUX1
LPM AUX1,Z
RET
; TECLADO DE CALCULADORA DEL PROTEUS
;TBLKB: .DB 0xFF,7,4,1,14,8,5,2,0,9,6,3,15,13,12,11,10,0xFF
; TECLADO DE 4x4 CON ASTERISCO Y NUMERAL
TBLKB: .DB 0xFF,1,4,7,14,2,5,8,0,3,6,9,15,10,11,12,13,0xFF
; SUBRUTINA PARA EL INGRESO DE UN NÚMERO
INPUT: MOV R19,AUX1 ; POSICIÓN
MOV R20,AUX2 ; DÍGITOS
ADD AUX1,AUX2
DEC AUX1
MOV R21,AUX1 ; POSICION + DIGITOS -1
;
LDI XL,LOW(BUFFER)
LDI XH,HIGH(BUFFER)
LDI AUX1,0
LDI AUX2,10
INPUT1: ST X+,AUX1
DEC AUX2
BRNE INPUT1
;
MOV AUX1,R19
RCALL POSCUR
MOV R19,R20
RCALL ONCUR
INPUT2: RCALL TECLAS
CPI AUX1,S_CLR
BRNE INPUT4
CP R19,R20
BREQ INPUT2
MOV AUX1,R21
SUB AUX1,R19
PUSH AUX1
RCALL POSCUR
LDI AUX1,' '
RCALL WRTCHR
POP AUX1
RCALL POSCUR
INC R19
LDI YL,LOW(BUFFER+8)
LDI YH,HIGH(BUFFER+8)
LDI AUX3,9
INPUT3: LD AUX1,Y
STD Y+1,AUX1
DEC YL
DEC AUX3
BRNE INPUT3
CLR AUX1
STS BUFFER,AUX1
RJMP INPUT2
INPUT4: CPI AUX1,S_MAS
BRCS INPUT5
CPI AUX1,S_IGUAL
BRNE INPUT2
8. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 16
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
RET
INPUT5: MOV AUX3,R19
CPI AUX3,0
BREQ INPUT2
PUSH AUX1
LDI YL,LOW(BUFFER)
LDI YH,HIGH(BUFFER)
LDI AUX3,9
INPUT6: LDD AUX1,Y+1
ST Y+,AUX1
DEC AUX3
BRNE INPUT6
POP AUX1
STS BUFFER+9,AUX1
RCALL WRTDIG
DEC R19
RJMP INPUT2
; SUBRUTINA QUE DEJA PASAR 1 SEGUNDO CON 1MHz DE CLOCK
; 1'000.000 microseg = 333333 REPETICIONES DEL LAZO
; 333333 = (5 * 256 * 256) + (22 * 256) + 21
; 333333 = (((5 * 256) + 22) *256) + 21
UNSEG: LDI AUX1,5+1
LDI AUX2,22+1
LDI AUX3,21
UNSEG1: DEC AUX3 ; 1 CICLO DE MÁQUINA
BRNE UNSEG1 ; 2 CICLOS DE MÁQUINA
DEC AUX2
BRNE UNSEG1
DEC AUX1
BRNE UNSEG1
UNSEG2: RET
EJEMPLOS DE COMPROBACIÓN: en los siguientes gráficos obtenidos por
capturas de pantallas del simulador PROTEUS, se puede apreciar la transformación de
millas a metros para valores hasta de 999, que inclusive no es necesario ingresar los tres
dígitos como en los casos de 99 y 9.
9. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 17
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
10. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 18
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
MODIFICACIÓN DEL CIRCUITO PARA CONECTAR EL LCD CON UN BUS
DE 4 BITS AL MICROCONTROLADOR
Al realizar esta conexión se dejan libres 20 líneas de los Pórticos del microcontrolador;
además, se ha incluido un zumbador o buzzer con el fin de tener una señal audible que
se escucha al momento de presionar las teclas como sonido de confirmación. Estas
modificaciones no implican cambios en el programa principal solo en algunas
subrutinas, que están contenidas en el archivo secundario “SUB4B80CH.ASM”. Lo que
se modifica frente al archivo secundario anterior es:
• La asignación de etiquetas que responda a la nueva conexión del LCD.
• La subrutina LCDRST para configurar al LCD de que trabaje con bus de 4 bits.
• Las subrutinas WRTCMD escritura de un comando, WRTDAT escritura de un
dato y BUSY chequeo de la bandera de ocupado, que deben realizar sus tares
mediante medios bytes o nibles.
• La parte final de la subrutina TECLAS para generar el sonido de confirmación.
• También se incluyen las subrutinas DLY45 retardo de 45 milisegundos, TICK
sonido corto, TICKL sonido largo y TICK2 dos sonidos largos.
; ASIGNACIÓN DE ETIQUETAS PARA EL MANEJO DEL DISPLAY
.EQU BUSSAL = PORTC ; BUS PARA ESCRITURA
.EQU BUSINP = PINC ; BUS PARA LECTURA
.EQU ENABLE = 8 ; (PC3) HABILITACIÓN
.EQU RW = 4 ; (PC2) LEER=1 ESCRIBIR=0
.EQU RS = 2 ; (PC1) DATOS=1 COMANDO=0
.EQU BUZZER = PC0 ; SUENA =1 SILENCIO = 0
; SUBRUTINA DE INICIALIZACIÓN DEL LCD CON BUS DE 4 BITS
LCDRST: LDI AUX1,0xFF ; BUS DEL LCD COMO SALIDA
OUT DDRC,AUX1
LDI AUX1,0x38 ; 0x30 + ENABLE
OUT BUSSAL,AUX1
11. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 19
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
RCALL DLY45
LDI AUX1,0x38 ; 0x30 + ENABLE
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
RCALL DLY45
RCALL DLY45
RCALL DLY45
LDI AUX1,0x38 ; 0x30 + ENABLE
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
RCALL DLY45
LDI AUX1,0x28 ; 0x20 + ENABLE
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
RCALL BUSY
;
LDI ZL,LOW(TBLLCD<<1)
LDI ZH,HIGH(TBLLCD<<1)
LDI AUX2,3
LCDRST1:LPM AUX1,Z+
RCALL WRTCMD
DEC AUX2
BRNE LCDRST1
RET
TBLLCD: .DB 0x28,0x06,0x0E,0x00
; SUBRUTINA PARA ESCRIBIR UN COMANDO
WRTCMD: PUSH AUX1
ANDI AUX1,0xF0
SBR AUX1,ENABLE
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
POP AUX1
ANDI AUX1,0x0F
SWAP AUX1
SBR AUX1,ENABLE
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
RCALL BUSY
RET
; SUBRUTINA PARA ESCRIBIR UN DATO
WRTDAT: PUSH AUX1
ANDI AUX1,0xF0
SBR AUX1,ENABLE + RS
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
POP AUX1
ANDI AUX1,0x0F
SWAP AUX1
SBR AUX1,ENABLE + RS
OUT BUSSAL,AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
12. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 20
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
RCALL BUSY
RET
; SUBRUTINA QUE ESPERA MIENTRAS EL LCD ESTÁ OCUPADO
BUSY: LDI AUX1,0x0F
OUT DDRC,AUX1
LDI AUX1,0x04 ; PARA LEER
BUSY1: SBR AUX1,ENABLE
OUT BUSSAL,AUX1
NOP
IN AUX3,BUSINP
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
;
SBR AUX1,ENABLE
OUT BUSSAL,AUX1
PUSH AUX1
IN AUX1,BUSINP
POP AUX1
CBR AUX1,ENABLE
OUT BUSSAL,AUX1
;
SBRC AUX3,7
RJMP BUSY1
LDI AUX1,0xFF
OUT DDRC,AUX1
RET
; DECODIFICACIÓN DEL TECLADO
TECLA7: LDI ZL,LOW(TBLKB<<1)
LDI ZH,HIGH(TBLKB<<1)
ADD ZL,AUX2
CLR AUX1
ADC ZH,AUX1
PUSH AUX2
RCALL TICK
POP AUX2
LPM AUX1,Z
RET
; SUBRUTINAS DELAY DE 4.5 mSeg
DLY45: LDI AUX1,6
DLY01: CLR AUX2
DLY02: DEC AUX2
BRNE DLY02
DEC AUX1
BRNE DLY02
RET
; SUBRUTINA PARA EMITIR UN TICK CORTO
TICK: SBI BUSSAL,BUZZER
LDI AUX1,100
TICK1: RCALL DLY01
CBI BUSSAL,BUZZER
RET
; SUBRUTINA PARA EMITIR UN TICK LARGO
TICKL: SBI BUSSAL,BUZZER
CLR AUX1
RJMP TICK1
; SUBRUTINA PARA EMITIR DOS TICKS LARGOS
TICK2: RCALL TICKL
LDI AUX1,100
RCALL DLY01
13. SISTEMAS MICROPROCESADOS: Subrutinas para Displays de Cristal Líquido
Página 21
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
RCALL TICKL
RET
Estas tres últimas subrutinas también pueden ser utilizadas en los programas principales
para llamar la atención al finalizar las distintas etapas que lo conforman.