11传统延时跑马灯.asm

来自「这是2008年stc程序个人设计汇总」· 汇编 代码 · 共 27 行

ASM
27
字号
			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 + =
减小字号Ctrl + -
显示快捷键?