;**********************************************************************
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
; *********************************************************************
|