st89c52的单片机,我用两个中断,一个外部中断,一个定时器中断。当外部中断被触发时,定时器中断要停止工作。外部中断不工作时,定时器中断启动。可是我搞了半天,也没有实现这个功能。只能把count这个变量清零,才把时间清零。
# include"reg52.h"
sbit jdq=P2^4; //继电器
sbit fmq=P2^7;//蜂鸣器
int count=0;
void main()
{
jdq=0; //继电器初始化
fmq=1;//蜂鸣器初始化
EX0=1;
IT0=0;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=1;
TMOD=0x09;
PX0=1; //优先级
PT0=0;
EA=1;
while(1) //等待
{;
}
}
void int0() interrupt 0 //外部中断
{
jdq=0;
fmq=1;
count=0;
}
void int12() interrupt 1 //定时器中断
{ TH0=0x3c;
TL0=0xb0;
count++;
if(count>=24000) //定时20分钟
{jdq=1;
fmq=0;
count=0;
}
} |