I am also trying to progrma PIC16f72 with LCd jhd162A, but it is not working
here is my code, anybody suggest where i did the mistake. i am using 4mhz hs oscillator.
#include <P16f72.inc>
LCD_DATA EQU PORTC ; PORTC FOR LCD DATA PINS
LCD_CTRL EQU PORTB ; PORTB SFR register
TRISA EQU 85h ; TRISA SFR register
TRISB EQU 86h ; TRISB SFR register
TRISC EQU 87h ; TRISC SFR register
STATUS EQU 03h ; STATUS SFR register
PORTA equ 05
R1 EQU 21
R2 EQU 22
ORG 00
goto START
LDELAY
MOVLW .200 ; 250MS DELAY
MOVWF R2
LOOP3 MOVLW .250
MOVWF R1
LOOP4 NOP
NOP
DECFSZ R1, F
GOTO LOOP4
DECFSZ R2, F
GOTO LOOP3
RETURN
SDELAY
MOVLW .100 ; 250MS DELAY
MOVWF R2
LOOP1 MOVLW .250
MOVWF R1
LOOP2 NOP
NOP
DECFSZ R1, F
GOTO LOOP2
DECFSZ R2, F
GOTO LOOP1
RETURN
LCD_INIT
BCF LCD_CTRL,3
CALL LDELAY
MOVLW 0X38
CALL COMMAND
CALL LDELAY
MOVLW 0X0E
CALL COMMAND
CALL READY
MOVLW 0X01
CALL COMMAND
CALL READY
MOVLW 0X06
CALL COMMAND
CALL READY
MOVLW 0X81
CALL COMMAND
CALL READY
MOVLW A'M'
CALL DATADISPLAY
CALL READY
MOVLW A'O'
CALL DATADISPLAY
CALL READY
MOVLW A'N'
CALL DATADISPLAY
CALL READY
MOVLW A'I'
CALL DATADISPLAY
CALL READY
MOVLW A'C'
CALL DATADISPLAY
CALL READY
MOVLW A'A'
CALL DATADISPLAY
CALL READY
MOVLW 0X88
CALL COMMAND
CALL READY
MOVLW A'M'
CALL DATADISPLAY
CALL READY
MOVLW A'O'
CALL DATADISPLAY
MOVLW A'N'
CALL DATADISPLAY
CALL READY
MOVLW A'I'
CALL DATADISPLAY
CALL READY
MOVLW A'S'
CALL DATADISPLAY
CALL READY
MOVLW A'H'
CALL DATADISPLAY
CALL READY
MOVLW A'A'
CALL DATADISPLAY
CALL READY
MOVLW 0XC3
CALL COMMAND
CALL READY
MOVLW A'E'
CALL DATADISPLAY
CALL READY
MOVLW A'L'
CALL DATADISPLAY
CALL READY
MOVLW A'E'
CALL DATADISPLAY
CALL READY
MOVLW A'C'
CALL DATADISPLAY
CALL READY
MOVLW A'T'
CALL DATADISPLAY
CALL READY
MOVLW A'R'
CALL DATADISPLAY
CALL READY
MOVLW A'O'
CALL DATADISPLAY
CALL READY
MOVLW A'N'
CALL DATADISPLAY
CALL READY
MOVLW A'I'
CALL DATADISPLAY
CALL READY
MOVLW A'C'
CALL DATADISPLAY
CALL READY
MOVLW A'S'
CALL DATADISPLAY
RETURN
COMMAND MOVWF LCD_DATA
BCF LCD_CTRL,1
BCF LCD_CTRL,2
BSF LCD_CTRL,3
CALL SDELAY
BCF LCD_CTRL,3
RETURN
DATADISPLAY MOVWF LCD_DATA
BSF LCD_CTRL,1
BCF LCD_CTRL,2
BSF LCD_CTRL,3
CALL SDELAY
BCF LCD_CTRL,3
RETURN
READY BSF STATUS,5
MOVLW 0xFF
MOVWF TRISC
BCF STATUS,5
BCF LCD_CTRL,1
BSF LCD_CTRL,2
BACK BSF LCD_CTRL,3
CALL SDELAY
BCF LCD_CTRL,3
BTFSC LCD_DATA,7
GOTO BACK
BSF STATUS,5
MOVLW 00
movwf TRISC
BCF STATUS,5
RETURN
START BSF STATUS,5 ; Select Bank 1
MOVLW b'00000000' ; PORTA as output
MOVWF TRISA
MOVLW b'00000000'
MOVWf TRISB
MOVLW b'00000000'
MOVWF TRISC ; PORTC as output to LCD
BCF STATUS,5 ; Select bank0
CALL LCD_INIT
return
end
Bookmarks