单片机流水灯汇编程序看不懂,求解释...

ORG 000H
MOV P1,#0FFH
L034: MOV A,#0FEH
L033: MOV P1,A
LCALL SE19
RL A
SJMP L033
ORG 07A0H
SE19: MOV R6,#0A0H
L036: MOV R7,#0FFH
L035: DJNZ R7,L035
DJNZ R6,L036
RET
END

看不懂啊,想改变流水灯快慢,改怎么来呢?

ORG 000H //定位,使程序放在0000H处
MOV P1,#0FFH //使P1口全为高电平,八个灯全灭
L034: MOV A,#0FEH //11111110B值送入A,只使P1.0为低电平
L033: MOV P1,A //将A值送出P1口,只有D1亮
LCALL SE19 //调用延时子程序(决定每个灯亮的时间长度)
// {可在此再次(或多次)加入“LCALL SE19”使亮的时间增加一倍}

RL A //左循环位移,为了下次只使D2亮(再下次就是D3……)
SJMP L033 //跳转到L033处重新执行,使D1、D2、D3……D1轮流亮

//下面是延时程序,决定每调用一次延时多长时间
ORG 07A0H //定位,将下面的程序(延时程序段)放在07A0H处
SE19: MOV R6,#0A0H //更改#0A0H值
L036: MOV R7,#0FFH //或更改#0FFH值就可以改变其每次调用延时的时间
L035: DJNZ R7,L035
DJNZ R6,L036
RET
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-29
ORG 000H 程序开始存放地址
MOV P1,#0FFH 将11111111输出到P1口
L034: MOV A,#0FEH 将11111110赋值给A
L033: MOV P1,A 将A输出到P1口,点亮灯D1
LCALL SE19 调用延时程序,让灯D1亮一段时间
RL A A左移操作,A的值为11111101,准备点亮D2
SJMP L033 返回L033,循环点亮8个亮
ORG 07A0H 以下的都是延时子程序
SE19: MOV R6,#0A0H 给R6赋值
L036: MOV R7,#0FFH 给R7赋值
L035: DJNZ R7,L035 R7减一不为0判断,如果R7减到0继续执行下一行指令,否则返回L035
DJNZ R6,L036 原理同上
RET 延时子程序调用完毕,返回调用点,即下一个执行RLA
END

单片机流水灯编译程序
这是一个简单的单片机流水灯程序。程序中包含两个主要部分:主函数和延时函数。主函数初始化P1口为0xfe,即设置P1口的高8位为1。随后进入无限循环,在每次循环中,延时600后,将temp左移一位,将新值赋给P1口。这样,P1口的输出就形成了流水灯的效果。延时函数使用了双重循环实现。外部变量temp用于存...

单片机汇编流水灯后段程序怎么理解,L1L2L3 R2R3是什么作用?我不懂...
L2:DJNZ decreas jump not zero 就是非零跳转,判断R3是否为0,如果不为0跳转到L2这个标号所在的行去执行程序。R2,R3 这些都是51的寄存器,这些寄存器是用来处理中间数据的缓冲用的,这几个寄存器很常用的,而且还支持位操作的。我想你应该好好看看教科书或者手册了。

单片机流水灯汇编求指教,请大神解释每行代码的意思
调用延时程序,使小灯亮一会儿,让人眼辨别出小灯是依次循环点亮的 MOV P0,A ;把00000010b送p0口,使左边第二个小灯亮 LCALL DELAY ;调用延时 SJMP LOOP ;跳到loop ,这样循环下来,依次从右往左点亮小灯 DELAY:MOV R6,#255 ;延时程序 D1:MOV R7,#255 DJNZ R7,DJNZ R6,D1 RET END ...

用51单片机写了一个流水灯程序,有一点问题,请高手解惑
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。要想按键随时有效,应该把两个移位函数_cror_,_crol_ 放在主程中,检测key也放在...

51单片机中如何用汇编语言编写流水灯
RETI;返回主程序END;汇编程序结束 扩展资料: 实现流水灯的三个方法: 第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。 第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P...

流水灯单片机程序代码
单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,#11011111BACALLDELAYMOVP1,#10111111BACALLDELAYMOVP1,#01111111BACALLDELAYAJMP...

流水灯汇编解释?
ORG是伪指令,代表这行在存储介质上的地址。ORG0000H就是存储介质上的第一行。MOV R2,#08H 没有具体意义,只是让流水灯一直运行的一个数量位而已。一次会运行8组,但是会重新赋值,所以会一直不停的流动。JB 只是一个检测位址是否为1,如果为1则跳转,否则不跳转程序。JB P0.0,LOOP1 这条...

单片机流水灯有一处不懂,求指教 这个t=0;t<120;t++ 中,这个120这个数字...
单片机流水灯有一处不懂,求指教 这个i=0;i<120;i++ 中,这个120这个数字是控制循环次数的变量,初值等于零,然后判断i的值,小于120则i=i+1,到等于120时,退出循环。用这种空循环的办法达到延时的目的。

c51单片机,流水灯的循环,可以给我解释一下这三行代码吗?
解释代码通常不能脱离电路,看不到电路只能解释语句操作的逻辑含义,第一句执行的操作是屏蔽掉P2的高3位(即让高3位清零,低5位保持原值)且让最高位置1,第二句的执行操作是让P0只保留一位0且该0位每循环左移一次,第三句还是屏蔽P2高3位但未把最高位置1。

急!急!急!单片机流水灯汇编语言程序
5只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;延时60秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时60秒 LCALL DELAY ;...

相似回答