微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 芯海单片机用CS5817芯片控制16位数码管

芯海单片机用CS5817芯片控制16位数码管

时间:11-30 来源:互联网 点击:
;============================================

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top