芯海單片機(jī)用CS5817芯片控制16位數(shù)碼管
; filename: 5817驅(qū)動(dòng)led數(shù)碼管.asm
; chip : csu1181b
; author :
; date : 2012-07-31
;============================================
include csu1181b.inc
;============================================
; program start
;============================================
SDA EQU 80H
org 000h
GOTO A1
ORG 05H
;***********************************************
; 數(shù)據(jù)表
;***********************************************
Q1:
DW 003FH ;0
DW 0006H ;1
DW 005BH ;2
DW 004FH ;3
DW 0066H ;4
DW 006DH ;5
DW 007DH ;6
DW 0007H ;7
DW 007FH ;8
DW 006FH ;9
DW 0077H ;A
DW 007CH ;B
DW 0039H ;C
DW 005EH ;D
DW 0079H ;E
DW 0071H ;F
;************************************************
; 主程序
;************************************************
A1: MOVLW 0FFH ;設(shè)置PT3位輸出口
MOVWF PT3EN ;
MOVLW 0FFH ;PT3輸出高電平
MOVWF PT3 ;
MOVLW 60H ;第一個(gè)數(shù)碼管位碼
MOVWF 81H ;位碼寄存器
MOVLW 16 ;總共位數(shù)
MOVWF 82H ;總共位數(shù)寄存器
;******************************************
; 顯示初值
;
MOVLW 0H ;
MOVWF 90H ;
MOVLW 01H ;
MOVWF 91H ;
MOVLW 02H ;
MOVWF 92H ;
MOVLW 03H ;
MOVWF 93H ;
MOVLW 04H ;
MOVWF 94H ;
MOVLW 05H ;
MOVWF 95H ;
MOVLW 06H ;
MOVWF 96H ;
MOVLW 07H ;
MOVWF 97H ;
MOVLW 08H
MOVWF 98H
MOVLW 09H ;
MOVWF 99H ;
MOVLW 10 ;
MOVWF 9aH ;
MOVLW 11 ;
MOVWF 9bH ;
MOVLW 12 ;
MOVWF 9cH ;
MOVLW 13 ;
MOVWF 9dH ;
MOVLW 14 ;
MOVWF 9eH ;
MOVLW 15 ;
MOVWF 9fH ;
; 顯示初值
;**********************************************
MOVLW 90H ;顯示數(shù)據(jù)控制寄存器
MOVWF FSR0 ;間接尋址寄存器
A2: CLRWDT ;清看門(mén)狗
CALL START ;開(kāi)始
MOVLW 48H ;開(kāi)顯示命令
MOVWF SDA ;
CALL DATA1 ; 寫(xiě)命令
CALL ACK ;應(yīng)答
MOVLW 01H ;開(kāi)顯示
MOVWF SDA ;
CALL DATA1 ; 寫(xiě)命令
CALL ACK ;
CALL STOP ; 結(jié)束
CALL START ;開(kāi)始
MOVFW 81H ;寫(xiě)位碼
MOVWF SDA ;
CALL DATA1 ;
CALL ACK ;
MOVLW Q1 ;數(shù)據(jù)表地址
ADDWF ind0,0 ;需要顯示數(shù)據(jù)地址
MOVWF EADRL ;
MOVP ;查表
MOVWF SDA ;顯示數(shù)據(jù)
CALL DATA1 ;
CALL ACK ;應(yīng)答
CALL STOP ;結(jié)束
INCF FSR0,1 ;下一個(gè)顯示數(shù)據(jù)
INCF 81H,1 ;下一個(gè)位碼
INCF 81H,1 ;由于位碼是60H,62H,等偶數(shù)所以用兩次加1
DECFSZ 82H,1 ;判斷是否顯示完16位
GOTO A2 ;
GOTO A1 ;
;****************************************************************
; 5817開(kāi)始子程序段
;****************************************************************
START:
BSF PT3EN,7 ;
BSF PT3,7 ;scl
NOP
BSF PT3EN,6 ;
BSF PT3,6 ;sda
NOP
BSF PT3EN,6
BCF PT3,6 ;sda
NOP
RETURN
;****************************************************************
; 5817結(jié)束子程序段
;****************************************************************
STOP:
BSF PT3EN,7
BSF PT3,7 ;scl
NOP
BSF PT3EN,3
BCF PT3,6 ;sda
NOP
BSF PT3EN,6
BSF PT3,6 ;sda
NOP
RETURN
;***************************************************************
; 5817應(yīng)答子程序段
;***************************************************************
ACK:
BSF PT3EN,7
BSF PT3,7
NOP
ack1:
BCF PT3EN,6
BTFSS PT3,6 ;SDA判斷應(yīng)答信號(hào)
GOTO ACK1
NOP
BSF PT3EN,7
BCF PT3,7
NOP
RETURN
;*****************************************************************
; 5817寫(xiě)數(shù)據(jù)子程序段
;*****************************************************************
DATA1:
MOVLW 8
MOVWF 85H
DATA2:
BSF PT3EN,7
BCF PT3,7 ;SCL
NOP
CALL SDA1 ;SDA
NOP
BSF PT3EN,7
BSF PT3,7 ;SCL
NOP
BSF PT3EN,7
BCF PT3,7 ;SCL
NOP
BSF PT3EN,6
BSF PT3,6 ;SDA
NOP
RLF SDA,0
RLF SDA,1
DECFSZ 85H,1
GOTO DATA2
RETURN
;*********************************************
; 5817SDA數(shù)據(jù)處理子程序段
;*********************************************
SDA1:
BTFSC SDA,7
GOTO SDA2
BSF PT3EN,6
BCF PT3,6
GOTO SDA3
SDA2:
BSF PT3EN,6
BSF PT3,6
SDA3:
RETURN
;*******************************************
; 延時(shí)子程序段
;*******************************************
M001:
MOVLW 1 ;
MOVWF 8AH ;
M002:
MOVLW 10 ;
MOVWF 8BH ;
M003:
MOVLW 250 ;
MOVWF 8CH ;
M004:
DECFSZ 8CH,1 ;
GOTO M004 ;
DECFSZ 8BH,1 ;
GOTO M003 ;
DECFSZ 8AH,1 ;
GOTO M002 ;
RETURN ;子程序返回
end
;============================================
評(píng)論