各位大师们 你们好,我将用定时器编写一个5分钟的定时程序,主循环中如果检测到一个 IO口为低电平的时候将申请中断 由单片机的另一个IO口输出5分钟的高电平状态
主循环如何编写?如果是检测到IO口为低电平时就要启动定时器,如何编程?谢谢高手们指点
MAIN: SETB _WDI;喂狗
NOP
NOP
MOV C,K1_IN;读IO口状态
JNC OPENRELAY;若=0证明是低电平
LJMP MAIN
OPENRELAY: SETB RELAY;打开继电器
SETB TF1;?????该处如何申请中断去延时这5分钟???
LJMP MAIN
TIMER1: SETB _WDI
MOV TH1,#03CH ;赋初值
MOV TL1,#0B0H
DJNZ R3,EXT1 ;1s到了?没有转去EXT1
MOV R3,#20 ;1s到了,重新赋值
DEC R4 ;1S到了R4减1
CJNE R4,#0,EXT1 ;60s到了吗,没有到则转去EXT1
MOV R4,#60 ;60S到了重新赋值
DEC R5 ;60S到了R5减1
CJNE R5,#0,EXT1 ;300s到了吗,没有到则转去EXT1
MOV R5,#5 ;300s到了,重新赋值
closedrelay: CLR RELAY
SETB C
EXT1: RETI ;中断返回
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |