Ejercicios 06 subrutinas con LCD continuación

13
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

description

Códificación y pruebas del ejercicio de subrutinas del LCD

Transcript of Ejercicios 06 subrutinas con LCD continuación

Page 1: Ejercicios 06 subrutinas con LCD continuación

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

Page 2: Ejercicios 06 subrutinas con LCD continuación

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

Page 3: Ejercicios 06 subrutinas con LCD continuación

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

Page 4: Ejercicios 06 subrutinas con LCD continuación

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

Page 5: Ejercicios 06 subrutinas con LCD continuación

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

Page 6: Ejercicios 06 subrutinas con LCD continuación

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

Page 7: Ejercicios 06 subrutinas con LCD continuación

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

Page 8: Ejercicios 06 subrutinas con LCD continuación

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.

Page 9: Ejercicios 06 subrutinas con LCD continuación

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

Page 10: Ejercicios 06 subrutinas con LCD continuación

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

Page 11: Ejercicios 06 subrutinas con LCD continuación

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

Page 12: Ejercicios 06 subrutinas con LCD continuación

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

Page 13: Ejercicios 06 subrutinas con LCD continuación

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.