Estoy intentando hace funcionar una pantalla LCD de 16x2 con 4 bits de datos.
En el proteus me funciona y también en el Pic simulator Ide, pero fisicamente no funciona.
El programa es este:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
list P=16F84A
include <P16F84A.INC>
;******************************************************************************************************
;
;VARIABLES
;
;******************************************************************************************************
W EQU 0X00
F EQU 0X01
Z EQU 0X02
TMR0_OPT EQU 0X01
ESTADO EQU 0X03
INTCON EQU 0X0B
PUERTAA EQU 0X05
PUERTAB EQU 0X06
CONTADOR equ 0x0c ;variable del contador,
T1 equ 0x0d ;variable indica el primer valor del tiempo.
T2 equ 0x0e ;variable indica el segundo valor del tiempo.
T3 equ 0x0f ;variable indica el tercer valor del tiempo.
TR equ 0x10 ;variable indica tiempo de retardo.
TEMPO1 equ 0x11 ;variable de los retardos.
CARAS equ 0x12 ;variable de caras a insolar
;******************************************************************************************************
;
;VECTORES DE INICIO
;
;******************************************************************************************************
org 0x00 ;punto del PC al que se va PIC despúes de un reset.
goto INICIO ;ir a INICIO.
;******************************************************************************************************
;
;INICIALIZACION DEL PIC
;
;******************************************************************************************************
INICIO bsf ESTADO,5 ;selección del banco 1.
movlw b'00000000' ;movemos ese dato a W.
movwf PUERTAA ;configuramos PUERTAA como entradas.
clrf PUERTAB ;configuramos PUERTAB como salidas.
movlw b'00000111' ;movemos ese dato a W.
movwf TMR0_OPT ;configuramos el divisor del temporizador.
bcf ESTADO,5 ;selección del banco 0.
clrf PUERTAA ;ponemos a 0 las entradas.
clrf PUERTAB ;ponemos a 0 las salidas.
call LCD_Inicializa
movlw 'H'
call LCD_Caracter
p nop
nop
nop
nop
goto p
include <RETARDOS.INC>
include <LCD_4BIT1.INC>
END
Como veis es un programa sencillo, solo es un comienzo para ver como funciona.
El archivo RETARDOS es la rutina típica y LCD_4BIT1 es del libro de rama pero cambiados los bits de control y datos.
Puede ser que primeo hay que escribir en el LCD con ocho bits y una vez configurado, comunicarse con el a 4 bits.
racias ha todos por vuestra atención.