SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
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
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
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
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
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
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
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
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.
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
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
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
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
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.

Contenu connexe

Tendances (20)

Ejercicio 01 Llenar
Ejercicio 01 LlenarEjercicio 01 Llenar
Ejercicio 01 Llenar
 
Funcionamiento del CAD
Funcionamiento del CADFuncionamiento del CAD
Funcionamiento del CAD
 
Ejercicios 07 interrupciones
Ejercicios 07 interrupcionesEjercicios 07 interrupciones
Ejercicios 07 interrupciones
 
19 Conversor A/D
19 Conversor A/D19 Conversor A/D
19 Conversor A/D
 
12 Pórticos de los Atmega
12 Pórticos de los Atmega12 Pórticos de los Atmega
12 Pórticos de los Atmega
 
Ejercicio 07 adicionales de Interrupciones
Ejercicio 07 adicionales de InterrupcionesEjercicio 07 adicionales de Interrupciones
Ejercicio 07 adicionales de Interrupciones
 
Ejercicio 03 Porticos
Ejercicio 03 PorticosEjercicio 03 Porticos
Ejercicio 03 Porticos
 
Ejercicio 04 Calculos
Ejercicio 04 CalculosEjercicio 04 Calculos
Ejercicio 04 Calculos
 
Ejercicio 05 Subrutinas
Ejercicio 05 SubrutinasEjercicio 05 Subrutinas
Ejercicio 05 Subrutinas
 
18 Timers
18 Timers18 Timers
18 Timers
 
17 Interrupciones
17 Interrupciones17 Interrupciones
17 Interrupciones
 
Cables
CablesCables
Cables
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
Primer Laboratorio - Sistemas Digitales I
Primer Laboratorio - Sistemas Digitales IPrimer Laboratorio - Sistemas Digitales I
Primer Laboratorio - Sistemas Digitales I
 

En vedette

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
 
Práctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCDPráctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCDiihhhii
 
Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASMdave
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y tecladoLuis Zurita
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Luis Zurita
 
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMicrocontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMiguel Angel Corona Lòpez
 
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
 

En vedette (10)

Ejercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónEjercicios 04 cálculo continuación
Ejercicios 04 cálculo continuación
 
Práctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCDPráctica III. Mostrar un mensaje en una pantalla LCD
Práctica III. Mostrar un mensaje en una pantalla LCD
 
Abrazar el exito sin brazos!
Abrazar el exito sin brazos!Abrazar el exito sin brazos!
Abrazar el exito sin brazos!
 
Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASM
 
Proyecto3
Proyecto3Proyecto3
Proyecto3
 
Lcd
LcdLcd
Lcd
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2
 
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMicrocontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
 
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
 

Similaire à Ejercicios 06 subrutinas con LCD continuación

Frecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pagFrecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pagjoaquinin1
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03Cristian Ortiz Gómez
 
Microcontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdfMicrocontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdfEdwin4321
 
Interpretadores de Datos Digitales
Interpretadores de Datos DigitalesInterpretadores de Datos Digitales
Interpretadores de Datos DigitalesAlex Vasquez
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
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
 
Puertos de entrada/salida
Puertos de entrada/salidaPuertos de entrada/salida
Puertos de entrada/salidatecautind
 
Puertos de entrada diapositivas
Puertos de entrada diapositivasPuertos de entrada diapositivas
Puertos de entrada diapositivastecautind
 
Finite state machine
Finite state machineFinite state machine
Finite state machineyhap
 

Similaire à Ejercicios 06 subrutinas con LCD continuación (20)

Omron03
Omron03Omron03
Omron03
 
Frecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pagFrecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pag
 
Tarea final
Tarea finalTarea final
Tarea final
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
002 quick s7200-esp
002 quick s7200-esp002 quick s7200-esp
002 quick s7200-esp
 
Microcontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdfMicrocontroladores de microchip pic16f877-en-espanol.pdf
Microcontroladores de microchip pic16f877-en-espanol.pdf
 
Informe n1 micro
Informe n1 microInforme n1 micro
Informe n1 micro
 
M-MAN-1.pdf
M-MAN-1.pdfM-MAN-1.pdf
M-MAN-1.pdf
 
Interpretadores de Datos Digitales
Interpretadores de Datos DigitalesInterpretadores de Datos Digitales
Interpretadores de Datos Digitales
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887Módulo EUSART del PIC16F887
Módulo EUSART del PIC16F887
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Puertos de entrada/salida
Puertos de entrada/salidaPuertos de entrada/salida
Puertos de entrada/salida
 
Puertos de entrada diapositivas
Puertos de entrada diapositivasPuertos de entrada diapositivas
Puertos de entrada diapositivas
 
Pic16 f877
Pic16 f877Pic16 f877
Pic16 f877
 
Finite state machine
Finite state machineFinite state machine
Finite state machine
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 

Plus 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
 
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
 
08 Memoria de los Atmega164P
08 Memoria de los Atmega164P08 Memoria de los Atmega164P
08 Memoria de los Atmega164PJaime E. Velarde
 

Plus de Jaime E. Velarde (10)

20 Portico Serial
20 Portico Serial20 Portico Serial
20 Portico Serial
 
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
 
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
 
08 Memoria de los Atmega164P
08 Memoria de los Atmega164P08 Memoria de los Atmega164P
08 Memoria de los Atmega164P
 
07 Familia Atmega
07 Familia Atmega07 Familia Atmega
07 Familia Atmega
 

Ejercicios 06 subrutinas con LCD continuación

  • 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.