📄 11传统延时跑马灯.asm
字号:
org 00h ;指定程序放置的地址,说明,放在程序寄存器的任意地址运行效果都是相同的,但是,用户必须合理分配,一般从00h开始放置
clr p1.0 ;点亮一个灯,以便观查移位效果
main: mov a,p1 ;读入p1口的数据,利用累加器移位(如果你在程序运行时,人为的强制改变了p1口的高低电平,累加器也会帮你移位)
rl a ;将数据向左移位,下面是向右移位,(如果同时移了就表示没有移)
;rr a ;前面有分号,表示本行相当于注解,不用执行
mov p1,a ;将累加器的数据放到p1口
call ys1 ;调用延时子程序
jmp main ;进入下一循环
ys1: mov r5,#10 ;延时子程序,为了保证延时准确,必须计算让程序能停留在这个子程序的周期数;因些必须预置数
mov r6,#100
mov r7,#100
ys2: djnz r7,ys2 ;减1不为零跳到ys2,即跳到本行,也就停在本行100次,
mov r7,#100 ;再次预置数
ys3: djnz r6,ys2 ;减1不为零跳到ys2,也就是让程序100次停到ys2那里100次
mov r6,#100 ;再次预置数
ys4: djnz r5,ys2 ;让程序仍然跳到ys2,重复以上10次,这样总共让程序在这里执行大约10万个周期,起到延时的作用
ret ;子程序运行结束,返回原调用的位置
end ;程序结束,以后可以放置任何内容
说明:由于单片机运行的速度很快,必须延时,人眼才能看清楚LED点亮和熄灭的过程,但是,在实际应用中,象这样应用延时程序的意义不在,
因为这占用了宝贵的CPU运行时间,在很多时间,CPU不是很有空.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -