专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

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

作者:佚名   来源:本站原创   点击数:  更新时间:2013年02月24日   【字体:


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

关闭窗口

相关文章