📄 displcd.sub
字号:
nolist
;__________________________________________________________________________
;
; SUBROUTINES FOR LCD DISPLAY
; (LOAD: 4 BITS)
;__________________________________________________________________________
;
; You must include "displcd.lib" in the main file
; You must define E, RS, DATA_PORT and DATA_DIR in the main file
;
;__________________________________________________________________________
;
; VARIABLES
;__________________________________________________________________________
cblock
Char
endc
;--------------------------------------------------------------------------
; Description: Initialisation de l'afficheur LCD
; Entr俥: Aucune
; Sortie: Aucune
INIT_LCD
call T100mS ; Attendre la stabilisation de
;l'alimentation
RSCmd ; LCD: mode commande
Movlf 30H,DATA_PORT
DataOk ; 3 envois de 30H
call T10mS
DataOk
call T10mS
DataOk
call T1mS
Movlf 20H,DATA_PORT
DataOk ; Interface 4 bits
retlw 0
;---------------------------------------------------------------------------
; Description: Put cursor at the beginning of the second line
; ( or on th 8th Char in case of 1x16 display )
LINE_2
DDRam 40H
retlw 0
;---------------------------------------------------
; Description: Transmet un caract俽e vers l'afficheur
; Entr俥: Caract俽e dans le registre W
; Sortie: Aucune
SEND_CHAR
call T1mS ; Attendre que l'afficheur soit pr坱
RSChar ; Afficheur en mode caract俽e
movwf Char ; Sauvegarde du caract俽e
Andlf 0x0F,DATA_PORT
; Masquage: Reset du poids fort de DP
movf Char,W ; On restaure le caract俽e dans W
andlw 0xF0 ; On isole le poids fort du registre W
iorwf DATA_PORT,F; On positionne le poids fort de DATA_PORT
DataOk ; On bascule le verrou du LCD
Andlf 0x0F,DATA_PORT
; Masquage: Reset du poids fort de DP
swapf Char,W ; On 俢hange les poids fort et faible
andlw 0xF0 ; On isole le poids fort du registre W
iorwf DATA_PORT,F; On positionne le poids fort de DATA_PORT
DataOk ; On bascule le verrou du LCD
retlw 0 ; Retour avec W=0
;---------------------------------------------------
; Description: Transmet une commande vers l'afficheur
; Entr俥: Commande dans le registre W
; Sortie: Aucune
SEND_CMD
call T1mS ; Attendre que l'afficheur soit pr坱
RSCmd ; Afficheur en mode commande
movwf Char ; Sauvegarde de la commande
Andlf 0x0F,DATA_PORT
; Masquage: Reset du poids fort de DP
movf Char,W ; On restaure la commande dans W
andlw 0xF0 ; On isole le poids fort du registre W
iorwf DATA_PORT,F; On positionne le poids fort de DATA_PORT
DataOk ; On bascule le verrou du LCD
Andlf 0x0F,DATA_PORT
; Masquage: Reset du poids fort de DP
swapf Char,W ; On 俢hange les poids fort et faible
andlw 0xF0 ; On isole le poids fort du registre W
iorwf DATA_PORT,F; On positionne le poids fort de DATA_PORT
DataOk ; On bascule le verrou du LCD
retlw 0 ; Retour avec W=0
;
list
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -