[讨论] 实验2.流水灯

rain   2006-7-17 12:18 楼主

在上一个试验中,我们让一个灯熄灭、点亮、熄灭、点亮的闪烁着。那么,我们如果在第一个灯熄灭之后,不是再点亮第一个灯了,而是去点亮第二个等。在第二个灯熄灭之后,再去点亮第三个灯,一次类推,不就成了流水灯了吗!下面我们来看看这个流水灯具体是如何做的。

我们的《编程试验一体板》已经接好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中,你就可以看到“流水”啦!

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复