实验3.跑马灯
<p><font size="2">这个试验的跑马灯和上个试验的效果是一样的,也是使每个灯轮流点亮。既然效果一样,我们为什么做这么多灯的试验哪?我们做试验,不是开发产品,要求创新,我们做试验主要是学习知识,虽然这个试验和上个试验的,效果一样,但是我们确实使用了不同的方法。</font></p> <p><font size="2">在上节课中让 LED 流水是去逐个控制P1端口的每个位来实现的,那么我们这次的试验是在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后让这个数据向高位移动不就实现“流水”效果啦?的确如此!</font></p> <p align="left"><font size="2"> 可惜,8051没有让P1数据移动的指令,但有对累加器ACC中数据左移或右移的指令,ACC是8051单片机内部算术逻辑单元中的一个“寄存器”(这里叫他寄存器是不正确的,但你可以先这样理解,ACC在指令中常写为A),他在数据传输和数据处理过程中作用十分重要,ACC为8位。他可与片内所有单字节寄存器交换数据,实际上P1和其他端口在单片机中也是一个寄存器。这样我们可以将需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。</font></p> <p align="left"><font size="2">程序如下:</font></p> <p align="left"><a name="star"><font color="#000000" size="2">star</font></a><font size="2">: ;开始<br /> mov acc,#0feh ;ACC中先装入LED1熄灭的数据(即二进制的 1111 1110)<br /> mov p1,acc ;将ACC的数据送P1口<br /> acall </font><a href="http://www.01mcu.com/Mcu_CAI/liushui3.htm#delay"><u><font color="#800080" size="2">delay</font></u></a><br /><font size="2"> mov r0,#7 ;因上句送到 p1口的数据就熄灭了一位,<br /> ;所以将数据再移动7次就完成一个8位流水过程 <br /></font><a name="loop"><font color="#000000" size="2">loop</font></a><font size="2">: ;数据移动循环<br /> rl a ;将ACC中的数据左移一位<br /> mov p1,a ;把ACC移动过的数据送p1口显示<br /> acall </font><a href="http://www.01mcu.com/Mcu_CAI/liushui3.htm#delay" target="_top"><u><font color="#800080" size="2">delay</font></u></a><font size="2"> ;调用延时<br /> djnz r0,</font><a href="http://www.01mcu.com/Mcu_CAI/liushui3.htm#loop"><u><font color="#800080" size="2">loop</font></u></a><font size="2"> ;没有移动够7次继续移动<br /> ljmp </font><a href="http://www.01mcu.com/Mcu_CAI/liushui3.htm#star"><u><font color="#800080" size="2">star</font></u></a><font size="2"> ;移动完7次后跳到开始重来,以达到循环流动效果<br /></font><a name="delay"><font color="#000000" size="2">delay</font></a><font color="#000000" size="2">: ;延时子程序,就是上节课中的延时子程序<br /> mov r1,#50<br />del0: <br /> mov r2,#100<br />del1:<br /> mov r3,#100<br /> djnz r3,$<br /> djnz r2,del1<br /> djnz r1,del0<br /> ret ;延时子程序结束,返回到调用处的下一句<br /></font><font size="2">end ;本汇编程序到此结束</font></p> <p align="left"><font size="2"> 接下来,将上述程序编译,并烧写到前面我们的实验芯片中.</font></p> <p></p><p>文章内容介绍详细,学习了,不错的资料,学习了。感谢分享。</p>
页:
[1]