开关控制的单片机流水灯 汇编

在单片机控制下,用一个拨动开关K1,控制8个发光二极管L1-L8,发光的时间间隔为0.5秒。
具体要求:
当拨动开关K1发出低电平(K1=0)时,L1-L8从两头向中间逐个点亮,当L1-L8全部点亮后延时2秒钟全部熄灭,如此往复循环。
当拨动开关K1发出高电平(K1=1)时,中间的L4、L5点亮,然后点亮的灯向两边扩展,直到L1-L8全部点亮后延时2秒钟全部熄灭,如此往复循环。
悬赏分:20 - 解决时间:2009-12-21 13:42
最佳答案:
;--------------------------------------------
下列程序,经过了编译、仿真,可以满足要求。
;--------------------------------------------
    ORG 0000H
    MOV R2, #0
M_LOOP:
    MOV A, R2
    INC   R2
    ANL A, #07H
    MOV C, P3.2
    MOV ACC.3, C
    MOV DPTR, #TAB
    MOVC A, @A + DPTR
    MOV P1, A
    CALL DL5KT
    SJMP M_LOOP
;--------------------------------------------
TAB:
    DB   0xFF, 0xE7, 0xC3, 0x81, 0x00, 0x00, 0x00, 0x00
    DB   0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00
;--------------------------------------------
DL5KT:           
    MOV R5, #10
    MOV R6, #100
    MOV R7, #250
    DJNZ R7, $
    DJNZ R6, $ - 4
    DJNZ R5, $ - 8
    RET
;--------------------------------------------
    END
;--------------------------------------------
回答者: 做而论道 - 十一级   2009-12-19 01:39
提问者对于答案的评价:对吗,有点短哦....但还是谢谢你哦
原题网址:http://zhidao.baidu.com/question/129794683.html?fr=im2
;--------------------------------------------
程序说明:在TAB表格里面,定义了两行数据,上一行,是在K1=0期间使用,下一行,是在K1=1期间使用。
表格中的内容,可以任意改写,即可显示不同的花样。
;--------------------------------------------
呵呵,楼主可能看惯了长篇大论的巨制,确实也有人发表过上百行的流水灯的程序,但是,做而论道编写的这不到30行的汇编语言程序,效率要高出他们许多。不信就进行实验检测。上面的程序,可以使用下面的电路图来进行仿真实验。开关控制的单片机流水灯 汇编_第1张图片
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/a5fcfaf6e738621a730eece1.html
实验证明,别看程序简短,却完全可以满足要求;在要求改变花样的时候,程序修改起来也极为方便。

你可能感兴趣的:(流水灯)