首页 理论教育 通过外部中断INT0控制LED

通过外部中断INT0控制LED

时间:2023-11-06 理论教育 版权反馈
【摘要】:掌握外部中断源的使用方法、控制方法。可以产生中断请求的设备或事件称为中断源。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值给中断标志寄存器。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1,可由中断控制寄存器TCON的IT1和IT0分别控制外部输入中断1和中断0的中断触发方式。

通过外部中断INT0控制LED

实验目的

(1)理解中断的概念、使用方法。

(2)了解单片机内外部中断C语言程序的设计和调试方法。

(3)掌握外部中断源的使用方法、控制方法。

实验仪器

单片机开发板、稳压电源、计算机。

实验原理

1.中断的概念

CPU执行(主)程序的过程中,随机接收到外设发出来的中断请求时可以暂时中断当前正在执行的(主)程序,转到相应的中断服务(子)程序进行处理。处理完毕,再返回到原来的(主)程序(被中断之处),继续运行下去。可以产生中断请求的设备或事件称为中断源。中断源将大大地提高CPU的工作效率,能及时地响应和处理特殊事件。

2.51单片机外部中断相关控制寄存器

1)中断级别

2)中断允许寄存器IE

其中:EA——全局中断;ES——串口中断;

ET2——定时器2中断;EX1——外部中断1;

ET1——定时器1中断;EX0——外部中断0;

ET0——定时器0中断。

3)中断优先级寄存器IP

其中:PS——串口;PT——计时器;PX——外部中断;

置0——低优先级;置1——高优先级。

4)定时器/计数器控制寄存器TCON

其中:TF1——定时器1溢出标志位,当定时器1计满,硬件使TF1置1,并申请中断,进入中断后,由软件自动清0;如果是软件查询,需要软件清0;

TR1——定时器1运行控制位,软件清0关闭定时器1,当GATE=1,且INT1为电平,TR1置1,启动定时器1;GATE=0,TR1置1,启动定时器1;

IE1——外部中断1请求标志,进入中断后硬件自动清零;

IT1——外部中断1触发方式选择位,IT=0,为电平触发方式,引脚INT1上低电平有效;IT=1,为跳变沿触发方式,引脚INT1上的电平从高到低的负跳变沿有效。

5)电源管理寄存器PCON

其中:SMOD——该位与串口通信波特率有关;(www.xing528.com)

方式0波特率=fosc/12

方式1波特率=(2SMOD/32)×(T1溢出率)

方式2波特率=(2SMOD/64)×fosc

方式3波特率=(2SMOD/32)×(T1溢出率)

(SMOD0)(LVDF)(POF)——STC单片机独有功能,可查看相关手册;

PD——掉电模式;

IDL——空闲模式。

3.51单片机的外部中断触发方式

51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。

应用外部中断时需要特别注意以下几点:

(1)采用电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值给中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此在CPU正在执行同级中断或更高级中断期间产生的外部中断源(产生低电平),如果在该中断执行完毕之前撤销(变为高电平)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断如果时间太短,也得不到响应。

(2)采用边沿触发方式时,中断标志寄存器锁存了中断请求。中断源口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,中断请求由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将记录在中断标志寄存器中,直到该中断退出后才被响应执行。如果我们不希望这样,则必须在该中断退出之前,手工清除外部中断标志。

(3)中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略,就如同没有发生一样。

(4)选择电平触发还是边沿触发方式应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。MCS51系列单片机属于8位单片机,它是Intel公司继MCS48系列成功之后,于1980年推出的产品。MCS51系列单片机具有很强的片内功能和指令系统,使单片机的应用发生了一个飞跃,这个系列的产品也很快成为世界上第二代的标准控制器。51系列单片机有5个中断源,其中有2个是外部输入中断源INT0和INT1,可由中断控制寄存器TCON的IT1(TCON.2)和IT0(TCON.1)分别控制外部输入中断1和中断0的中断触发方式。若为0,则外部输入中断控制为电平触发方式;若为1,则外部输入中断控制为边沿触发方式。这里是下降沿触发中断。

但是几乎国内所有的单片机资料对单片机边沿触发中断的响应时刻的定义都不太明确。例如,某文献中关于边沿触发中断响应时刻的描述为“对于脉冲触发方式(即边沿触发方式)要检测两次电平,若前一次为高电平,后一次为低电平,则表示检测到了负跳变的有效中断请求信号”,但实际情况却并非如此。

我们知道,单片机外部输入的中断触发电平是TTL电平。对于TTL电平,TTL逻辑门输出高电平的允许范围为2.4~5 V,其标称值为3.6 V;输出低电平的允许范围为0~0.7 V,其标称值为0.3 V,在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.3 V·μs-1=4.67μs。即需要约4.67μs的过渡时间,下降沿才能真正地由高电平下降为低电平,在实际应用电路中,这个下降时间往往可达10μs以上。对于精密的测量系统,这么长的不确定时间是无法接受的,因此,有必要对单片机边沿中断触发时刻进行精确的测定。

4.中断服务程序与普通子程序的区别

(1)程序是否提前安排好:中断服务程序是随机的,而普通子程序是预先安排好的。

(2)结束程序不同:中断服务子程序以RETI结束,而一般子程序以RET结束。

(3)结束动作不同:中断服务子程序RETI除将断点弹回PC动作外,还要清除对应的中断优先标志位,以便新的中断请求能被响应;一般子程序则无此项操作。

实验源程序

实验仿真电路(实验图5-1)

实验图5-1 外部中断INT0控制LED实验仿真图

思考题

1.简述外部中断优先级的设置,以及中断现场保护的处理方法?

2.多个外部中断请求发生时,如何完成系统的设置和控制?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈