ORG 00H;
START:
MOV TMOD,#10H; 设置Timer1工作在模式1下
MOV R1,#50; R1为重复定时计数器(R1=50,1s)(R1=100,2s)最大255
LOAD:
MOV TL1,#0E0H; 往TL1和TH1中载入计数的初始值B1E0H
MOV TH1,#0B1H;
SETB TR1; 启动Timer1
CHECK:
JNB TF1,CHECK; 检测Timer1标志,当TF1=1,跳出执行下一行
CLR TR1; TR1清0 关闭Timer1
CLR TF1; 将TF1清0
DJNZ R1,LOAD; 如果R1≠0,跳回LOAD重新装载计数初始值
CLR P1.7;
MOV R1,#10;(10s)
D1: MOV R2,#1;(1Min)
D2: MOV R3,#100 ; 延时子程序(1000ms)
D3: MOV R4,#20 ;
D4: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,D4 ;
DJNZ R3,D3 ;
DJNZ R2,D2 ;
DJNZ R1,D1 ;
SETB P1.7;
MOV R1,#30;(60s)
D5: MOV R2,#1;(10Min)
D6: MOV R3,#100 ; 延时子程序(1000ms)
D7: MOV R4,#20 ;
D8: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,D8 ;
DJNZ R3,D7 ;
DJNZ R2,D6 ;
DJNZ R1,D5 ;
SETB P1.0; 将P1.0口置高电平1,使LED灯灭
MOV R1,#1;(60s)
L1: MOV R2,#1;(10Min)
L2: MOV R3,#100 ; 延时子程序(1000ms)
L3: MOV R4,#20 ;
L4: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,L4 ;
DJNZ R3,L3 ;
DJNZ R2,L2 ;
DJNZ R1,L1 ;
CLR P1.0; 将P1.0口置低电平0,使LED灯亮
MOV R1,#1;(60s)
L5: MOV R2,#1;(10Min)
L6: MOV R3,#100 ; 延时子程序(1000ms)
L7: MOV R4,#20 ;
L8: MOV R5,#248;
DJNZ R5,$ ;
DJNZ R4,L8 ;
DJNZ R3,L7 ;
DJNZ R2,L6 ;
DJNZ R1,L5 ;
LJMP START;
END; 程序结束(总延时1s)
|