各位大虾:
小弟是刚学的51单片机(STC89C52RC),自己写个变速流水灯的程序,下载单片机功能实现了;但是我自己想这个程序不是我想要的。自己想写个精简的,带RL或RR的。问题:不知如何在延时子程序实现变速?
以是我写的变速流水灯程序,在各位面前献丑了!还麻烦大虾们。师兄,师姐们多多指点!小弟,在这里谢谢你们!
;************************************************************************
;让P1口实现流水灯,延时子函数为50MS,R0参数;
;第一个状态P1口的延时时间为400MS,
;第二个状态P1口的延时时间为350MS
;第三个状态P1口的延时时间为300M..........
;最后一个状态P1口的延时时间为50MS
;************************************************************************
ORG 0000H
LJMP START
ORG 0030H
START:
MOv P1 ,#0FEH
MOV R0 ,#8
L0:
LCALL F_DELAY
DJNZ R0 ,L0
MOV P1 ,#0FDH
MOV R0 ,#7
L1:
LCALL F_DELAY
DJNZ R0 ,L1
MOV P1 ,#0FBH
MOV R0 ,#6
L2:
LCALL F_DELAY
DJNZ R0 ,L2
MOV P1 ,#0F7H
MOV R0 ,#5
L3:
LCALL F_DELAY
DJNZ R0 ,L3
MOV P1 ,#0EFH
MOV R0 ,#4
L4:
LCALL F_DELAY
DJNZ R0 ,L4
MOV P1 ,#0DFH
MOV R0 ,#3
L5:
LCALL F_DELAY
DJNZ R0 ,L5
MOV P1 ,#0BFH
MOV R0 ,#2
L6:
LCALL F_DELAY
DJNZ R0 ,L6
MOV P1 ,#07FH
MOV R0 ,#1
L7:
LCALL F_DELAY
DJNZ R0 ,L7
LJMP START
;-----------------------------------------------------
F_DELAY:
MOV R3 ,#5 ;延时时间为50MS
D1: MOV R4 ,#20
D2: MOV R5 ,#248
DJNZ R5 ,$
DJNZ R4 ,D2
DJNZ R3 ,D1
RET
;-----------------------------------------------------
END |