×
嵌入式 > 技术百科 > 详情

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

发布时间:2020-10-16 发布时间:
|
;============================================

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

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
SN74LVC04AD的技术参数