含义
中断是指CPU对系统发生某个时间做出的一种反应。(是外部设备向处理器发起的请求事件)
中断发生后,CPU 不会立即执行响应,而是在当前指令执行完以后转入“ 中断处理流程 ”。此时 CPU 会跳转到中断处理程序去处理这个中断,处理完毕后再回到原来位置的下一个位置。
单片机处理中断过程图
中断类型
在我们考虑中断结构之前,我们先来看看有什么东西可以触发中断。单片机统计起来总共有5个中断源,包括2个外部中断和3个内部中断。
首先是外部的输入;AT89C51芯片有两个引脚(P3.2)、(P3.3),这两个引脚是中断输入的引脚,当从该引脚输入的外部的信号发生某种特定的变化时就会触发中断。而这种特殊的变化是低电平或则下降沿,至于是哪一种则是由TCON特殊寄存器里面的ITx决定。
其次是内部的中断触发;内部的中断触发有定时器Tx两个和串行IO口中断一个。其中定时器中断则是定时器计数溢出后引起的,而串行IO口中断则是完成字符的传输后引起的。
引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求,CPU 暂时中断原来的事务 A,转去处理事件 B,对事件 B 处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求CPU 暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,请示 CPU 中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在CPU 优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。
当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。
随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速 I/O设备的数据传送问题,而且还具有如下优点:
①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;
②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强;
③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
中断处理程序要少用延时的原因
中断处理的要求是即时处理,尽快退出。如果在中断中使用延时函数或者使用IO阻塞函数,会影响到系统的实时性。如果下次中断来临,延时或者阻塞还没结束,那么就永远在中断里死循环了。
因此,对于中断处理程序的要求是:
短小精悍,不要处理过多任务
不使用延时函数或者IO阻塞的函数
实例代码以及注释
#include <reg52.h>
#define duan P0
#define uchar unsigned char
void delay(unsigned int xms) {
unsigned int i, j;
for(i = xms; i > 0; i--)
for(j = 112; j > 0; j--);
}
sbit wei1 = P2^4;
sbit wei2 = P2^5;
sbit wei3 = P2^6;
sbit wei4 = P2^7;
uchar code sz[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,
0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71, 0x00};
void int0_handler() interrupt 0
{
unsigned char num1 = 4;
unsigned char num2 = 1;
unsigned char num3 = 6;
duan = sz[num1];
wei1 = 0;
wei2 = 1;
wei3 = 0;
wei4 = 0;
delay(100);
duan = sz[num2];
wei1 = 0;
wei2 = 0;
wei3 = 1;
wei4 = 0;
delay(100);
duan = sz[num3];
wei1 = 0;
wei2 = 0;
wei3 = 0;
wei4 = 1;
delay(100);
}
void main()
{
IT0 = 1;
EX0 = 1;
EA = 1;
while(1)
{ }
}
参考文章
————————————————
CSDN博主「竹烟淮雨」的原创文章
原文链接:单片机学习 11-中断系统(定时器中断+外部中断)_单片机中断系统_竹烟淮雨的博客-CSDN博客
CSDN博主「仲夏夜之梦~」的原创文章