You are on page 1of 4

#device PIC16F877A

#list
#device adc=8
#FUSES NOWDT
#FUSES HS
#FUSES NOPUT
#FUSES NOPROTECT
#FUSES NODEBUG
#FUSES NOBROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#use delay(clock=10000000)
#define
#define
#define
#define
#define
#define
#define
#define

rs PIN_B4
en PIN_B5
DB4 PIN_B6
DB5 PIN_B3
DB6 PIN_B2
DB7 PIN_B1
Line_1 0x80
Line_2 0xC0

LCD_Enable :
en=1
: BSF
03.5
BCF
06.5
BCF
03.5
BSF
06.5
delay3us : MOVLW 02
MOVWF 77
loop1
: DECFSZ 77,F
GOTO loop
en=0
: BSF
03.5
BCF
06.5
BCF
03.5
BCF
06.5
delay50us : MOVLW 29
MOVWF 77
loop2
: DECFSZ 77,F
GOTO 080
NOP
RETLW 00
-------------------------------------------------------------------------------------LCD_Send4Bit:
DB4=Data & 0x01: BTFSC 34.0
GOTO 02B
BCF
06.6
GOTO 02C
BSF
06.6
BSF
03.5
BCF
06.6
DB5=(Data>>1)&1: BCF
03.0
BCF
03.5
RRF
34,W
ANDLW 01
XORLW 00
BTFSS 03.2
GOTO 037
BCF
06.3

GOTO 038
BSF
06.3
BSF
03.5
BCF
06.3
DB6=(Data>>2)&1: BCF
03.5
RRF
34,W
MOVWF 77
RRF
77,F
MOVLW 3F
ANDWF 77,F
MOVF 77,W
ANDLW 01
XORLW 00
BTFSS 03.2
GOTO 047
BCF
06.2
GOTO 048
BSF
06.2
BSF
03.5
BCF
06.2
DB7=(Data>>3)&1): BCF
03.5
RRF
34,W
MOVWF 77
RRF
77,F
RRF
77,F
MOVLW 1F
ANDWF 77,F
MOVF 77,W
ANDLW 01
XORLW 00
BTFSS 03.2
GOTO 058
BCF
06.1
GOTO 059
BSF
06.1
BSF
03.5
BCF
06.1
BCF
03.5
RETLW 00
--------------------------------------------------------------------------------------LCD_SendCommand:
LCD_Send4Bit(command >>4): SWAPF 32,W
MOVWF 33
MOVLW 0F
ANDWF 33,F
MOVF 33,W
MOVWF 34
CALL LCD_Send4Bit
LCD_Enable
: CALL LCD_Enable
LCD_Send4Bit(command)
: MOVF 32,W
MOVWF 34
CALL LCD_Send4Bit
LCD_Enable
: CALL LCD_Enable
RETLW 00
--------------------------------------------------------------------------------------LCD_Init:
LCD_Send4Bit(0x00)
: CLRF 34
CALL 027

delay20ms

MOVLW 14
MOVWF 32
CALL 05D
rs=0
: BSF
03.5
BCF
06.4
BCF
03.5
BCF
06.4
LCD_Send4Bit(0x03)
: MOVLW 03
MOVWF 34
CALL LCD_Send4Bit
LCD_Enable()
: CALL LCD_Enable
delay5ms
: MOVLW 05
MOVWF 32
CALL 05D
LCD_Enable
: CALL LCD_Enable
delay100us
: MOVLW 53
MOVWF 77
loop3
: DECFSZ 77,F
GOTO loop3
LCD_Enable
: CALL LCD_Enable
LCD_Send4Bit(0x02)
: MOVLW 02
MOVWF 34
CALL LCD_Send4Bit
LCD_Enable()
: CALL LCD_Enable
LCD_SendCommand( 0x28 ) : MOVLW 28
MOVWF 32
CALL LCD_SendCommand
LCD_SendCommand( 0x0c) : MOVLW 0C
MOVWF 32
CALL LCD_SendCommand
LCD_SendCommand( 0x06 ) : MOVLW 06
MOVWF 32
CALL LCD_SendCommand
LCD_SendCommand( 0x01 ) : MOVLW 01
MOVWF 32
CALL LCD_SendCommand
RETLW 00
---------------------------------------------------------------------------------------LCD_Gotoxy
:
if(!y)
: MOVF 30,F
BTFSS 03.2
: GOTO address = (Line_2+x)
address = (Line_1+x)
: MOVLW 80
ADDWF 2F,W
MOVWF 31
else
: GOTO delay1000us
address = (Line_2+x)
: MOVLW C0
ADDWF 2F,W
MOVWF 31
delay1000us
: MOVLW 01
MOVWF 32
CALL 05D
LCD_SendCommand(address) : MOVF 31,W
MOVWF 32
CALL LCD_SendCommand
delay50us
: MOVLW 29
MOVWF 77
loop4
DECFSZ 77,F
GOTO loop4

NOP
RETLW 00
-----------------------------------------------------------------------------------------

You might also like