Yo trabajo con MPLAB 7, asi que asi es como lo hago se que para muchos es el lenguaje de programacion mas complicado, es decir el mas bajo pero creo que es el que mejor se adapta a mis conocimientos se que hoy por hoy no importa mucho el tamaño del programa eso es cosa del pasado, pero sabes me gustaria programar en C, el pic basic me esta gustando, mira consegui una rutina del LCD es esta:
;******************************************
http://www.x-robotics.com *******
; PROGRAMA : LCD.LIB
; Funcion : Libreria de funciones para controlar un display
; LCD de 2x16 lineas complatible con Hitachi.
;
; Revision : 1.0 Programa para : PIC16F84
; CPU Clock : 4 MHz Reloj instruccion : 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
;******************************************
http://www.x-robotics.com *******
LCD_E BSF RA,2 ;Activa señal E
NOP ;Espera 1uS
BCF RA,2 ;Desactiva señal E
RETURN
LCD_BUSY BSF RA,1 ;Pone el LCD en modo lectura
BSF STATUS,5 ;Selecciona el Banco 1
MOVLW 0xFF
MOVWF TRISB ;Puerta B act£a de entrada
BCF STATUS,5 ;Selecciona el Banco 0
BSF RA,2 ;Activa el LCD (Señal E)
NOP
L_BUSY BTFSC RB,7 ;Chequea el bit BUSY
GOTO L_BUSY ;Est a "1" (Ocupado)
BCF RA,2 ;Desactiva el LCD (Se¤al E)
BSF STATUS,5 ;Selecciona el Banco 1
CLRF TRISB ;Puerta B actua como salida
BCF STATUS,5 ;Selecciona el Banco 0
BCF RA,1 ;Pone el LCD en modo escritura
RETURN
LCD_REG BCF RA,0 ;Desactiva RS (Modo instruccion)
MOVWF RB ;Saca el codigo de instruccion
CALL LCD_BUSY ;Espera a que se libere el LCD
GOTO LCD_E ;Genera pulso en señal E
LCD_DATOS BCF RA,0 ;Desactiva RS (Modo instrucci¢n)
MOVWF RB ;Valor ASCII a sacar por RB
CALL LCD_BUSY ;Espera a que se libere el LCD
BSF RA,0 ;Activa RS (Modo dato)
GOTO LCD_E ;Genera pulso en señal E
LCD_INI MOVLW b'00111000'
CALL LCD_REG ;Codigo de instruccion
CALL DELAY_5MS ;Temporiza 5 mS.
MOVLW b'00111000'
CALL LCD_REG ;Codigo de instruccion
CALL DELAY_5MS ;Temporiza 5 mS.
MOVLW b'00111000'
CALL LCD_REG ;Codigo de instruccion
CALL DELAY_5MS ;Temporiza 5 mS.
RETURN
LCD_PORT BSF STATUS,5 ;Selecciona el banco 1 de datos
CLRF TRISB ;RB se programa como salida
MOVLW b'00011000' ;RA<4:3> se programan como entradas
MOVWF TRISA ;RA<2:0> se programan como salidas
BCF STATUS,5 ;Selecciona el banco 0 de datos
;MOVLW b'00000000'
;MOVWF INTCON ;Desactiva interrupciones
BCF RA,0 ;Desactiva RS del modulo LCD
BCF RA,2 ;Desactiva E del modulo LCD
;****************************************************************************
;DELAY_5MS genera una temporizacion de 5mS necesario para la secuencia de
;inicio del LCD
DELAY_5MS movlw 0x1a
movwf DATO_B
clrf DATO_A
DELAY_1 decfsz DATO_A,1
goto DELAY_1
decfsz DATO_B,1
goto DELAY_1
return
Esta muy buena y gracias a esta rutina estoy aprendiendo a dominar este tipo de display creo que con un poco de trabajo es posible lograr muchas cosas, se que esta libreria se puede incluir llamandola desde el programa con un include, pero segun veo tambien se pueden introducir las subrutinas en el prg que hagas y te va a funcionar igual.
bueno si saben algo mas siempre es buena una data, seguire buscando y espero lograr grandes cosas con este bicho de 2x16.
Gracias por el manual que publicaste me ha sido de mucha utlidad aprendi mucho de ese manual junto con esta libreria creo que cualquiera que entre al foro podra aprender a utilizar lo unico que no me guio como plantear el circuito, si lo se medio tonto de mi parte pero una manito en este aspecto me permitiria lograr concluir mi proyecto con lcd.