Microcontroladores 7ma Parte
-
Upload
jair-eviel-barrios-deluquez -
Category
Documents
-
view
966 -
download
0
description
Transcript of Microcontroladores 7ma Parte
MICROCONTROLADORES
M.Sc. César Augusto Peña C.
Profesor de planta – Ingeniería mecatrónicaUniversidad de Pamplona
PIC 16F877
PIC MEMORYFLASH PROGRAM RAM DATA EEPROM DATA
16F877 8000 X 14 368 X 8 256 X 816F874 4000 X 14 192 X 8 128 X 8
Max. Vel: 20 Mhz clock inputPila de 8 nivelesVoltaje de operación: 2.0V a 5.5VCorriente modo fuente/sumidero: 24mATemporizador/contador: Timer0 (8-bit),Timer1 (16-bit), Timer2: (8-bit)2 Modulo CCP: captura, comparación, PWMComunicación Serial, Paralela, I2CConversión Análoga/Digital
MEMORIA RAM
LCD
La pantalla de cristal liquido o LCD (Liquid Crystal Display) es un dispositivo µControlado de visualización gráfico para la presentación de caracteres, símbolos o incluso dibujos (en algunos modelos).
Dispone de 2 filas de 16 caracteres cada una y cada carácter dispone de una matriz de 5x7 puntos (pixels), aunque los hay de otro número de filas y caracteres. Este dispositivo esta gobernado internamente por un microcontrolador Hitachi 44780 y regula todos los parámetros de presentación, este modelo es comúnmente el más usado y esta información se basará en el manejo de este u otro LCD compatible.
CARACTERISTICAS PRINCIPALES: LCD
• Pantalla de caracteres ASCII, además de los caracteres Kanji y
Griegos.
• Desplazamiento de los caracteres hacia la izquierda o la derecha.
• Proporciona la dirección de la posición absoluta o relativa del
caracter.
• Memoria de 40 caracteres por línea de pantalla.
• Movimiento del cursor y cambio de su aspecto.
•Permite que el usuario pueda programar 8 caracteres.
•Conexión a un procesador usando un interfaz de 4 u 8 bits
CARACTERES LCD
MONTAJE LCD
PIN LCD
SÍMBOLO PIN PIC
1 VSS ---
2 Vdd ---
3 VO ---
4 RS RD5
5 R/W RD6
6 E RD7
7-14 D<0:7> RB <0:7>
DESCRIPCIÓN DE PINES PIN LCD
SÍMBOLO DESCRIPCIÓN
1 VSS Tierra de alimentación GND
2 Vdd Alimentacion de +5V CC
3 VO Contraste del cristal liquido. ( 0 a +5V )
4 RS Selección del registro de control/registro de datos:RS=0 Seleccion registro de controlRS=1 Seleccion registro de datos
5 R/W Señal de lectura/escritura:R/W=0 Escritura (Write)R/W=1 Lentura (Read)
6 E Habilitacion del modulo:E=0 Modulo desconectadoE=1 Modulo conectado
7-14 D<0:7> Bus de datos bidireccional.
POSICIÓN DE LOS CARACTERES EN LA DIRECCIÓN DDRAM
1 2 3 4 5 6 7 5 9 10 11 12 13 14 15 16 17 18 19 40
80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 A7
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 E7
ZONA DE VISUALIZACIÓN ZONA VIRTUAL
INSTRUCCIÓN CLEAR DISPLAYTiempo de ejecución: 1.64mS
0 0 1 0 0 0 0 0 0 0 1
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Borra el módulo LCD y coloca el cursor en la primera posición (dirección 80h). Pone el bit I/D a 1 por defecto (autoincremento de la posición del cursor).
Posición Cursor (en este caso invisible)
INSTRUCCION HOMERS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Tiempo de ejecución: 1.64mS
0 0 1 0 0 0 0 0 0 1 X
Coloca el cursor en la posición de inicio (dirección 80h) y hace que el display comience a desplazarse desde la posición original. El contenido de la memoria RAM de datos de visualización (DD RAM) permanece invariable. La dirección de la memoria RAM de datos para la visualización (DD RAM) es puesta a 80h
Posición Cursor (en este caso invisible)
INSTRUCCIÓN DISPLAY ON/OFF CONTROL
Tiempo de ejecución: 40µS
0 0 1 0 0 0 0 1 D C B
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este último debe o no parpadear (B).
DISPLAY OFF ( D = 0 )DISPLAY ON ( D = 1 )
INSTRUCCIÓN DISPLAY ON/OFF CONTROL
Tiempo de ejecución: 40µS
CURSOR OFF ( C = 0 )
0 0 1 0 0 0 0 1 D=1 C B=0
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este último debe o no parpadear (B).
CURSOR ON ( C = 1 )
INSTRUCCIÓN DISPLAY ON/OFF CONTROL
Tiempo de ejecución: 40µS
0 0 1 0 0 0 0 1 D=1 C=1 B
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este último debe o no parpadear (B).
PARPADEO ON ( B = 1 )PARPADEO OFF ( B = 0 )
INSTRUCCIONES LCDENTRY MODE SET Tiempo de ejecución: 40µS
0 0 1 0 0 0 0 0 1 I/D S
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Establece la dirección de movimiento del cursor y especifica si la visualización se va desplazando a la siguiente posición de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la DD RAM o CG RAM. Para visualizar normalmente poner el bit S=0
FUNCTION SETTiempo de ejecución: 40µS
0 0 1 0 0 1 DL N F X X
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Establece el tamaño de interfase con el bus de datos (DL), número de líneas del display (N) y tipo de carácter (F)
DESPLAZAR CURSOR O PANTALLARS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Tiempo de ejecución: 40µS
0 0 1 0 0 0 1 S/C R/L X X
Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualización DD RAM (S/C = 1 Desplaza el display y S/C = 0Mueve el cursor). Ejemplo de introducción de datos después de configurar S/C = 0.
1 2
43
DESPLAZAR CURSOR O PANTALLARS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Tiempo de ejecución: 40µS
0 0 1 0 0 0 1 S/C R/L X X
Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualización DD RAM (S/C = 1 Desplaza el display y S/C = 0Mueve el cursor). Ejemplo de introducción de datos después de configurar S/C = 1.
1 2
43
DESPLAZAR PANTALLARS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
Tiempo de ejecución: 40µS
0 0 1 0 0 0 1 S/C R/L X X
Ejemplo: Mover la pantalla 2 veces y colocar el carácter “!” (S/C = 1)
31
42
INSTRUCCIONES LCD
0 0 1 1 Dirección de la DD RAM
Los caracteres o datos que se van visualizando, se van almacenando en una memoria llamada DDRAM para de aquí pasar a la pantalla.
Mediante esta instrucción se establece la dirección de la memoria DDRAM a partir de la cual se irán almacenando los datos a visualizar. Ejecutando este comando, todos los datos que se escriban o lean posteriormente lo harán desde esta memoria DD RAM. Las direcciones de la 80h a la 8Fh corresponden con los 16 caracteres del primerrenglón y de la C0h a la CFh con los 16 caracteres del segundo renglón, para este modelo de LCD.
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0SET THE DD RAM ADDRESS Tiempo de ejecución: 40µS
INSTRUCCIONES LCD
0 1 1 BF Dirección de la CG RAM o DD RAM
Cuando el modulo LCD esta ejecutando cualquiera de estas instrucciones, tarda un cierto tiempo de ejecución en el que no se debe mandar ninguna instrucción. Para ello dispone de un flagllamado BUSY (ocupado) que indica que se está ejecutando una instrucción previa.
Esta instrucción de lectura informa del estado de dicho flag, además proporciona el valor del contador de direcciones de la CGRAM o de la DD RAM según la última que se haya empleado.
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0READ BUSY FLAG & ADDRESS Tiempo de ejecución: 40µS
INSTRUCCIONES LCD
0 0 1 0 1 Dirección de la CG RAM
El módulo LCD además de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir 4 u 8 caracteres gráficos. La composición de estos caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carácter gráfico definido por el usuario se compone de 16 u 8 bytes que se almacenan en sucesivas posiciones de la CG RAM.
Mediante esta instrucción se establece la dirección de memoria CG RAM a partir de la cual se irán almacenando los bytes que definen un carácter gráfico. Ejecutando este comando todos los datos que se lean o escriban posteriormente, lo hacen desde esta memoria CG RAM
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0SET THE CG RAM ADDRESS Tiempo de ejecución: 40µS
INSTRUCCIONES LCD
1 0 1 Código ASCII o byte del carácter gráfico
Mediante este comando se escribe en la memoria DD RAM los datos que se quieren presentar en pantalla y que serán los diferentes códigos ASCII de los caracteres a visualizar.
Igualmente se escribe en la memoria CG RAM los diferentes bytes que permiten confeccionar caracteres gráficos a gusto del usuario.
El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento DD RAM o la de direccionamiento CG RAM.
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0WRITE DATA TO CG OR DD RAM Tiempo de ejecución: 40µS
INSTRUCCIONES LCD
1 1 1 Código ASCII o byte del carácter gráfico
Mediante este comando se lee de la memoria DD RAM los datos que haya almacenados y que serán los códigos ASCII de los caracteres almacenados.
Igualmente se lee de la memoria CG RAM los diferentes bytes con los que se ha confeccionado un determinado carácter gráfico.
El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instrucción de direccionamiento de la DDRAM o la de direccionamiento CG RAM.
RS R/W E DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0READ DATA FROM CG RAM OR DD RAM Tiempo de ejecución: 40µS
ABREVIATURAS EMPLEADAS S 1 - Desplaza la visualización cada vez que se escribe un dato
0 - Modo normal
I/D 1 - Incremento del cursor0 - Decremento del cursor
S/C 1 - Desplaza el display0 - Mueve el cursor
R/L 1 - Desplazamiento a la derecha0 - Desplazamiento a la izquierda
BF 1 - Módulo ocupado0 - Módulo disponible
DL 1 - Bus de datos de 8 bits0 - Bus de datos de 4 bits
N 1 - LCD de dos líneas0 - LCD de una línea
F 1 - Carácter de 5 x 10 puntos0 - Carácter de 5 x 7 puntos
B 1 - Parpadeo del cursor ON0 - Parpadeo del cursor OFF
C 1 - Cursor ON0 - Cursor OFF
D 1 - Display ON0 - Display OFF
X Indeterminado
SUBRUTINAS LCD
SUBRUTINA FUNCIÓN
LCD_E Genera un pulso de 1µS por PORTD,7 patita 6 del LCD (Enable) . Si se usa una frecuencia diferente de 4MHz habrá que ajustar este tiempo
LCD_BUSY Chequea si el LCD esta ocupado (BUSY) y retorna de la rutina cuando ya no lo este.
LCD_REG Pone al LCD en modo de recibir comandos, espera a que no este ocupado y va a LCD_E.
SUBRUTINAS LCD
SUBRUTINA FUNCIÓN
LCD_DATOS Pone el LCD en modo datos y manda el bytepresente en W que será mostrado en pantalla (carácter ASCII).
LCD_INI Inicialización del modulo LCD según los tiempo marcados por el fabricante. Bus de 8 bits, 2 líneas de visualización y caracteres de 5 x 7 puntos.
UP_LCD Configura los puertos del PIC para ser usados con el LCD.
PROGRAMA LCD;AUTOR: CÉSAR AUGUSTO PEÑA C;PIC: 16F877A;FUNCION: Visualiza un mesaje por un LCD conectado a RB<0:7> (datos) y RBD<5:7>; donde RS, R/W y #E (LCD) se conectan respectivamente a RD5, RD6 y RD7
;CARACTERISTICAS: ;OSCILLATOR: XT;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;BROWN OUT DETECT: OFF;LOW VOLTAGE PROGRAM: DISABLE;FLASH PROGRAM WRITE: WRITE PROTECTION OFF;BACKGROUND DEBUG: DISABLED;DATA EE READ PROTECT: OFF;CODE PROTECT: OFF
list p=16f877a ;Tipo de procesadorINCLUDE "P16F877A.Inc" ;Librerias de registros del PIC
;**************************** DEFINICION DE REGISTROS ***********************************CBLOCK .32
DATO_A, DATO_B ;VARIABLES CONTROL LCDendc
;****************************************************************************************
PROGRAMA LCD
INICIO bcf STATUS,RP1bsf STATUS,RP0bcf 1,7 ;Resistencias pull up ACTIVASbcf TRISE,PSPMODE ;Desactiva puerto paralelo esclavo movlw b'00000010'movwf TRISD ;puerto D como salida y el RD1 para RFmovlw b'00000011' ;Configura puerto C para verificar sensoresmovwf TRISCclrf TRISE ;puerto E como salidabcf STATUS,RP0 ;Banco 0bcf STATUS,RP1
call UP_LCD ;Configura el PIC para usar el LCDcall LCD_INI ;Inicia el LCD
call MENSAJE_CESAR_UNIPAMPLONACICLO nop
goto CICLO
PROGRAMA LCDMENSAJE_CESAR_UNIPAMPLONA
;_____________PRIMERA LINEA DEL DISPLAY____________________movlw 'C' ;1call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'E' ;2call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'S' ;3call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A' ;4call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'R' ;5call LCD_DATOS ;Visualiza Valor cargado en Wmovlw ' ' ;6call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P' ;7call LCD_DATOS ;Visualiza Valor cargado en Wmovlw '.' ;8call LCD_DATOS ;Visualiza Valor cargado en Wmovlw ' ' ;9call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'C' ;10call LCD_DATOS ;Visualiza Valor cargado en Wmovlw '.' ;11call LCD_DATOS ;Visualiza Valor cargado en W
PROGRAMA LCDmovlw d'192' ;SEGUNDA LINEA DEL DISPLAY
call LCD_REGmovlw 'U' ;1call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'N' ;2call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'I' ;3call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P' ;4call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A' ;5call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'M' ;6call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P' ;7call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'L' ;8call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'O' ;9call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'N' ;10call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A' ;11call LCD_DATOS ;Visualiza Valor cargado en WRETURN
include "LCD_LIB_CAPC_877_F.lib"
END
LIBRERÍA DE LCD;------------------------------------------------------------------------;LIBRERIAS DE RUTINAS CREADAS O MODIFICADAS POR CÉSAR PEÑA;TEMA: CONTROL LCD;FUNCION: Controlar LCD conectado a RB<0:7> (datos) y RBD<5:7>; donde RS, R/W y #E (LCD) se conectan respectivamente a RD5, RD6 y RD7;------------------------------------------------------------------------
;------------------------------------------------------------------------;UP_LCD: CONFIGURACION PIC PARA EL LCD.
UP_LCD bsf STATUS,5 ;BANCO 1bcf TRISE,PSPMODE ;DESACTIVA PUERTO PARALELO ESCLAVO
;AFECTA TAMBIEN EL PUERTO Dbcf PORTD,5 ;RD5 COMO SALIDAbcf PORTD,6 ;RD6 COMO SALIDAbcf PORTD,7 ;RD7 COMO SALIDAclrf TRISB ;PUERTO B COMO SALIDA bcf STATUS,5 ;BANCO 0clrf INTCON ;DESACTIVA INTERRUPCIONESbcf PORTD,5 ;RS = 0 SELECCION DE REGISTRO DE CONTROLbcf PORTD,7 ;E = 0 LCD INABILITADOreturn
LIBRERÍA DE LCD;LCD_INI: INICIALIZACION LCD.;LCD_INI movlw b'00111000' ;ENVIA COMANDO FUNCTION SET
call LCD_REG ;(BUS DE 8 BITS, 2 LINEAL, CARACTER 5X7)call DELAY_5MS ;5mS.(ESPECIFICACIÓN DE FABRICANTE)movlw b'00001100' ;LCD ON, CURSOR OFF, PARPADEO CURSOR OFFcall LCD_REG ;ENVIA COMANDOcall DELAY_5MS ;5ms.(Especificación de Fabricante)movlw b'00000001' ;BORRA PANTALLAcall LCD_REG ;ENVIA COMANDOcall DELAY_5MS ;5ms.(Especificación de Fabricante)return
;-------------------------------------------------------------------------;LCD_DATO: ESCRITURA DE DATOS EN DDRAM o CGRAM
LCD_DATOS bcf PORTD,5 ;RS = 0 SELECCION DE REGISTRO DE CONTROLmovwf PORTB ;VALOR ASCII A SACAR POR RBcall LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCDbsf PORTD,5 ;RS = 1 SELECCION DE REGISTRO DE DATOSgoto LCD_E ;GENERA PULSO EN LA SEÑAL E (HABLILITACIÓN LCD)
;------------------------------------------------------------------------;LCD_REG: ESCRITURA DE COMANDOS LCD.;LCD_REG bcf PORTD,5 ;RS = 0 SELECCION DE REGISTRO DE CONTROL
movwf PORTB ;SACA EL CODIGO DE LA INSTRUCCIONcall LCD_BUSY ;ESPERA A QUE SE LIBERE EL LCDgoto LCD_E ;GENERA PULSO EN LA SEÑAL E (HABLILITACIÓN LCD)
LIBRERÍA DE LCD;-------------------------------------------------------------------------;LCD_E: PULSO DE HABILITACION;LCD_E bsf PORTD,7 ;E = 1 LCD HABILITADO
nop ;ESPERA 1 uSbcf PORTD,7 ;E = 0 LCD INABILITADOreturn
;------------------------------------------------------------------------;LCD_BUSY: VERIFICACION QUE EL LCD ESTE NO ESTE OCUPADO.;LCD_BUSY bsf PORTD,6 ;R/W = 1 MODO LECTURA
bsf STATUS,5 ;BANCO 1movlw b'11111111' movwf TRISB ;PUERTO B COMO ENTRADAbcf STATUS,5 ;BANCO 0bsf PORTD,7 ;E = 1 LCD HABILITADOnop
L_BUSY btfsc PORTB,7 ;CHEQUEA BIT DE BUSYgoto L_BUSYbcf PORTD,7 ;E = 0 LCD INABILITADObsf STATUS,5 ;BANCO 1clrf TRISB ;PUERTO B COMO SALIDAbcf STATUS,5 ;BANCO 0bcf PORTD,6 ;R/W = 0 MODO ESCRITURAreturn
LIBRERÍA DE LCD;------------------------------------------------------------------------;DELAY_5MS: Genera una temporizaci¢n de 5 mS;DELAY_5MS movlw 0x1a
movwf DATO_B ;Carga la variable DATO_Bclrf DATO_A ;Carga la variable DATO_A
DELAY_1 decfsz DATO_A,1 ;Decrementa la variable DATO_Agoto DELAY_1decfsz DATO_B,1 ;Decrementa la variable DATO_Bgoto DELAY_1return
;------------------------------------------------------------------------
PROGRAMA II - LCD;AUTOR: CÉSAR AUGUSTO PEÑA C;PIC: 16F877A;FUNCION: Visualiza un mesaje por un LCD conectado a RB<0:7> (datos) y RBD<5:7>; donde RS, R/W y #E (LCD) se conectan respectivamente a RD5, RD6 y RD7; despues de visualizar el mensaje realiza varios comandos de configuración del LCD; consecutivamente a los pulsos recibidos RA2 (Pulsador)
;CARACTERISTICAS: ;OSCILLATOR: XT;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;BROWN OUT DETECT: OFF;LOW VOLTAGE PROGRAM: DISABLE;FLASH PROGRAM WRITE: WRITE PROTECTION OFF;BACKGROUND DEBUG: DISABLED;DATA EE READ PROTECT: OFF;CODE PROTECT: OFF
list p=16f877a ;Tipo de procesadorINCLUDE "P16F877A.Inc" ;Librerias de registros del PIC
;**************************** DEFINICION DE REGISTROS ***********************************CBLOCK .32
DATO_A, DATO_B ;VARIABLES CONTROL LCDREG11, REG21, REG31RAUX2
endc;****************************************************************************************
PROGRAMA II - LCDINICIO bcf STATUS,RP1
bsf STATUS,RP0movlw b'00000110' ;configura puerto A y E como E/S digitalesmovwf ADCON1 ;MUEVE A ADCON1bcf 1,7 ;Resistencias pull up ACTIVASbcf TRISE,PSPMODE ;Desactiva puerto paralelo esclavo movlw b'00000010'movwf TRISD ;puerto D como salida y el RD1 para RFmovlw b'00000011' ;Configura puerto C para verificar sensoresmovwf TRISCclrf TRISE ;puerto E como salidabcf STATUS,RP0 ;Banco 0bcf STATUS,RP1
call UP_LCD ;Configura el PIC para usar el LCDCICLO call LCD_INI ;Inicia el LCD
call MENSAJE_CESAR_UNIPAMPLONAcall RETRASO
movlw .192 ;posiciona en cursorcall LCD_REG
PROGRAMA II - LCD;DISPLAY OFF
movlw b'00001000' ;Comando Display ON/OFF: OFF, cursor OFF, Parpadeo OFFcall LCD_REGcall RETRASO ;Espera activar pulsardor
;DISPLAY ONmovlw b'00001100' ;Comando Display ON/OFF: ON, cursor OFF, Parpadeo OFFcall LCD_REGcall RETRASO ;Espera activar pulsardor
;CURSOR ONmovlw b'00001110' ;Comando Display ON/OFF: ON, cursor ON, Parpadeo OFFcall LCD_REGcall RETRASO ;Espera activar pulsardor
;CURSOR ON PARPADEO ONmovlw b'00001111' ;Comando Display ON/OFF: ON, cursor ON, Parpadeo ONcall LCD_REGcall RETRASO ;Espera activar pulsardor
;CURSOR EN LA PRIMERA POSICIÓNmovlw b'00000010' ;Comando Homecall LCD_REGcall RETRASO ;Espera activar pulsardor
;CURSOR EN LA ULTIMA POSICIÓN VISIBLEmovlw .207 ; ;se desplaza a la posición respectivacall LCD_REGcall RETRASO ;Espera activar pulsardor
PROGRAMA II - LCD
;REALIZA VARIOS DESPLAZAMIENTOS A LA DERECHAmovlw .45movwf RAUX2
OTRA_AUX2decfsz RAUX2,1goto PRO_AUX2goto SALIR_AUX2
PRO_AUX2 movlw b'00011000' ;desplazamiento: Desplaza pantalla (S=1), R/L=0 (IZQ) ,x ,xcall LCD_REGcall RETARDO1 goto OTRA_AUX2
SALIR_AUX2 nop
goto CICLO
MENSAJE_CESAR_UNIPAMPLONA
;_____________PRIMERA LINEA DEL DISPLAY____________________; movlw .134 ; ;se desplaza a la posición respectiva; call LCD_REG
movlw 'U'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'P'call LCD_DATOS ;Visualiza Valor cargado en W
PROGRAMA II - LCDmovlw .144 ;se desplaza a la posición respectivacall LCD_REGmovlw 'Z'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'O'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'N'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw ' 'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'V'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'I'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'R'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'T'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'U'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'A'call LCD_DATOS ;Visualiza Valor cargado en Wmovlw 'L'call LCD_DATOS ;Visualiza Valor cargado en W
RETURN
PROGRAMA II - LCDRETRASO btfss PORTA,2 ;bucle hasta que se active el pulsador
goto RETRASOcall RETARDO1 ;retardo de 20ms (antirebotes)
RETRASO2 btfsc PORTA,2 ;bucle hasta que se active el pulsadorgoto RETRASO2call RETARDO1 ;retardo de 20ms (antirebotes)return
RETARDO1 movlw .1 ;retardo de 20msmovwf REG11
TRES1 movlw .93movwf REG21
DOS1 movlw .70movwf REG31
UNO1 decfsz REG31,1goto UNO1decfsz REG21,1goto DOS1decfsz REG11,1goto TRES1retlw 0
include "LCD_LIB_CAPC_877_F.lib"
END