流水灯汇编语言程序

要求是八个发光二极管从中间往两边亮,先是中间两个亮然后然后第三个和倒数第三个亮,然后倒数第二个和第二个亮,。。。。一次循环。p2口接led,不要用位定义做!!!
这个问题我想了好久。、、
希望高手指教!!
感激不尽!!!

ORG 0000H ;程序开始
SJMP START ;跳转到START
ORG 0050H ;START从ROM的0050H开始存储
START: MOVE P1.0,#00000001B ;把二进制数00000001B送到P1口
LCALL DELAY ;调用延时子程序
MOVE P1.0,#00000010B ;把二进制数00000010B送到P1口
LCALL DELAY
MOVE P1.0,#00000100B
LCALL DELAY
MOVE P1.0,#00001000B
LCALL DELAY
MOVE P1.0,#00010000B
LCALL DELAY
MOVE P1.0,#00100000B
LCALL DELAY
MOVE P1.0,#01000000B
LCALL DELAY
MOVE P1.0,#10000000B
LCALL DELAY
LJMP START ;跳转到START

;延时子程序DELAY,改变R5、R6、R7中的值(0到255),可以改变延时时间
DELAY: MOV R5,#20 ;把20放到寄存器R5中,
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$ ;把寄存器R7中的内容减1,如果结果不定于0,则跳转到本身,如果等于0,执行下一条程序
DJNZ R6,D2 ;把寄存器R6中的内容减1,如果结果不定于0,则跳转到本身,如果等于0,跳转到D2
DJNZ R5,D1
RET
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-02-15
用查表做。

N_ST: MOV R0,#0
LOOP:
MOV DPTR,#LED_TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P2,A
CALL DELAY
INC R0
CJNE R0,#4,LOOP
AJMP N_ST

LED_TAB: DB 18H,24H,42H,81H本回答被提问者采纳
第2个回答  2020-12-09

流水灯(理论+编程)

相似回答