I can't seem to make the lcd display a character. here is a copy of the code that i used. any help would very much be appreciated... ^_^
include <P16F876A.INC>
include "bankx.inc"
__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF
errorlevel -302, -305, -205
; CONTROL (PORTA) | DATA (PORTC)
; LCDE = RA5 | D7 = RC3
; LCDRW = RA3 | D6 = RC2
; LCDRS = RA2 | D5 = RC1
; | D4 = RC0
CTRL_E EQU 5
CTRL_RW EQU 3
CTRL_RS EQU 2
CTRL_TRIS EQU TRISA
CTRL EQU PORTA
BTN_TRIS EQU TRISB
BTN EQU PORTB
DAT_TRIS EQU TRISC
DAT EQU PORTC
CBLOCK 0x20
WAIT1
WAIT2
XDELAY
ENDC
ORG 0x00
GOTO START
;********** DELAYS **********
DELAY1MS
MOVLW .8
MOVWF WAIT2
D1_1
MOVLW .207
MOVWF WAIT1
D1_2
DECFSZ WAIT1
GOTO D1_2
DECFSZ WAIT2
GOTO D1_1
RETURN
XDELAY1US
MOVWF XDELAY
DECFSZ XDELAY
GOTO $ - 1
RETURN
XDELAY1MS
MOVWF XDELAY
XD
CALL DELAY1MS
DECFSZ XDELAY
GOTO XD
RETURN
DELAY200MS
MOVLW .200
MOVWF XDELAY
XD1
CALL DELAY1MS
DECFSZ XDELAY
GOTO XD1
RETURN
;********** DELAYS **********
EHIGH
BCF CTRL, CTRL_RW
BCF CTRL, CTRL_RS
BSF CTRL, CTRL_E
RETURN
ELOW
CALL DELAY1MS
CALL DELAY1MS
BCF CTRL, CTRL_E
RETURN
START
BANKSEL TRISA
MOVLW B'11010011'
MOVWF TRISA
MOVLW B'11110000'
MOVWF TRISC
MOVLW B'11101111'
MOVWF TRISB
BANKSEL PORTA
CLRF PORTA
CLRF PORTC
;********** wait more than 15ms after Vdd rises to 4.5V
CALL DELAY200MS
;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
;********** wait more than 4.1ms
MOVLW .5
CALL XDELAY1MS
;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
;********** wait more than 100us
CALL DELAY1MS
;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
;********** Function set (set interface to be 4 bits long). Interface is 8 bits long.
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW
;********** Function set
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00001000'
MOVWF DAT
CALL ELOW
;********** display off
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00001000'
MOVWF DAT
CALL ELOW
;********** display clear
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000001'
MOVWF DAT
CALL ELOW
;********** display on
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00001110'
MOVWF DAT
CALL ELOW
;********** cursor / display shift
CALL EHIGH
MOVLW B'00000001'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000100'
MOVWF DAT
CALL ELOW
;********** entry mode set
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000110'
MOVWF DAT
CALL ELOW
;********** cursor home
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW
;********** PUT CHAR
BCF CTRL, CTRL_RW
BSF CTRL, CTRL_RS
BSF CTRL, CTRL_E
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
BCF CTRL, CTRL_RW
BSF CTRL, CTRL_RS
BSF CTRL, CTRL_E
MOVLW B'00001111'
MOVWF DAT
CALL ELOW
END
include <P16F876A.INC>
include "bankx.inc"
__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF
errorlevel -302, -305, -205
; CONTROL (PORTA) | DATA (PORTC)
; LCDE = RA5 | D7 = RC3
; LCDRW = RA3 | D6 = RC2
; LCDRS = RA2 | D5 = RC1
; | D4 = RC0
CTRL_E EQU 5
CTRL_RW EQU 3
CTRL_RS EQU 2
CTRL_TRIS EQU TRISA
CTRL EQU PORTA
BTN_TRIS EQU TRISB
BTN EQU PORTB
DAT_TRIS EQU TRISC
DAT EQU PORTC
CBLOCK 0x20
WAIT1
WAIT2
XDELAY
ENDC
ORG 0x00
GOTO START
;********** DELAYS **********
DELAY1MS
MOVLW .8
MOVWF WAIT2
D1_1
MOVLW .207
MOVWF WAIT1
D1_2
DECFSZ WAIT1
GOTO D1_2
DECFSZ WAIT2
GOTO D1_1
RETURN
XDELAY1US
MOVWF XDELAY
DECFSZ XDELAY
GOTO $ - 1
RETURN
XDELAY1MS
MOVWF XDELAY
XD
CALL DELAY1MS
DECFSZ XDELAY
GOTO XD
RETURN
DELAY200MS
MOVLW .200
MOVWF XDELAY
XD1
CALL DELAY1MS
DECFSZ XDELAY
GOTO XD1
RETURN
;********** DELAYS **********
EHIGH
BCF CTRL, CTRL_RW
BCF CTRL, CTRL_RS
BSF CTRL, CTRL_E
RETURN
ELOW
CALL DELAY1MS
CALL DELAY1MS
BCF CTRL, CTRL_E
RETURN
START
BANKSEL TRISA
MOVLW B'11010011'
MOVWF TRISA
MOVLW B'11110000'
MOVWF TRISC
MOVLW B'11101111'
MOVWF TRISB
BANKSEL PORTA
CLRF PORTA
CLRF PORTC
;********** wait more than 15ms after Vdd rises to 4.5V
CALL DELAY200MS
;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
;********** wait more than 4.1ms
MOVLW .5
CALL XDELAY1MS
;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
;********** wait more than 100us
CALL DELAY1MS
;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
;********** Function set (set interface to be 4 bits long). Interface is 8 bits long.
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW
;********** Function set
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00001000'
MOVWF DAT
CALL ELOW
;********** display off
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00001000'
MOVWF DAT
CALL ELOW
;********** display clear
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000001'
MOVWF DAT
CALL ELOW
;********** display on
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00001110'
MOVWF DAT
CALL ELOW
;********** cursor / display shift
CALL EHIGH
MOVLW B'00000001'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000100'
MOVWF DAT
CALL ELOW
;********** entry mode set
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000110'
MOVWF DAT
CALL ELOW
;********** cursor home
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW
;********** PUT CHAR
BCF CTRL, CTRL_RW
BSF CTRL, CTRL_RS
BSF CTRL, CTRL_E
MOVLW B'00000011'
MOVWF DAT
CALL ELOW
BCF CTRL, CTRL_RW
BSF CTRL, CTRL_RS
BSF CTRL, CTRL_E
MOVLW B'00001111'
MOVWF DAT
CALL ELOW
END