永发信息网

单片机 跑马灯 代码详解

答案:3  悬赏:30  手机版
解决时间 2021-04-22 17:25

最近刚刚接触单片机

能否请高手指导下,这些代码的具体意义是什么 ..

越清楚越好....

ORG 0000H
AJMP START
ORG 0030H

START: MOV A, #0FFH
CLR C
MOV R2, #08H

LOOP: RLC A
MOV P2, A
CALL DELAY
DJNZ R2, LOOP
MOV R2,#07H

LOOP1: RRC A
MOV P2, A
CALL DELAY
DJNZ R2, LOOP1
JMP START

DELAY: MOV R3, #20
D1: MOV R4, #200
D2: MOV R5, #248
DJNZ R5, $
DJNZ R4, D2
RET
END

最佳答案

FFH的时候灯是一个都不会亮的,00H的时候灯就会全亮,也就是1灭,0亮,这个记住,
ORG 0000H下面的指令地址是0000H
AJMP STAR;跳到STAR处


ORG 0030H下面的指令地址是0030H(0003-002B之间是中断用的,所以主程序要从0030H开始)
START: MOV A, #0FFH;给A(累加器)FFH


CLR C;CY清零,CY程序状态字里的进位标志位,这个以后会把这个0给灯,也就是P2口
MOV R2, #08H;给R2一个8的值,这是以后移位的次数


LOOP: RLC A;左移,刚好把CY移到A的最高位,也就是A的最高位是0
MOV P2, A;把A给了P2,这时最边上的灯亮了
CALL DELAY;调用时间程序;也就是让灯亮一会儿
DJNZ R2, LOOP;R2自减1,不等于0,跳到LOOP,就是又移位,边上的第二灯亮了,就这样循环7次
MOV R2,#07H重新给R2一个值


LOOP1: RRC A;右移A,带CY移位
MOV P2, A把A给P2,这时灯会换个方身移位
CALL DELAY延迟一下
DJNZ R2, LOOP1自减1不等0跳LOOP1,就这样循环到R2=0为止
JMP START跳到程序开始,重新执行程序


DELAY: MOV R3, #20;给R3一个20
D1: MOV R4, #200给R4一个200
D2: MOV R5, #248给R5一个248
DJNZ R5, $;R5自减一,不等0,就在这一条指跳,也就是在这里跳动248次
DJNZ R4, D2,R4自减一,不等0跳到D2
RET子程序返回
END程序结序

全部回答

我纠正一下,下面有一行,我搞错了,不要误导了你,

FFH的时候灯是一个都不会亮的,00H的时候灯就会全亮,也就是1灭,0亮,这个记住, ORG 0000H下面的指令地址是0000H AJMP STAR;跳到STAR处

ORG 0030H下面的指令地址是0030H(0003-002B之间是中断用的,所以主程序要从0030H开始) START: MOV A, #0FFH;给A(累加器)FFH

CLR C;CY清零,CY程序状态字里的进位标志位,这个以后会把这个0给灯,也就是P2口 MOV R2, #08H;给R2一个8的值,这是以后移位的次数

LOOP: RLC A;左移,刚好把CY移到A的最高位,也就是A的最高位是0 MOV P2, A;把A给了P2,这时最边上的灯亮了 CALL DELAY;调用时间程序;也就是让灯亮一会儿 DJNZ R2, LOOP;R2自减1,不等于0,跳到LOOP,就是又移位,边上的第二灯亮了,就这样循环7次 MOV R2,#07H重新给R2一个值

LOOP1: RRC A;右移A,带CY移位 MOV P2, A把A给P2,这时灯会换个方身移位 CALL DELAY延迟一下 DJNZ R2, LOOP1自减1不等0跳LOOP1,就这样循环到R2=0为止 JMP START跳到程序开始,重新执行程序

DELAY: MOV R3, #20;给R3一个20 D1: MOV R4, #200给R4一个200 D2: MOV R5, #248给R5一个248 DJNZ R5, $;R5自减一,不等0,就在这一条指跳,也就是在这里跳动248次 DJNZ R4, D2,R4自减一,不等0跳到D2 RET子程序返回 END程序结序

*******************************************************************下面的这句要改下.

LOOP: RLC A;左移,刚好把CY移到A的最高位,也就是A的最高位是0.

上面的搞错了,

应该是把CY移到A的最低位,就是就是A的最低位是0

最好自己找找有关书籍来看看,说了估计你也不是会很明白的

ORG 0000H AJMP START ORG 0030H

START: MOV A, #0FFH CLR C;进位位清零 MOV R2, #08H;r2寄存器赋值为8,亦即要循环8次

LOOP: RLC A;逻辑左移a,亦即A中0FFH变为0FEH MOV P2, A;点亮LED CALL DELAY;延时 DJNZ R2, LOOP;循环 MOV R2,#07H;略

LOOP1: RRC A;逻辑右移 MOV P2, A CALL DELAY DJNZ R2, LOOP1 JMP START

DELAY: MOV R3, #20;延时函数,时间约为【5+(248*2+3)*200】us=0.1s,不过从代码看估计你弄错了吧,R3没用上,哪copy来的程序啊 D1: MOV R4, #200 D2: MOV R5, #248 DJNZ R5, $ DJNZ R4, D2 RET END

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
茶代表什么含义,月饼,中秋的含义
穿越火线为什么那么多开挂?
QQ农场我一天种3次稻草是这里面一天最的经验
刚260W收了个80链子,无宝石灵130
天下贰开什么箱子可以天域武器箱子怎么得到
非诚不找小品台词,一起来笑吧小品非诚勿扰台
我的配置够GTA4吗
生产新生物燃气炉
佛山市南海区桂城街道桂雅社区卫生服务站地址
怎么总是觉得自己少了很重要的一部分?
水浒Q传里的跨服竞技积分和比武大赛积分各可
联想电脑的年销售量是多少?他们在全国有多少
哪些零食可以带上飞机,坐飞机自己能带零食吗
杜木桥十队我想知道这个在什么地方
一个网段计算的题目--2003年网络设计师习题
推荐资讯
LGLV7500上市没有
安溪经济怎么样,怀远县跟安吉县 哪个经济好
坚强是谁唱的呀!
cf女角色问题
商贸大道南九支沟桥地址在哪,我要去那里办事
我新添加的QQ聊天表情总是不见呢?
程野玩转大话西游台词,谁能提供《大话西游》
钱用英语怎么说,钱用英语怎么说?
孙吉和孙祥有没有和申花续约
描写夏干旱景色的段落,有关夏季农作物干旱的
如何消除EMI?
请款单怎么写,请款单、付款申请单填制方法
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?