内容正文:
第3章 中断
中断技术是单片机技术的一个重要特征,主要用于实时监测于控制,对应突发事件做出及时的相应。
本章主要介绍MCS-51单片机的中断基本概念和典型应用案例。
重点:中断概念与应用程序编写;
难点:中断的应用。
3.1 单片机中断的概念
(1)中断的定义
当单片机执行正常程序时,系统中出现某些急需处理的异常情况和特殊请求(如定时/计数器溢出,被监视电平突变等),这时CPU暂时中断现行程序,转去处理发生的事件,处理完成后,CPU自动返回到原来被中断的地方,执行原来的程序,这一过程称为中断。
(2)中断名词
中断源:引起中断的设备或事件。
中断请求:中断是由中断源向CPU发出中断申请开始的,有效中断请求信号应一直保持到CPU做出响应为止。
中断响应:CPU接收中断申请而暂停现行程序的执行,转去为服务对象服务,为服务对象服务的程序称为中断服务函数(也称中断处理程序)。
中断的过程
执行主函数
主函数
继续执行主函数
断点
中断请求
中断响应
执行中断服务函数
中断返回
3.2 MCS-51单片机中断系统的内部结构
中断源及中断向量入口地址
5
特殊功能寄存器—IP 中断优先
为1:优先级高;为0:优先级低
(IP.7)与 (IP.6):保留
PT2(IP.5):定时2中断优先(8052用)
PS (IP.4):串行口中断优先
PT1(IP.3):定时1中断优先
PX1(IP.2):外中断INT1中断优先
PT0(IP.1):定时器0中断优先
PX0(IP.0):外部中断INT0的中断优先
特殊功能寄存器—IE 中断允许
为1:允许;为0:禁止。
EX0:外部中断0允许位。
ET0:T0溢出中断允许位。
EX1:外部中断1允许位。
ET1:T1溢出中断允许位。
ES:串行中断允许位。
EA:中断总允许位。
特殊功能寄存器—TCON 控制
TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。
TR0(TR1)——定时器运行控制位
当TR0(TR1)=0 停止定时器/计数器工作
当TR0(TR1)=1 启动定时器/计数器工作
IE0(IE1)——外中断请求标志位
当出现有效中断请求时,此位由硬件置1。在中断响应完成后,再由硬件自动清0。
IT0(IT1)——外中断请求信号方式控制位
当IT0(IT1)=1 沿方式(后沿负跳有效)
当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。
TF0(TF1)——计数溢出标志位
当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。
8
3.3中断编程
常用的中断函数定义 void 函数名( ) interrupt n using m
其中:
interrupt是关键字,指中断函数。
n 是C51编译器允许0~31个中断,下列中断及其相关地址为8051控制器所提供的中断:
0: 外部中断0
1: 定时器/计数器0
2: 外部中断1
3: 定时器/计数器1
4: 串行口
3.3中断编程
using 是关键字,指使用单片机内部RAM中四组工作寄存器组组别资源,为程序运行中的现场数据保护或暂存。可以用using m指定该函数具体使用哪一组寄存器。
m在0、1、2、3这4个数中取值,对应使用四组工作寄存器。
3.4 应用案例---外部中断
六路抢答器
3.4 应用案例---双外部中断
统计两个按键按下的次数,并用数码管显示出来
void key2() interrupt 2 //按键2中断
{ P2&=0X3F; //关闭LED
if(++num_k2>99) num_k2=0; //键盘2键值加1,加到100置0
num=num_k2; LED_k2=1; //送待显示变量,点亮相应LED
}
void main() //主函数
{ IE=0X85;TCON=0X05; //开启外部中断0和1,设置下降沿触发
while(1) { P2&=0Xfc;P0=dis_d[num/10];dis_shi=1;delay(); //十位数显示
P2&=0Xfc;P0=dis_d[num%10];dis_ge=1;delay(); //个位数显示
}
}
void key1( ) interrupt 0 //按键1中断
{ P2&=0X3F; //关闭LED
if(++num_k1>99) num_k1=0; //键盘1键值加1,加到100置0
num=num_k1; LED_k1=1; //送待显示变量,点亮相应LED
}
3.4 应用案例---具有优先级的中断
按键控制
脉冲计数
void main()
{ IE=0X85; TCON=0X0; IP=0X04;
while(1);
}
void intx_0() interrupt 0
{ static unsigned char PLUS=0;
PLUS++; P1=PLUS;
}
void intx_1() interrupt 2
{ EX0=!EX0;}
习题—判断题
(1)MCS-51单片机外部中断请求信号可以设置成低电平激活外部中断。
(2)51单片机中,在IP=0x00时,优先级最高的中断是INT0。
(3)51单片机的中断源有INT0、INT1、TO、T1和串口。
(4)中断函数的调用是在满足中断的情况下,自动完成函数调用的。
(5)特殊功能寄存器TCON锁存4个中断源的中断请求标志。
(6)只要中断允许寄存器 IE 中的 EA=1 ,那么中断请求就一定能够得到响应。
习题---选择题
1)关于中断下列说法错误的是:( )
A、 同一级别的中断请求按时间的先后顺序响应。
B、 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。
C、 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。
D、同级中断不能嵌套。
2)单片机中断标记位存放在 ( )寄存器中。
A、IE和SBUE B、IP和TMOD C、TCON和TMOD D、TCON和SCON
习题---简答题
1、 引脚P1.4~P1.7中断如何使用?
2、 中断服务子程序与普通子程序的异同
3、 80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?
4、 请写出51单片机的5个特殊功能寄存器IE、IP、TCON、TMOD、SCON的功能,详细到每位的功能。
5、 什么是是中断优先级?中断优先级 处理的原则是什么?
6、 8051怎么管理中断?怎样开放和禁止中断?怎么设置优先级?
7、 外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?
8、 请说明中断服务函数的编写方法?简述中断函数的特征及与子函数的主要应用区别?
�
�
入口
读端口
不允许抢答且不是’开始键’?�
否
是‘1’号键�
是‘2’号键?
是‘3’号键?
是‘4’号键?
是‘5’号键
是‘6’号键?
是‘7’号键?
是
显示,禁止抢答,LED灯亮
否
显示,禁止抢答,LED灯亮
是
显示,禁止抢答,LED灯亮
是
显示,禁止抢答,LED灯亮
否
显示,禁止抢答,LED灯亮
是
显示,禁止抢答,LED灯亮
否
关显示,允许抢答,LED灯灭;
是
否
是
退出
否
否
是
是
否
$$