51单片机的外部中止有两种触发方法可选:电平触发和边缘触发。挑选电平触发时,单片机在每个机器周期查看中止源口线,检测到低电平,即置位中止恳求标志,向CPU恳求中止。挑选边缘触发方法时,单片机在上一个机器周期检测到中止源口线为高电平,下一个机器周期检测到低电平,即置位中止标志,恳求中止。
这个原理很好了解。但使用时需求特别注意的几点:
1)电平触发方法时,中止标志寄存器不锁存中止恳求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中止源口线的电平逻辑直接赋值到中止标志寄存器。标志寄存器关于恳求信号来说是通明的。这样当中止恳求被堵塞而没有得到及时呼应时,将被丢掉。换句话说,要使电平触发的中止被CPU呼应并履行,有必要确保外部中止源口线的低电平保持到中止被履行停止。因而当CPU正在履行同级中止或更高档中止期间,发生的外部中止源(发生低电平)假如在该中止履行结束之前吊销(变为高电平)了,那么将得不到呼应,就好像没发生相同。相同,当CPU在履行不可被中止的指令(如RETI)时,发生的电平触发中止假如时间太短,也得不到履行。
2)边缘触发方法时,中止标志寄存器锁存了中止恳求。中止口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU呼应并转向该中止服务程序时,由硬件主动铲除。因而当CPU正在履行同级中止(乃至是外部中止自身)或高档中止时,发生的外部中止(负跳变)相同将被记录在中止标志寄存器中。在该中止退出后,将被呼应履行。假如你不期望这样,有必要在中止退出之前,手艺铲除外部中止标志。
3)中止标志能够手艺铲除。一个中止假如在没有得到呼应之前就现已被手艺铲除,则该中止将被CPU疏忽。就好像没有发生相同。
4)挑选电平触发仍是边缘触发方法应从体系运用外部中止的意图上去考虑,而不是如许多材料上说的依据中止源信号的特性来取舍。比方,有的书上说(《Keil C51运用技巧及实战》),就有相似的观念。
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~5 V,其标称值为3.6 V;输出低电平的答应规模为0~0.7 V,其标称值为0.3 V[2],在0.7 V与2.4 V之间的对错高非低的中心电平。
这样,在实践使用中,假定单片机外部中止引脚INT0输入一路由+5 V下降到0 V的下降沿信号,单片机在某个时钟周期采样INT0引脚得到2.4 V的高电平;而在下一个时钟周期到来进行采样时,因为实践的外部输入中止触发信号由高电平变为低电平往往需求必定的时间,因而,检测到的或许并非真实的低电平(小于0.7 V),而是处于低电平与高电平之间的某一中心电平,即0.7~2.4 V的某一电平。关于这种状况,单片机是否会仍然置位中止触发标志然后引发中止呢?关于这一点,国内的绝大部分教材以及单片机出产商供给的器材材料都没有给予准确的界说,但在实践使用中这种状况的确会碰到。
以美国Analog公司出产的运算放大器芯片AD708为例,其转化速率(slew rate)为0.3 V/μs,在由AD708芯片组成的比较器电路中,其输出方波的下降沿由2.4 V下降到0.7 V,所需时间约为: (2.4 V-0.7 V)/0.3V·μs-1=4.67 μs。即需求约 4.67 μs的过渡时间,下降沿才真实地由高电平下降为低电平,在实践使用电路中,这个下降时间往往可达10 μs以上。关于精细的丈量体系,这么长的不确定时间是无法承受的,因而,有必要对单片机边缘中止触发时间进行准确的测定。