首页 > 编程知识 正文

单片机中断的概念及作用,单片机中断程序

时间:2023-05-04 00:37:43 阅读:276161 作者:3770

文章目录 一.中断的基本概念**1.中断的概念:****2.中断源:** 二.中断相关的寄存器**1.中断允许寄存器(IE)****2.中断请求标志寄存器(TCON)****3.中断优先级寄存器(IP)** 三.中断的实际使用**A.中断的3个条件:****B.如何使用中断:****C.中断服务程序的基本结构** 四.中断的优点:

一.中断的基本概念 1.中断的概念:

在单片机中,中断是指:对于CPU来说,当它在正常处理事件A时,突然发生了另一件事件B(中断发生)需要CPU去处理,这时CPU就会暂停处理事件A(中断响应),转而去处理事件B(中断服务)。当事件B处理完以后,再回到事件A原来中断的地方继续执行事件A(中断返回)。这一整个过程称为中断

当中断过程B中,发生了另一个中断级别更高的中断事件C,则CPU又会中断当前的B转而去处理C,完毕后再回到B的断点继续处理。这称为中断的嵌套。中断的嵌套涉及到中断的优先级问题。

2.中断源:

请示CPU中断的源头称为中断源。中断源表示了单片机可以设置、发生中断的地方。51单片机内有3类基本的中断源:
外部中断(INT0/1),定时中断(T0/1),串口中断(RXD,TXD)

每个中断源都在P3口(附加功能)有相应的信号输入端:
外部中断0(ITN0):P3.2
外部中断1(INT1):P3.3
定时中断0(T0):P3.4
定时中断1(T1):P3.5
串口中断0(RXD):P3.0
串口中断1(TXD):P3.1

二.中断相关的寄存器

用来控制中断的开启与关闭、中断的请求、中断的条件与类型等等。若要使用中断,则要先配置相应的中断寄存器。这些寄存器及其各位都已经在reg52头文件中定义好了。

1.中断允许寄存器(IE)


EX0(IE^0),外部中断 0 允许位;
ET0(IE^1),定时/计数器 T0 中断允许位
EX1(IE^2),外部中断1允许位;
ET1(IE^3),定时/计数器 T1 中断允许位;
ES(IE^4),串行口中断允许位;
EA (IE^7), CPU 中断允许(总允许)位

如果要用中断,首先要打开总中断位EA;需要使用哪一个中断,就让这个中断允许位=1。

2.中断请求标志寄存器(TCON)

低4位:外部中断请求标志位、外部中断触发条件
高4位:定时中断请求标志位、定时中断是否启动

IT0(TCON^0),外部中断 0 触发方式控制位。用来控制外部中断的触发条件。
当 IT0=0 时,为电平触发方式(低电平有效)。
当 IT0=1 时,为边沿触发方式(下降沿有效)。

IE0(TCON^1),外部中断 0 中断请求标志位。
IT1(TCON^2),外部中断 1 触发方式控制位。
IE1(TCON^3),外部中断 1 中断请求标志位。
TR0(TCON^4),定时/计数器T0开启位。当TR0=1时,定时器开始工作。
TF0(TCON^5),定时/计数器 T0 溢出中断请求标志位。
TR1(TCON^6),定时/计数器T1开启位。当TR0=1时,定时器开始工作。
TF1(TCON^7),定时/计数器 T1 溢出中断请求标志位。

3.中断优先级寄存器(IP)


若将某一位设为1,则认为这一位的中断处于高优先级。
优先级的考虑顺序:先考虑高低优先级别,再考虑序号排列。由此得到一整个优先级顺序。
默认顺序:就是中断号的顺序

三.中断的实际使用 A.中断的3个条件:

1.中断源有中断请求
2.CPU允许中断(即EA)为1
3.相应中断源的中断允许位为1

以上3个条件缺一不可。当中断的发生不如意时,可以从这3点去进行考虑。

B.如何使用中断:

引用中断时,我们要考虑4个问题:
1.为什么要用中断?
2.你想要使用哪一个中断?它的中断号是什么?
3.中断的触发条件是什么?
4.中断以后做什么?

C.中断服务程序的基本结构

据上,我们可以编写程序来控制中断。这个程序最起码要包括三个模块

1.中断配置函数
设置需要的中断寄存器,来开启中断、选择它的类型和触发方式。
由于所有的中断寄存器已经封装好,我们只需要给封装好的代号(如IE、EX0等)赋值。
void Int0Init(){
IT0=1;
EX0=1;
EA=1;
}

2.main函数
主控,CPU执行的主程序。里面应该包含中断配置函数,以设置中断。
当中断发生时,程序便从主程序马上跳出到中断服务函数。
void main(){
Int0Init();
while(1); //主程序停在此处,等待中断的发生
}

3.中断服务函数
写中断产生后要做什么。
例:
void int0() interrupt 0 using 1{
//code
}
Int0是函数名,可以任取。
Interrupt是一个关键字,后面的0是中断号(代表所使用的中断)

通常来说,在函数名中用int代表外部中断,Timer代表定时器中断

附:中断号如下

四.中断的优点:

随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速 I/O
设备的数据传送问题,而且还具有如下优点:
①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;
②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强;
③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。