CARRY equ 1
C EQU 0
Z equ 2Por que ? si el .inc ya lo posee y haces STATUS, C o STATUS , Z
BANK0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
Otro mas... tenes BANKSEL, ejemplo queres moverte el banco donde esta el PORTA. haces : BANKSEL PORTA , solo el compilador luego te genera esas instrucciones sea el micro que sea. Por si no lo sabias y recurriste a una macro para eso.
Respecto al LCD para mi que tenes mal la rutina de inicializacion. ( Luego descubri otras cosas mas abajo )
un HD44780 es distinto (si es que tenes eso).. mira como es la inicializacion:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf(Pagina 44)
Delay 15ms para 5V, 40ms para 3.3V
Enviar Function Set
Delay 4.1ms
Enviar Function Set
Delay 100us
Enviar Function Set
Enviar Function Set ( Este es el valido!, el cual toma el valor el LCD)
Display Off/On
Display Clear
Entry Mode
------------------------------------------------------------------------------------
Finalmente tenes un problema que la rutina "principal" (MENU), no posee un loop infinito. Lo que sucederia es que llamas a LCD_INIT, vuelve con return y ejecuta la demora de 1ms, y vuelve a ejecutar el return. Pero esta ves ya no hay guardado nada en el STACK. Asi que ojo con eso.
Ponele un GOTO $-1 despues del CALL INI_LCD
Sigo descubriendo mas errores:
BCF PORTE,E
E EQU 22
Lo que se transforma en:
BCF PORTE,22 ????