高低电平触发的上升沿触发和下降沿触发区别

电子说

1.2w人已加入

描述

外部中断可以分为电平触发和边缘触发两种,那么这两种中断有什么区别,我们今天讲解下。

1、什么是中断

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);

CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);

待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。

通俗点说:你正在家里做家务,突然有人来找你,打断了你的进程,在你们交谈完之后,你就又回去继续进行你的家务活,这其中被打断的过程,就叫做中断,而在中断结束之后,你则会继续进行本来应该做的事情。

高低电平触发:

低电平触发:

低电平触发中断顾名思义,就是检测到引脚为低电平就触发,从而进入中断函数中处理这个中断,并且在高或低电平保持的时间内持续触发,假设是低电平触发,只要引脚为低电平时间内中断一直有效,那么就会一直进入中断,直到电平变化为高电平。

高电平触发:

则是 检测为高电平就触发,其余与低电平触发相同

注意事项:

1.电平触发中断,如果在电平没有恢复之前就退出中断程序,那么会在退出后又再次进入中断。只要不退出是不会重复触发的。

也就是重复触发只有在退出中断后才会再次触发,不用担心这次还没进行完,中断已经重新触发的情况。

2.低电平触发是即时的,当外部中断信号撤消时,中断申请信号随之消失。如果在外部中断信号申请期间,CPU来不及响应此中断,那么有可能这次中断申请就漏掉了。也就是说假设低/高电平的时间很短。CPU没来得及相应,那么这次的电平中断申请就可能不会检测到。

3.如果想要电平触发中断也只进行一次,通常的做法是在中断退出前关闭中断,等后面需要的时候再打开。

边沿触发:

这里要先了解下:

从低电平到高电平,  叫做上升

从高电平到低电平, 叫做下降

上升沿触发

数字电平从低电平(数字“0”)变为高电平(数字“1”)的那一瞬间叫作上升沿。上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。

下降沿触发

数字电路中,数字电平从高电平(数字“1”)变为低电平(数字“0”)的那一瞬间叫作下降沿。下降沿触发是当信号有下降沿时的开关动作,当电位由高变低而触发输出变化的就叫下降沿触发。也就是当测到的信号电位是从高到低也就是下降时就触发,叫做下降沿触发。

那么我们可以很好的理解两种触发:

上升沿触发 就是当电压从低变高时触发中断

下降沿触发 就是当电压从高变低时触发中断

当然,上升沿与下降沿检测的是电平变化的一瞬间,就会产生中断,这个时间是us级别的,但是如果中断引脚检测到一直保持低/高电平,则无法产生下次中断,也就是中断只会触发一次,只有在下次电平发生变化时才会重新触发中断。

注意事项:

1、边沿触发就是单片机在上一次机器周期内,检测到中断引脚口为高电平,这一次机器周期内检测到为低电平,则会申请产生中断,所以为us级别。

2、下降沿触发是锁存中断信号的,由D触发器记忆,意即:即使当时CPU来不及响应中断,外部中断信号撤消后,由于D触发器的记忆作用,消失的中断信号仍然有效,直到中断被响应并进入中断ISR,记忆的中断信号才会由硬件清除。这也是为什么边沿触发只能触发一次的原因。

3、对于单片机的中断引脚,如果你另一端接的是VCC 则需要设置成上升沿或者高电平触发 如果你接的是GND 就可以设置成下降沿或者低电平触发。

区别:

我们可以理解,电平触发在你一直按着按键的时候会一直进入中断,边沿触发则是只会触发一次,再次按下才会重新触发,这就给我们不同的应用功能提供了选择,使得我们可以在不同个工作下选择适合的模式,边沿触发适用于对对时间要求高的,比如中断中有计数之类的(GATE门控位置1时),而电平触发则适合报警装置,

51单片机的具体讲解与实现:

在51中,为了方便区分两种方式,用IT0/IT1,将低电平触发和下降沿触发这两种方式转化成对应的信号:IT0/IT1的高电平和低电平,IT0/IT1高电平则为下降沿触发,IT0/IT1低电平则为低电平触发

IT0=1;//跳变沿出发方式(下降沿)

IT0=0;//电平触发

而在有中断触发之后,是否允许进行该中断,则对应的转换为 EX0 EX1的高低电平来实现  

EX0 EX1为高电平则允许中断,EX0 EX1为低电平则不允许中断

EX1=1;//打开INT1的中断允许

EX1=0;//关闭INT1的中断允许

而我们的外部中断,定时器中断,串口中断,等等,都只是中断的一个分支,在打开分支之后,相对应的要打开“总闸” EA

EA的作用相当于一个”总闸“,而EX0 EX1只是支线上的一个开关 ,再打开分支开关之后,需要打开总开关,才能够进行中断

简单来说 ,EA等于告诉单片机是否可以进行中断这个操作,而EX0 EX1等于是否允许外部触发中断进行, 

EA=1;//打开总中断  

EA=0;//关闭总中断  

在允许中断操作进行之后,如果有好几个中断应该怎么怎么办呢,如果谁也不服谁,都抢着说我先,那么MCU估计没两天就罢工告竭了,这时候便需要设置中断优先级,告诉每个中断谁应该先,谁应该后,大家礼尚往来,系统才能正常工作  当然在51中有着一个默认的优先级,依次是:外中断0,定时器0,外中断1,定时器1,串口   有多个中断时,会先进行前面的中断

void函数名()    interrupt 2 using 工作组        //外部中断1的中断函数 

{undefined

//吧啦吧啦代码

}

interrupt后面跟的数字代表使用哪一个中断通道,

0 外部中断0 

1 定时器0 

2 外部中断1 

3 定时器1 

4 串行中断

工作组一般不用设置,在程序编译时会自动分配

这样子外部触发中断的配置就配置好了,其他的中断配置和它都是类似的,同学们学会这个51的中断基本就可以举一反三,有一个更好的认识

低电平触发:

在51中:低电平触发是当管脚INTO/INT1(P3.2/P3,3)为低电平时,被单片机检测到后,就认为有中断请求,EX0/EX1置高电平,向CPU发出中断请求;则进入中断

下降沿触发:

边沿触发就是当管脚INTO/INT1有由高电平变低电平的过程时,就认为有中断请求,EX0/EX1置高电平,向CPU发出中断请求,进入中断。

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分