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

芯海单片机跑灯程序

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


;左右移位指令应用
;============================================
; filename: 跑灯.asm
; chip    : csu1181b
; author  :
; date    : 2012-07-27
;完整下载地址: http://www.51hei.com/f/xhpmd.rar  
include csu1181b.inc
;============================================
; program start
;============================================
  org   000h
  goto   A1
  ORG   005H
;******************************************
;      右移模块
;****************************************** 
A1:  MOVLW  6 ;循环次数
  MOVWF  90H ;次数寄存器
  MOVLW  01111111B ;驱动初始数
  MOVWF  91H ;驱动数寄存器
A2:  MOVLW  0FFH ;设置为输出数
  MOVWF  PT3EN ;设置为输出模式
  MOVLW  0 ;禁止上拉
  MOVWF  PT3PU ;
  MOVFW  91H ;禁止上拉
  MOVWF  PT3 ;
  RRF   91H,0 ;循环右移C处理结果存在工作寄存器W中
  RRF   91H,1  ;循环右移结果存在通用寄存器91H中
  CALL  M001 ;延时
  DECFSZ  90H,1 ; 减一为0跳过下一条指令
  GOTO  A2  ;转移
;********************************************************
;   左移模块
;******************************************************** 
  MOVLW  4 ;循环次数
  MOVWF  90H ; 次数寄存器
  MOVLW  11110111B ;驱动初始数
  MOVWF  91H ;驱动数寄存器
 
A3:
  MOVLW  0FFH ;设置为输出数
  MOVWF  PT3EN ;设置为输出模式
  MOVLW  0 ;禁止上拉
  MOVWF  PT3PU ;
  MOVFW  91H ;禁止上拉
  MOVWF  PT3 ;
  RLF   91H,0 ;循环左移C处理结果存在工作寄存器W中
  RLF   91H,1  ;循环左移结果存在通用寄存器91H中 
  CALL  M001 ;延时
  DECFSZ  90H,1 ;减一为0跳过下一条指令
  GOTO  A3 ;
 
  GOTO  A1 ;
;*****************************************************
;   延时子程序
;*****************************************************
 
M001: MOVLW  1 ;
  MOVWF  80H  ;
M002: MOVLW  150  ;
  MOVWF  81H ;
M003: MOVLW  250 ;
  MOVWF  82H ;
M004: DECFSZ  82H,1 ; (减一后结果存在82h中)减一为0跳过下一指令
;       DECFSZ  82H,0 ;(减一后结果存在工作寄存器中)减一为0跳过下一指令
  GOTO  M004 ;
  DECFSZ  81H,1 ;
  GOTO  M003  ;
  DECFSZ  80H,1  ;
  GOTO  M002  ;
  RETURN ;子程序返回
     end ;结束

;============================================
 

关闭窗口

相关文章