立即注册 登录
返回首页

uid:59980的个人空间

日志

跑马灯程序01位移法

已有 544 次阅读2014-3-25 00:23 |个人分类:发光LED类| 跑马灯, 程序

ORG 00H

START:
       MOV  A, #0FFH               ;  ACC=FHH,设置左移初始值
       CLR  C                      ;  清进位CY
       MOV  R1,#8                  ;  R0为移位计数器,R1=8

       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 程序初始化;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LOOP:
       RLC  A                       ;  左移一位
       MOV  P0,A                    ;  输出到P0口,低电平
       CALL DELAY                   ;  调用延时子程序
       DJNZ R1,LOOP                 ;  是否左移了8次,如果不是则跳回LOOP
       MOV  R2,#7                   ;  右移7次的计数器

       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;左移7位;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LOOP_1:
       RRC  A                       ;  右移一位
       MOV  P0, A                   ;  输出到P0口,低电平
       CALL DELAY                   ;  调用延时子程序
       DJNZ R2,LOOP_1               ;  是否右移了7次,如果不是则跳回LOOP_1
       JMP  START                   ;  重复执行该程序
       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;右移7位;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

DELAY:                        ;  延时子程序(200ms) ,晶振12MHZ.
       MOV R3,#20
D1:
       MOV R4,#20
D2:    
       MOV R5,#248
       DJNZ R5,$
       DJNZ R4,D2
       DJNZ R3,D1
       RET                     ;  延时结束
       END                     ;  结束

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;指令运用:
                 1.数据装载指令:MOV,Rn,#n.n是数值或数据
                 2.清零操作:CLR,A
                 3.位移动操作:RLC A,RRC A
                 4.调用子程序:CALL  DELAY 
                 5.循环指令:DJNZ R4,D2
                 6.返回指令:RET和RETI。这里RETI没有使用
                 7.结束指令:END


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部