; Fosc 10Mhz на някакъв PIC18Fxxx

DISP_ON		EQU	H'0C'	
DISP_ON_C	EQU	H'0E'
DISP_ON_B	EQU	H'0D'
DISP_OFF	EQU	H'08'
ENTRY_INC	EQU	H'06'
ENTRY_INC_S	EQU	H'07'
ENTRY_DEC	EQU	H'04'
ENTRY_DEC_S	EQU	H'05'
SHIFT_DISP_L	EQU	H'18'
SHIFT_DISP_R	EQU	H'1C'
HOME		EQU	H'02'
CLEAR_DISP	EQU	H'01'

DD_RAM_ADDR1	EQU	H'80'
DD_RAM_ADDR2	EQU	H'C0'


#define	CLCD_control		PORTA
#define	CLCD_control_LAT	LATA
#define	CLCD_control_IO		TRISA

#define	CLCD_data		PORTB	
#define	CLCD_data_IO		TRISB

Line_RS	EQU	2
Line_RW	EQU	3
Line_E	EQU	4

#define	RS		CLCD_control,Line_RS
#define	RW		CLCD_control,Line_RW
#define	E		CLCD_control,Line_E

Init_CLCD
	clrf	CLCD_control
	clrf	CLCD_data
	bcf	CLCD_control_IO,Line_RS
	bcf	CLCD_control_IO,Line_RW
	bcf	CLCD_control_IO,Line_E
	if Number_of_data_bits == 8
	clrf	CLCD_data_IO
	else
	movlw	B'00001111'
	andwf	CLCD_data_IO	
	endif
	if Use_BL==1
	bcf	BL
	bcf	BL_driver_IO,Line_BL
	endif
	call	start_up_dly	;DELAY > 500ms
	movlw	B'00111000' 	;STEP 1
	movwf	CLCD_data
	call	Delay_E
	bsf	E
	call	Delay_E
	bcf	E
	Delay_Xus D'600'
	movlw	B'00001100'	;STEP 2
	movwf	CLCD_data
	call	Delay_E
	bsf	E
	call	Delay_E
	bcf	E
	Delay_Xus D'600'
	movlw	B'00000001'	;STEP 3
	movwf	CLCD_data
	call	Delay_E
	bsf	E
	call	Delay_E
	bcf	E
	Delay_Xus D'5000'
	movlw	B'00000110'	;STEP 4
	movwf	CLCD_data
	call	Delay_E
	bsf	E
	call	Delay_E
	bcf	E
	Delay_Xus D'5000'
;	movlw	DISP_OFF
;	call	Send_CLCD_command
;	movlw	DISP_ON
;	call	Send_CLCD_command
;	movlw	ENTRY_INC
;	call	Send_CLCD_command
	movlw	CLEAR_DISP
	call	Send_CLCD_command
	return


Delay_E	
	nop
	nop
	nop
	nop
	nop	
	return