看看下面的程序,是不是最简单:
ORG 0000H
SETB TR0 启动T0
MOV R2, #250 定时计数初值
LOOP:
MOV TH0, #(8192 - 8000) / 32 定时8ms
MOV TL0, #(8192 - 8000) MOD 32
JNB TF0, $ 等待8ms
CLR TF0
DJNZ R2, LOOP 每隔8ms,R2减一次一
CPL P1.0 R2为0则LED亮灭转换
LJMP 0000H
END
本程序,已经实验成功。
试试下列程序:ORG 0000H
SJMP BEGIN
ORG 000BH
MOV TH0, #3CH 定时100ms
MOV TL0, #0B0H
DJNZ R7, E_T0
MOV R7, #5
SETB F0 每500ms置一
E_T0:RETI
------------------------------------
BEGIN:
MOV TMOD, #01H T0定时方式1
MOV TH0, #3CH 50ms@12MHz
MOV TL0, #0B0H 100ms@6MHz
MOV R7, #5
SETB TR0
SETB ET0
SETB EA
------------------------
M_LOOP:
MOV A, #255
L1:
MOV P1, A
JNB F0, $
CLR F0
CLR C
RLC A
JCL1
------------------------
L2:
MOV P1, A
JNB F0, $
CLR F0
SETB C
RRC A
JNC L2
------------------------
MOV R2, #8 全亮全灭8次
L3:
MOV P1, #0 全亮
JNB F0, $
CLR F0
MOV P1, #255全灭
JNB F0, $
CLR F0
DJNZ R2, L3
------------------------
JMP M_LOOP
------------------------------------
END
本程序可实现:
L1-L8依次点亮----L1-L8依次熄灭----8个灯全亮全灭8次~循环 各时序间隔0.5s。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)