51单片机外部中断子程序为什么会执行两次?

51单片机外部中断子程序为什么会执行两次?,第1张

你的外部中断应该是属于下降沿触发,当有一个下降沿到来时外部中断请求标志IE0或IE1(外部中断0或外部中断1请求中断标志,下面简称为IEx)就会置1,当进入中断程序后IEx由硬件归零。也就是说单片机当检测到IEx为1的时候就会进入到外部中断程序。\x0d\x0a现在来分析一下为什么你的程序会执行两次中断。\x0d\x0a当单片机外部中断引脚第一次接收到一个下降沿时,IEx被置1,进入中断程序,随即IEx被硬件清零。然而由于你用杜邦线接触P3.2口存在抖动(你感觉不到),外部中断引脚再次接受到一个下降沿,IEx又被置1,单片机又要响应中断,但此时由于上一个中断程序未执行完,单片机将等待外部中断程序执行完(你可以理解为有两个中断事件,但这两个事件优先级相同,所有按顺序响应)。在这个过程中,你的接触仍然会产生很多下降沿,但因为IEx只有响应了中断事件后才会清零,因此IEx一直为1。当第一次的中断程序执行结束后,单片机检测到IEx又是1,马上又再次进入中断。因为你的接触时间远远小于你的中断程序执行时间,因此在第二次执行中断程序前已不存在下降沿,所以进入第二次中断程序后,IEx就被清零了,这样执行完第二次中断程序后就不会再次进入中断了。\x0d\x0a说了那么多希望你能明白吧。不明白可以翻查相关单片机外部中断相关资料。

中断分为4个步骤:中断请求→中断相应→中断处理→中断返回(先做更重要的事)

1、数据的输入/输出传送方式

外部中断要看对应引脚外部的电平状态。

例如:外部中断0(INT0)对应的引脚是P32,

当出现 低电平 ,即P32引脚连接的地方是 低电平 ,进入相应的中断函数;

当出现 下降沿 ,即P32引脚连接的地方 由高电平变为低电平 ,进入相应的中断函数

内部中断源要看单片机内部的定时器/计数器

中断允许寄存器IE

定时器/计数器0/1控制寄存器TCON

对同时发生多个中断申请时:

不同优先级的中断同时申请:先高后低

相同优先级的中断同时申请:按序执行

正处理低优先级中断又接到高级别中断:高打断低

正处理高优先级中断又接到低级别中断:高不理低

初始化的意思如图所示

实现思路

查看上方 P3第二功能各引脚功能定义 ,P3.3是外部中断1 (INT1)的外部输入引脚

编写一个程序,使得 S2按键按下 时,某个IO口(下面程序选择了P3.7这个IO口) 产生跳变沿 (由1变0)。P3.3与P3.7用跳线连接,使P3.3口与P3.7口同时产生跳变沿。

代码如下:

//实现led灯一秒亮灭闪烁

void main()

{

  TMOD=0x01//设置定时器0为工作方式1(M1 M0为01)

  TH0=(65536-45872)/256//装初值11.0582晶振定时50ms数为45872

  TL0=(65536-45872)%256

  EA=1//开总中断

  ET0=1//开定时器0中断

  TR0=1//启动定时器0

  while(1)//程序停止在这里等待中断发生

}

void T0_time() interrupt 1

{

  TMOD=0x01//重装初值

  TH0=(65536-45872)/256

  num++;//num每加一次判断一次是否到20次

  if(num==20)//如果到了20次,说明1秒时间到

      {

          num=0//num清0重新计数

          led=~led1;

      }

}

扩展资料

定时器有两种工作模式,分别为计数模式和定时模式。对Px,y的输入脉冲进行计数为计数模式。定时模式,则是对MCU的主时钟经过12分频后计数。因为主时钟是相对稳定的,所以可以通过计数值推算出计数所经过的时间。

51单片机计数器的脉冲输入脚。主要的脉冲输入脚有Px,y, 也指对应T0的P3.4和对应T1的P3.5,主要用来检测片外来的脉冲。而引脚18和19则对应着晶振的输入脉冲,脉冲的频率和周期为

F = f/12 = 11.0592M/12 = 0.9216MHZ      T = 1/F = 1.085us

51计数器的计数值存放于特殊功能寄存器中。T0(TL0-0x8A, TH0-0x8C), T1(TL1-0x8B, TH1-0x8D)

定时器常用作定时时钟,以实现定时检测,定时响应、定时控制,并且可以产生ms宽的脉冲信号,驱动步进电机。定时和计数的最终功能都是通过计数实现,若计数的事件源是周期固定的脉冲则可实现定时功能,否则只能实现计数功能。因此可以将定时和计数功能全由一个部件实现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11016440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存