一、中断概述
(1)处理器和外部设备的数据传输方式
- 无条件传输:处理器不比为了了解外部设备状态,直接进行数据传输,用于指示灯和蜂鸣器灯等简单设备
- 查询方式:传输前,一方先查询另一方的状态,若已经准备好就传输,否则就继续查询
- 中断方式:一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作
- 直接存储器访问:处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与
(2)中断的概念
- CPU的中断系统是:为使CPU具有对外界紧急事件的实时处理能力而设置的
- 某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生)
- CPU暂停(中断)当前的工作,转去处理事件B(中断响应和中断服务)
- 待CPU将时间B处理完毕后,再回到原来事件A被中断的地方继续处理时间A(中断返回)
- 这一过程称为中断
(3)中断的优势
- 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率
- 实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;
- 可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高
(4)中断优先级的原则
- CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
- 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
- 正在进行的低优先级中断服务,能被高优先级中断请求所中断。
(5)中断响应条件
- 中断源有中断请求;
- 此中断源的中断允许位为1;
- CPU开中断(即EA=1)。
- 以上三个条件同时存在,才实现中断响应
二、STC单片机中的中断系统
(1)STC单片机的中断请求源
(2)CPU的总中断允许控制
EA:CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成多级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制。
(3)中断的入口地址
Keil C中的中断函数:(函数名可以变,红色框中的必须对应)
三、外部中断概述
(1)外部中断与中断系统
- 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完后又返回被中断的程序处,继续执行下去
- 外部中断是单片机中断系统的其中一类中断源,单片机外部中断与单片机的中断系统是两个概念。
(2)外部中断的工作方式
(3)外部中断工作方式配置
(4)外部中断触发方式
- 上升沿与下降沿的概念:
- 上升沿触发
- 上升沿下降沿均可触发
四、外部中断的应用
根据外部中断执行功能函数。本例以外部中断0(上升沿中断/上升沿下降沿均可中断)为例,中断产生后将L6灯取反操作。
#include <stc15.h>
void IO_Init(void);
void main(void)
{
IO_Init();
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
// IT0 = 0 ; //设置外部中断0,上升沿或下降沿后均可产生中断申请
IT0 = 1 ; //设置外部中断0,仅下降沿后均可产生中断申请
EX0 = 1 ; //允许外部中断0向CPU申请中断
EA = 1 ; //打开CPU总中断
while(1)
{
;
}
}
//外部中断服务程序
void EX_INT0(void) interrupt 0 //INTO中断入口
{
P05 = !P05; //将测试口取反
}