;============================================
; filename: 5817驱动led数码管.asm
; chip : csu1181b
; author :
; date : 2012-07-31
;============================================
include csu1181b.inc
;============================================
; program start
;============================================
SDA EQU 80H
org 000h
GOTO A1
ORG 05H
;***********************************************
; 数据表
;***********************************************
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 ;设置PT3位输出口
MOVWF PT3EN ;
MOVLW 0FFH ;PT3输出高电平
MOVWF PT3 ;
MOVLW 60H ;第一个数码管位码
MOVWF 81H ;位码寄存器
MOVLW 16 ;一共位数
MOVWF 82H ;一共位数寄存器
;******************************************
; 显现初值
;
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 ;显现数据操控寄存器
MOVWF FSR0 ;直接寻址寄存器
A2: CLRWDT ;清看门狗
CALL START ;开端
MOVLW 48H ;开显现指令
MOVWF SDA ;
CALL DATA1 ; 写指令
CALL ACK ;应对
MOVLW 01H ;开显现
MOVWF SDA ;
CALL DATA1 ; 写指令
CALL ACK ;
CALL STOP ; 完毕
CALL START ;开端
MOVFW 81H ;写位码
MOVWF SDA ;
CALL DATA1 ;
CALL ACK ;
MOVLW Q1 ;数据表地址
ADDWF ind0,0 ;需求显现数据地址
MOVWF EADRL ;
MOVP ;查表
MOVWF SDA ;显现数据
CALL DATA1 ;
CALL ACK ;应对
CALL STOP ;完毕
INCF FSR0,1 ;下一个显现数据
INCF 81H,1 ;下一个位码
INCF 81H,1 ;因为位码是60H,62H,等偶数所以用两次加1
DECFSZ 82H,1 ;判别是否显现完16位
GOTO A2 ;
GOTO A1 ;
;****************************************************************
; 5817开端子程序段
;****************************************************************
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完毕子程序段
;****************************************************************
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应对子程序段
;***************************************************************
ACK:
BSF PT3EN,7
BSF PT3,7
NOP
ack1:
BCF PT3EN,6
BTFSS PT3,6 ;SDA判别应对信号
GOTO ACK1
NOP
BSF PT3EN,7
BCF PT3,7
NOP
RETURN
;*****************************************************************
; 5817写数据子程序段
;*****************************************************************
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数据处理子程序段
;*********************************************
SDA1:
BTFSC SDA,7
GOTO SDA2
BSF PT3EN,6
BCF PT3,6
GOTO SDA3
SDA2:
BSF PT3EN,6
BSF PT3,6
SDA3:
RETURN
;*******************************************
; 延时子程序段
;*******************************************
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
;============================================