边沿触发和电平触发的区别
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。
这个原理很好理解。但应用时需要特别注意的几点:
1)电平触发方式时,中断标志寄存器不锁存中断请求信号。 也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断 请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因 此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同 没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到执行。
2)边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
3)中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
4)选择电平触发还是边沿触发方式应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。比如,有的书上说(《KeilC51使用技巧及实战》),就有类似的观点。
MCS51单片机系列属于8位单片机,它是Intel公司继MCS48系列的成功设计之后,于1980年推出的产品。由于MCS51系列具有很强的片内功能和指令系统,因而使单片机的应用发生了一个飞跃,这个系列的产品也很快成为世界上第二代的标准控制器。51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1。可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;若为1,则控制为边沿触发方式。这里是下降沿触发中断。
1、问题的引出
几 乎国内所有的单片机资料对单片机边沿触发中断的响应时刻方面的定义都是不明确的或者是错误的。例如文献[1]中关于边沿触发中断响应时刻的描述为“对于脉 冲触发方式(即边沿触发方式)要检测两次电平,若前一次为高电平,后一次为低电平,则表示检测到了负跳变的有效中断请求信号”,但实际情况却并非如此。
我们知道,单片机外部输入的中断触发电平是TTL电平。对于TTL电平,TTL逻辑门输出高电平的允许范围为2.4~5V,其标称值
为3.6V;输出低电平的允许范围为0~0.7V,其标称值为0.3V[2],在0.7V与2.4V之间的是非高非低的中间电平。
这 样,在实际应用中,假设单片机外部中断引脚INT0输入一路由+5V下降到0V的下降沿信号,单片机在某个时钟周期采样INT0引脚得到2.4V的 高电平;而在下一个时钟周期到来进行采样时,由于实际的外部输入中断触发信号由高电平变为低电平往往需要一定的时间,因此,检测到的可能并非真正的低电平 (小于0.7V),而是处于低电平与高电平之间的某一中间电平,即0.7~2.4V的某一电平。对于这种情况,单片机是否会依然置位中断触发标志从而 引发中断呢?关于这一点,国内的绝大部分教材以及单片机生产商提供的器件资料都没有给予准确的定义,但在实际应用中这种情况确实会碰到。
以美国Analog公司生产的运算放大器芯片AD708为例,其转换速率(slewrate)为0.3V/μs,在由AD708芯片组成的比较器电路中, 其输出方波的下降沿由2.4V下降到0.7V,所需时间约为:(2.4V-0.7V)/0.3V·μs-1=4.67μs。即需要 约4.67μs的过渡时间,下降沿才真正地由高电平下降为低电平,在实际应用电路中,这个下降时间往往可达10μs以上。对于精密的测量系统,这么 长的不确定时间是无法接受的,因此,有必要对单片机边沿中断触发时刻进行精确的测定。
2、测试波形的设计与分析
为了测定MCS51单片机下降沿触发的实际时刻,使用Agilent公司生产的型号为33250A的80MHz函数/任意波形发生器(function/arbitrarywaveformgenerator),产生出如图1所示的周期为20ms的周期波形。
图1周期为20ms的周期波形
将该波形通过单片机的外部中断0输入,可以测出下降沿中断触发的实际时刻,下面对该波形进行具体分析。建立如图2所示的直角坐标。
图2建立的直角坐标设
图2所示波形的周期为T,单片机在电压下降到y=y′时刻触发中断,t1′、t2′、t3′分别为前后周期的中断触发时刻,则有:
将 以上波形由单片机外部中断0输入,选择边沿触发方式,通过中断服务程序测取T1或者T2的值,从而可求出中断发生时刻的电平值y′,即边沿触发中断的实际 时刻。在使用单片机对中断时刻进行测量时,使用两个计数器,均设为方式1(16位计数方式)。其中,第一个计数器用于记录从程序开始执行到第一个下降沿到 来所经历的时间,第二个计数器用来记录程序开始执行到第二个下降沿到来所经历的时间,将两个计数器的计数值相减便可以得到两个下降沿之间的时间间隔。由前 面的分析可知,该时间间隔可能有两种情况:一种是T1时间,即t1′与t2′之间的时间间隔;另一种是T2时间,即t2′与t3′之间的时间间隔。其 中,T1+T2=T,T1时间要小于T2时间。通过测量得到T1或者T2时间,利用式(4)便可求得下降沿触发中断时刻的实际电平。
3、测试流程和相应的单片机程序
该单片机的中断服务程序流程如图3所示。
相应的中断服务程序为:
INCR1
MOVA,R1
CJNEA,#01H,SEC
CLRTR0
MOV20H,TL0
MOV21H,TH0
CLRIE0
RETI
SEC:CLRTR1
MOV22H,TL1
MOV23H,TH1
CLREX1
CLREX0
RETI
由于程序执行有一定的延时,在中断返回后,还需对两个计数器的输出值进行校正。本实验采用伟福公司生产的H51/L仿真器为单片机测量系统,测得T1值为6.514ms,由式(4)可得:y′=0.729V,即当y′约为0.73V时,单片机下降沿触发中断。
外部中断—高低电平触发,(边沿触发)上升沿触发和下降沿触发区别
1什么是中断
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。
通俗点说:你正在家里做家务,突然有人来找你,打断了你的进程,在你们交谈完之后,你就又回去继续进行你的家务活,这其中被打断的过程,就叫做中断,而在中断结束之后,你则会继续进行本来应该做的事情
高低电平触发:
低电平触发:
低电平触发中断顾名思义,就是检测到引脚为低电平就触发, 从而进入中断函数中处理这个中断,并且在高或低电平保持的时间内持续触发,假设是低电平触发,只要引脚为低电平时间内中断一直有效,那么就会一直进入中断,直到电平变化为高电平
高电平触发:
则是 检测为高电平就触发,其余与低电平触发相同
注意事项:
1.电平触发中断,如果在电平没有恢复之前就退出中断程序,那么会在退出后又再次进入中断。只要不退出是不会重复触发的。
也就是重复触发只有在退出中断后才会再次触发,不用担心这次还没进行完,中断已经重新触发的情况
2.低电平触发是即时的,当外部中断信号撤消时,中断申请信号随之消失。如果在外部中断信号申请期间,CPU来不及响应此中断,那么有可能这次中断申请就漏掉了。也就是说假设低/高电平的时间很短。CPU没来得及相应,那么这次的电平中断申请就可能不会检测到
3.如果想要电平触发中断也只进行一次,通常的做法是在中断退出前关闭中断,等后面需要的时候再打开
边沿触发:
这里要先了解下:
从低电平到高电平, 叫做上升从高电平到低电平, 叫做下降
·上升沿触发
数字电平从低电平(数字“0”)变为高电平(数字“1”)的那一瞬间叫作上升沿。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高 也就是上升时就触发,叫做上升沿触发。
·下降沿触发
数字电路中,数字电平从高电平(数字“1”)变为低电平(数字“0”)的那一瞬间叫作下降沿。 [1] 下降沿触发是当信号有下降沿时的开关动作,当电位由高变低而触发输出变化的就叫下降沿触发。也就是当测到的信号电位是从高到低 也就是下降时就触发,叫做下降沿触发。
那么我们可以很好的理解两种触发:
上升沿触发 就是当电压从低变高时触发中断下降沿触发 就是当电压从高变低时触发中断
当然,上升沿与下降沿检测的是电平变化的一瞬间,就会产生中断,这个时间是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的中断函数
{
//吧啦吧啦代码
}
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发出中断请求,进入中断。
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料
相关问答
低电平触发和 下降沿触发 有什么区别?51单片机包含3种中断,分别是外部中断、定时器中断、串口中断。其优先级如下。外部中断0和外部中断1分别由P3.2和P3.3引入,可以选择低电平或下降沿触发;两个定...
单片机 怎么检测上升沿与 下降沿 ?可以通过单片机的引脚来检测,通过设置引脚的外部中断,检测引脚的边沿信号就可以检测上升沿或者下降沿,以stm32单片机为例,先将定时器设定为外部触发,然后配...
外部中断的两种 触发 方式?在采用低电平触发时,单片机执行了一条主程序的指令后,就会又重新进入中断程序。而采用下降沿触发时,即使INT0/1引脚仍然是低电平,单片机也不会重新进入中...
如何用 单片机 普通I/O口检测上升沿或 下降沿 ?用单片机普通I/O口检测上升沿或下降沿,只有一种方法,就是写程序,采用查询方式,查询引脚的状态,当状态发生变化,就是下降沿,或上升沿了。用单片机普通I/O口检...
51 单片机 INT1中断电平触发方式和跳变 沿触发 方式有什么区别?正好反过来。电平触发指的是低电平到来之后,中断即被触发。跟之前电平高低无关。跳变触发:刚开始时必须是高电平,然后突然拉低至低电平,这就是跳变,这样才...
单片机 按键选择外部中断0和1混合使用, 下降沿触发 ,寄存器是否出现触发信号锁存?你看来还没有理解“中断”的真谛,之所以要用中断,就是用来处理“不确定”事件的,如果都是可以预知的按“时序”运行的事件,那么就没有必要用“中断”了。你看...
8051 单片机 外部中断,有哪些激活方式?有两种方式:下降沿触发方式和低电平触发方式80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、...
单片机 跳变沿怎么给?在单片机中,跳变沿通常是通过输入引脚来检测的。当引脚的电平发生变化时,单片机能够检测到这种跳变沿并作出相应的响应。为了给单片机输入跳变沿,你需要将一个...
MCS-51 单片机 外部中断的 触发 方式如何设定和选择?1、打开KeilμVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUP.A51文件,然后在当前目录下新建一个C...
单片机 的ALE信号在时钟脉冲的上升沿开始产生?还是从 下降沿 开始产生?上升沿产生,ALE电平变化与P上沿同步。实际使用不需要深究到如此细节。不论什么厂家、什么型号的单片机,只要有ALE信号,就是用在低位数据/地址复用总线上,用来...