;**********************************************************************
INIT_LCD
		;********************************  init LCD ********
		MOVLW   B'00110000'	; â ðåãèñòð W $30
		CALL	WR_COMMAND_LCD

;		MOVLW 	.32 ; 5mS
		CALL	Big_delay5

		MOVLW   B'00110000'	; â ðåãèñòð W $30
		CALL	WR_COMMAND_LCD

		MOVLW 	.175 ; 100mkS
		CALL	delay

		MOVLW   B'00110000'	; â ðåãèñòð W $30
		CALL	WR_COMMAND_LCD

		; äóìàåì ÷òî æêè ñáðîñèëñÿ è íàõîäèòñÿ â 8 áèòíîì ðåæèìå

		CALL	Big_delay5
		MOVLW   B'00111000'	; â ðåãèñòð W $38 2 ÑÒÐÎÊÈ 5*8 ÒÎ×ÅÊ  8ÁÈÒ
		CALL	WR_COMMAND_LCD


		CALL	Big_delay5
		MOVLW   B'00001110'	; â ðåãèñòð W $0E LCD - ON , CURSOR - ON "_"
		CALL	WR_COMMAND_LCD


		CALL	Big_delay5
		MOVLW   B'00000110'	; â ðåãèñòð W $06 CURSOR AUTO INC
		CALL	WR_COMMAND_LCD


		CALL	Big_delay5
		MOVLW   B'00000011'	; â ðåãèñòð W $03 CURSOR  START POSITION 
		goto	WR_COMMAND_LCD

		;*****************************   END init LCD ********
		;RETURN

;**********************************************************************



;**********************************************************************
LCD_READ_BUTE	; ÂÂÎÄ ÎÄÍÎÃÎ ÑÈÌÂÎËÀ, ÊÓÐÑÎÐ +1, ÊÎÄ Â W
		CALL	Big_delay5
				BCF		LCD_E	
				BANK1
		        MOVLW   B'11111111'		; PORTD   ;
        		MOVWF   TRISD^80
				BANK0


				BSF		LCD_RW
				BSF		LCD_RS ; DATA
				BSF		LCD_E
				NOP
				NOP				
				MOVF	LCD_DAT,W
				MOVWF	TEMP
				BCF		LCD_E
				BCF		LCD_RW
				
				BANK1
		        MOVLW   B'00000000'		; PORTD   ;
        		MOVWF   TRISD^80
				BANK0
				MOVF	TEMP,W
			RETURN
; *********************************************************************
WR_COMMAND_LCD
				; DATA IN W
				BCF		LCD_RW
				BCF		LCD_E
				BCF		LCD_RS ; COMMAND
				MOVWF	LCD_DAT
				BSF		LCD_E
				NOP
				NOP				
				BCF		LCD_E
				BSF		LCD_RS ; DATA
				RETURN
;**********************************************************************
;**********************************************************************
LCD_BUTE	; ÂÛÂÎÄ ÎÄÍÎÃÎ ÑÈÌÂÎËÀ, ÊÓÐÑÎÐ +1, ÊÎÄ Â W
				MOVWF	TEMP
;				CALL	BUSY
				CALL	Big_delay5
				MOVF	TEMP,W
WR_DATA_LCD		; DATA IN W
				MOVWF	TEMP

				BTFSS	FLAG_MOVE_CURSOR
				GOTO 	G3ST
				CALL	LCD_INC_CURSOR
				CALL	Big_delay5	
G3ST
				; ÎÁÐÀÁÎÒÊÀ ÔËÀÃÎÂ ÐÅÄÀÊÒÈÐÎÂÀÍÈß
				;BCF			FLAG_EDIT_NUMBER 
				;BCF			FLAG_EDIT_DATAIN
				; ÅÑËÈ ÓÑÒÀÍÎÂËÅÍ ÍÓÆÍÛÉ ÔËÀÃ È 
				; ÊÓÐÑÎÐ ÍÀ ÅÒÎÌ ÌÅÑÒÅ ÒÎ ÑÈÌÂÎË ÍÅ ÂÛÂÎÄÈÌ 

				BTFSS	FLAG_EDIT_NUMBER 
				GOTO	G3ST_PRN1 ; NE USTANOWLEN 
				;ÏÐÎÂÅÐÊÀ ÊÓÐÑÎÐÀ 
				MOVLW	0x46
				XORWF	CURSOR,W
				BTFSS	STATUS,Z
				GOTO	G3ST_PRN2
				GOTO	G3ST_END

G3ST_PRN1
				BTFSS	FLAG_EDIT_DATAIN 
				GOTO	G3ST_PRN2 ; NE USTANOWLEN 
				;ÏÐÎÂÅÐÊÀ ÊÓÐÑÎÐÀ
				MOVLW	0x42
				XORWF	CURSOR,W
				BTFSC	STATUS,Z
				GOTO	G3ST_END
				MOVLW	0x45
				XORWF	CURSOR,W
				BTFSC	STATUS,Z
				GOTO	G3ST_END
				MOVLW	0x48
				XORWF	CURSOR,W
				BTFSC	STATUS,Z
				GOTO	G3ST_END


G3ST_PRN2
				BCF		LCD_RW
				BCF		LCD_E
				BSF		LCD_RS ; DATA
				MOVF	TEMP,W
				MOVWF	LCD_DAT
				BSF		LCD_E
				NOP
				NOP				
				BCF		LCD_E

G3ST_END

				GOTO	SET_CURSOR

;**********************************************************************
LCD_CLR		; Î×ÈÑÒÊÀ ÝÊÐÀ ÊÓÐÑÎÐ ÍÀ 1 ÏÎÇÈÖÈÞ
;		CALL	BUSY		; ÐÀÁÎÒÀ Ñ ÐÅÃÈÑÒÐÎÌ ÓÏÐÀÂËÅÍÈß
		CALL	Big_delay5
		CLRF	CURSOR

		MOVLW   B'00000001'	; â ðåãèñòð W $01 CURSOR  START POSITION 
		GOTO	WR_COMMAND_LCD

; *********************************************************************
SET_CURSOR	; ÓÑÒÎÍÎÂÈÒÜ ÊÓÐÑÎÐ Â ÌÅÑTO N CURSOR
		
;		CALL	BUSY		; ÐÀÁÎÒÀ Ñ ÐÅÃÈÑÒÐÎÌ ÓÏÐÀÂËÅÍÈß
		CALL	Big_delay5
		MOVLW   B'10000000'	; óñòàíîâèòü ÒÈÏ ÊÎÌÀÍÄÛ
		IORWF	CURSOR,0
		GOTO	WR_COMMAND_LCD
	
;**********************************************************************


LCD_DEC_CURSOR
				DECF	CURSOR,1
		MOVLW   0xFF
		XORWF	CURSOR,0
		BTFSC	STATUS,Z
		GOTO 	G4ST
		MOVLW   0x3F
		XORWF	CURSOR,0
		BTFSC	STATUS,Z
		GOTO 	G5ST
			GOTO	SET_CURSOR

G4ST

		MOVLW   0x4F
		MOVWF	CURSOR
		GOTO	SET_CURSOR


G5ST
		MOVLW   0x0F
		MOVWF	CURSOR
		GOTO	SET_CURSOR

;**********************************************************************
LCD_INC_CURSOR

		INCF	CURSOR,1
		MOVLW   D'16'
		XORWF	CURSOR,0
		BTFSC	STATUS,Z
		GOTO 	G2ST	
		MOVLW   D'80'
		XORWF	CURSOR,0
		BTFSC	STATUS,Z
		GOTO 	G1ST
		GOTO	SET_CURSOR

G2ST		MOVLW   D'64'
		MOVWF	CURSOR
		GOTO	SET_CURSOR

G1ST		MOVLW   D'0'
		MOVWF	CURSOR
		GOTO	SET_CURSOR
;**********************************************************************
TABLE	; ÄËß ÂÛÂÎÄÀ ×ÈÑÅË Â HEX ÔÎÐÌÀÒÅ
	 	ADDWF	PCL,1
		RETLW	30H
		RETLW	31H
		RETLW	32H
		RETLW	33H
		RETLW	34H
		RETLW	35H
		RETLW	36H
		RETLW	37H
		RETLW	38H
		RETLW	39H
		RETLW	41H
		RETLW	42H
		RETLW	43H
		RETLW	44H
		RETLW	45H
		RETLW	46H
;************************************
LCD_NUM		; ÂÛÂÎÄ ×ÈÑËÀ 0-F   ÊÎÄ Â W
		MOVWF	TEMP1
		movlw 	HIGH TABLE 	;load high 8-bit;address of Table
		movwf 	PCLATH 		;into PCLATH
		MOVF	TEMP1,0
LCD_NUM1
		ANDLW	B'00001111'
		CALL	TABLE
		BSF		FLAG_MOVE_CURSOR
		GOTO	LCD_BUTE

;************************************
LCD_NUM_D	; ÂÛÂÎÄ ×ÈÑËÀ 0-FF   ÊÎÄ Â W
		MOVWF	TEMP1
		movlw 	HIGH TABLE 	;load high 8-bit;address of Table
		movwf 	PCLATH 		;into PCLATH
		SWAPF	TEMP1,0
		CALL	LCD_NUM1
		MOVF	TEMP1,0
		GOTO	LCD_NUM1

; *********************************************************************

 

>