打印

两个中断的问题

[复制链接]
1908|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddddd6666|  楼主 | 2012-8-11 07:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
  }  
}

相关帖子

沙发
ddddd6666|  楼主 | 2012-8-11 08:02 | 只看该作者
我的意思是,当外部中断工作时,定时器中断的时间要清零。

使用特权

评论回复
板凳
dlyt_test001| | 2012-8-11 08:06 | 只看该作者
“当外部中断被触发时,定时器中断要停止工作。”是不可能的。
1、51单片机中断不能被打断。如果正在处理定时器中断,外部中断到来,那么,必须等到定时器中断处理完毕,才能处理外部中断。
2、如果正在处理外部中断,定时器中断到来,那么单片机是不会响应的,也就是“停止工作了”。当然,停止工作是假的,如果外部中断处理完毕,还是会响应定时器中断的。当然,定时时间会有延迟。

使用特权

评论回复
地板
forgot| | 2012-8-11 08:27 | 只看该作者
定时器都被打断了还定个屁时啊

使用特权

评论回复
5
ddddd6666|  楼主 | 2012-8-11 08:35 | 只看该作者
四楼:“定时器都被打断了还定个屁时啊”嘴巴不干净。

使用特权

评论回复
6
ddddd6666|  楼主 | 2012-8-11 08:36 | 只看该作者
谢谢3楼,我明白了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

93

帖子

1

粉丝