在上一个试验中,我们让一个灯熄灭、点亮、熄灭、点亮的闪烁着。那么,我们如果在第一个灯熄灭之后,不是再点亮第一个灯了,而是去点亮第二个等。在第二个灯熄灭之后,再去点亮第三个灯,一次类推,不就成了流水灯了吗!下面我们来看看这个流水灯具体是如何做的。 我们的《编程试验一体板》已经接好8个发光二极管,不需要任何改动,就可以做这个试验。接线图和上一个试验一样,参考上一个试验的图片。 流水灯程序及含义如下: star: ;程序开始 clr p1.0 ;清除p1.0,使其=0,LED1点亮 acall delay ;调用延时子程序 setb p1.0 ;置高p1.0,使其=1,LED1熄灭 clr p1.1 ;点亮LED2 acall delay setb p1.1 ;熄灭LED2 clr p1.2 ;点亮LED3 acall delay setb p1.2 ;熄灭LED3 clr p1.3 ;点亮LED4 acall delay setb p1.3 ;熄灭LED4 clr p1.4 ;点亮LED5 acall delay setb p1.4 ;熄灭LED5 clr p1.5 ;点亮LED6 acall delay setb p1.5 ;熄灭LED6 clr p1.6 ;点亮LED7 acall delay setb p1.6 ;熄灭LED7 clr p1.7 ;点亮LED8 acall delay setb p1.7 ;熄灭LED8 ljmp star ;返回到开始循环 delay: ;延时子程序 mov r1,#50 del0: mov r2,#100 del1: mov r3,#100 djnz r3,$ djnz r2,del1 djnz r1,del0 ret ;延时子程序结束,返回到调用处的下一句 end 请将上面的程序保存为 Test.asm,进行编译,并烧写到stc89c51中,你就可以看到“流水”啦!
|