Saludos a toda la comunidad del foro. Qusiera saber si me podrian ayudar con mi problema. El tema es que no consigo hacer funcionar un lcd 16x2 (HD44780), sin embargo lo mas raro es que en el PIC SIMULATOR si me funciona.
las conexiones son las siguientes (en 4 bits): RS a RA3, E a RA4, R/W a masa, D4 a RB4, D5 a RB5, D6 a RB6 y D7 a RB7.
El codigo es el siguiente:
Define CONF_WORD = 0x3ff9
Define LCD_BITS = 4
Define LCD_RSREG = PORTA
Define LCD_RSBIT = 3
Define LCD_EREG = PORTA
Define LCD_EBIT = 4
Define LCD_COMMANDUS = 200
Define LCD_DATAUS = 50
Define LCD_INITMS = 5
Lcdinit 0
Dim izq As Byte
Dim der As Byte
Dim cen As Byte
Dim control As Byte
Lcdcmdout LcdClear
control = 0
izq = 0
der = 0
cen = 0
TRISB.0 = 0
TRISB.1 = 0
TRISB.2 = 0
TRISB.3 = 0
grande:
If PORTA.0 = 0 And PORTA.1 = 0 And PORTA.2 = 0 Then
PORTB.0 = 1
PORTB.1 = 0
PORTB.2 = 1
PORTB.3 = 0
If control = 0 Then
Lcdout "Buscando Linea"
Endif
control = 1
Else
loop:
If PORTA.0 = 1 And PORTA.1 = 0 And PORTA.2 = 0 Then
PORTB.0 = 1
PORTB.1 = 0
PORTB.2 = 1
PORTB.3 = 0
If cen = 0 Then
Lcdcmdout LcdClear
Lcdout "Linea recta"
Endif
izq = 0
der = 0
cen = 1
Endif
If PORTA.0 = 1 And PORTA.1 = 1 And PORTA.2 = 1 Then
PORTB.0 = 1
PORTB.1 = 0
PORTB.2 = 1
PORTB.3 = 0
If cen = 0 Then
Lcdcmdout LcdClear
Lcdout "Linea recta"
Endif
izq = 0
der = 0
cen = 1
Endif
If PORTA.0 = 1 And PORTA.1 = 1 And PORTA.2 = 0 Then
PORTB.0 = 0
PORTB.1 = 1
PORTB.2 = 1
PORTB.3 = 0
If der = 0 Then
Lcdcmdout LcdClear
Lcdout "Gira derecha"
Endif
izq = 0
der = 1
cen = 0
Endif
If PORTA.0 = 0 And PORTA.1 = 1 And PORTA.2 = 0 Then
PORTB.0 = 0
PORTB.1 = 0
PORTB.2 = 1
PORTB.3 = 0
If der = 0 Then
Lcdcmdout LcdClear
Lcdout "Gira derecha"
Endif
izq = 0
der = 1
cen = 0
Endif
If PORTA.0 = 1 And PORTA.1 = 0 And PORTA.2 = 1 Then
PORTB.0 = 1
PORTB.1 = 0
PORTB.2 = 0
PORTB.3 = 1
If izq = 0 Then
Lcdcmdout LcdClear
Lcdout "Gira izquierda"
Endif
izq = 1
der = 0
cen = 0
Endif
If PORTA.0 = 0 And PORTA.1 = 0 And PORTA.2 = 1 Then
PORTB.0 = 1
PORTB.1 = 0
PORTB.2 = 0
PORTB.3 = 0
If izq = 0 Then
Lcdcmdout LcdClear
Lcdout "Gira izquierda"
Endif
izq = 1
der = 0
cen = 0
Endif
If PORTA.0 = 0 And PORTA.1 = 0 And PORTA.2 = 0 Then
PORTB.0 = 0
PORTB.1 = 0
PORTB.2 = 0
PORTB.3 = 0
Endif
Goto loop
Endif
Goto grande
Creo yo que por ahi sean los delays.
Muchas gracias