;============================================
; filename: 自帶筆段式lcd.asm
; chip : csu1181b
; author :
; date : 2012-07-27
;============================================
include csu1181b.inc
;============================================
; program start
;============================================
org 000h
goto A1
ORG 05H
;*******************************************
; 主程序段
;*******************************************
A1: BCF LCDCH,5 ;設置SEG口位LCD輸出口
; filename: 自帶筆段式lcd.asm
; chip : csu1181b
; author :
; date : 2012-07-27
;============================================
include csu1181b.inc
;============================================
; program start
;============================================
org 000h
goto A1
ORG 05H
;*******************************************
; 主程序段
;*******************************************
A1: BCF LCDCH,5 ;設置SEG口位LCD輸出口
MOVLW 10110111B ;設置LCDENR
MOVWF LCDENR
A2:
BSF NETF,0 ;開模擬電源
MOVLW LCD2 ;位
MOVWF FSR0 ;間接尋址地址
MOVLW 4 ;位數
MOVWF 90H ; 位數寄存器
MOVLW 0 ;顯示內容默認值
MOVWF 95H ; 顯示內容控制寄存器
MOVLW 10 ;加1循環次數
MOVWF 9AH ;加1循環次數寄存器
A3:
MOVLW Q1 ;數據表地址
ADDWF 95H,0 ;顯示內容
MOVWF EADRL ;選定后數據表地址
MOVP ;查表并將數據存到(W)及(EDATH )中
MOVWF LCDENR
A2:
BSF NETF,0 ;開模擬電源
MOVLW LCD2 ;位
MOVWF FSR0 ;間接尋址地址
MOVLW 4 ;位數
MOVWF 90H ; 位數寄存器
MOVLW 0 ;顯示內容默認值
MOVWF 95H ; 顯示內容控制寄存器
MOVLW 10 ;加1循環次數
MOVWF 9AH ;加1循環次數寄存器
A3:
MOVLW Q1 ;數據表地址
ADDWF 95H,0 ;顯示內容
MOVWF EADRL ;選定后數據表地址
MOVP ;查表并將數據存到(W)及(EDATH )中
MOVWF IND0 ;將W中的數存到間接尋址內的寄存器中
INCF FSR0,1 ;間接尋址地址位加1
MOVFW EDATH ;將EDATH中的數存w中
MOVWF IND0 ;將W中的數存到間接尋址內的寄存器中
INCF FSR0,1 ;間接尋址地址位加1
DECFSZ 90H,1 ;判斷是否顯示完4位
GOTO A3 ;沒顯示完則繼續顯示
MOVLW LCD2 ;LCD顯示位
MOVWF FSR0 ;間接尋址地址
MOVLW 4 ;位數
MOVWF 90H ; 位數寄存器
INCF 95H,1 ;顯示內容加1
CALL M001 ;延時
DECFSZ 9AH,1 ;判斷是否將內容顯示完
GOTO A3 ;沒顯示完則繼續顯示
GOTO A1 ;返回反復執行
;*****************************************************
; 延時子程序段
;*****************************************************
M001: MOVLW 1
MOVWF 80H
M002: MOVLW 248
MOVWF 81H
M003: MOVLW 250
MOVWF 82H
M004: DECFSZ 82H,1
GOTO M004
DECFSZ 81H,1
GOTO M003
DECFSZ 80H,1
GOTO M002
RETURN
;*******************************************
; 數據表
;*******************************************
Q1:
DW 070DH ;0
DW 0600H ;1
DW 030EH ;2
DW 070AH ;3
DW 0603H ;4
DW 050BH ;5
DW 050FH ;6
DW 0700H ;7
DW 070FH ;8
DW 070BH ;9
INCF FSR0,1 ;間接尋址地址位加1
MOVFW EDATH ;將EDATH中的數存w中
MOVWF IND0 ;將W中的數存到間接尋址內的寄存器中
INCF FSR0,1 ;間接尋址地址位加1
DECFSZ 90H,1 ;判斷是否顯示完4位
GOTO A3 ;沒顯示完則繼續顯示
MOVLW LCD2 ;LCD顯示位
MOVWF FSR0 ;間接尋址地址
MOVLW 4 ;位數
MOVWF 90H ; 位數寄存器
INCF 95H,1 ;顯示內容加1
CALL M001 ;延時
DECFSZ 9AH,1 ;判斷是否將內容顯示完
GOTO A3 ;沒顯示完則繼續顯示
GOTO A1 ;返回反復執行
;*****************************************************
; 延時子程序段
;*****************************************************
M001: MOVLW 1
MOVWF 80H
M002: MOVLW 248
MOVWF 81H
M003: MOVLW 250
MOVWF 82H
M004: DECFSZ 82H,1
GOTO M004
DECFSZ 81H,1
GOTO M003
DECFSZ 80H,1
GOTO M002
RETURN
;*******************************************
; 數據表
;*******************************************
Q1:
DW 070DH ;0
DW 0600H ;1
DW 030EH ;2
DW 070AH ;3
DW 0603H ;4
DW 050BH ;5
DW 050FH ;6
DW 0700H ;7
DW 070FH ;8
DW 070BH ;9
end