一、中断概述

(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)。
  • 以上三个条件同时存在,才实现中断响应

【蓝桥杯入门记录】中断系统-LMLPHP

二、STC单片机中的中断系统

(1)STC单片机的中断请求源

【蓝桥杯入门记录】中断系统-LMLPHP

(2)CPU的总中断允许控制

EA:CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成多级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制。

【蓝桥杯入门记录】中断系统-LMLPHP

(3)中断的入口地址

Keil C中的中断函数:(函数名可以变,红色框中的必须对应)
【蓝桥杯入门记录】中断系统-LMLPHP

三、外部中断概述

(1)外部中断与中断系统

  • 外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完后又返回被中断的程序处,继续执行下去
  • 外部中断是单片机中断系统的其中一类中断源,单片机外部中断与单片机的中断系统是两个概念。
     

(2)外部中断的工作方式

【蓝桥杯入门记录】中断系统-LMLPHP

(3)外部中断工作方式配置

【蓝桥杯入门记录】中断系统-LMLPHP

(4)外部中断触发方式

  • 上升沿与下降沿的概念:【蓝桥杯入门记录】中断系统-LMLPHP
  • 上升沿触发
  • 上升沿下降沿均可触发

四、外部中断的应用

根据外部中断执行功能函数。本例以外部中断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;			//将测试口取反
}


03-25 11:28