收藏 分享(赏)

单片机原理与接口技术(第7章).ppt

上传人:dreamzhangning 文档编号:3251128 上传时间:2018-10-09 格式:PPT 页数:64 大小:1.09MB
下载 相关 举报
单片机原理与接口技术(第7章).ppt_第1页
第1页 / 共64页
单片机原理与接口技术(第7章).ppt_第2页
第2页 / 共64页
单片机原理与接口技术(第7章).ppt_第3页
第3页 / 共64页
单片机原理与接口技术(第7章).ppt_第4页
第4页 / 共64页
单片机原理与接口技术(第7章).ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、第7章 中断系统及实验,本章学习目标: 了解中断现象、中断优先级、中断嵌套的含义。 掌握中断系统的编程及应用。,7.1 中断的种类,能引起中断的原因是多样的,要求CPU进行处理的任务很多,为了更好地满足整个系统对实时性的要求,有必要对中断进行分类。通常,按引起中断的原因与CPU的关系分为外部中断和内部中断两大类。,7.1.1 外部中断,外部中断是由CPU以外的原因引起的。这类中断通过硬件电路向CPU发出中断请求,因此将这类中断称为硬件中断。外部中断常用于外部设备和单片机之间的数据传送或人机交互等场合。,外部中断的中断源,输入/输出设备及外存储设备; 定时器或计数器电路; 电源故障等。,7.1.

2、2 内部中断,内部中断是指由CPU内部原因引起的中断。这类中断发生在CPU的内部,因此称为内部中断。内部中断可分为陷阱中断和软件中断。 陷阱中断是指由CPU内部事件引起的中断,如程序执行中的故障,或CPU内部的硬件故障等。 软件中断是指由专用的软件中断指令或系统调用指令引起的中断。其主要用于引入程序断点,便于进行程序调试和故障检测。,7.2 MCS-51单片机的中断系统,7.2.1 中断源 MCS-51单片机共有3类5个中断源,两个优先级,中断处理程序可实现2级嵌套,有较强的中断处理能力。 5个中断源中,2个为外部中断请求,2个为片内定时器/计数器T0和T1的溢出中断请求TF0和TF1,1个为

3、片内串行口中断请求TI或RI。这些中断请求信号锁存在特殊功能寄存器TCON和SCON中。,定时器/计数器控制寄存器TCON,定时器/计数器控制寄存器TCON,其格式如图7.1所示。图7.1 定时器/计数器控制字段,与中断有关的控制位,其中与中断有关的控制位有6位:IT0、IE0、IT1、IE1、TF0 、TF1。 IT0:外部中断0请求方式控制位。IT0=0,外部中断0为电平触发方式,P3.2引脚上检测到低电平有效;IT0=1,外部中断0为边沿触发方式,P3.2引脚上检测到由高到低的负跳变有效。IT0由软件置位或复位。,外部中断0请求标志位,IE0:外部中断0请求标志位。CPU采样到P3.2引

4、脚出现有效中断请求时,IE0由硬件电路自动置位;当CPU响应中断,转向中断服务程序时,IE0由硬件电路自动复位。,外部中断1请求,IT1:外部中断1请求方式控制位,功能与IT0类似。 IE1:外部中断1请求标志位,功能与IE0类似。,定时器/计数器溢出中断申请标志位,TF0:定时器/计数器T0溢出中断申请标志位。启动计数后,T0从初始值开始加1计数,当最高位产生溢出时,由硬件电路置位TF0,向CPU发出中断申请。CPU响应TF0中断时清除该标志位,TF0也可用软件查询后清除。 TF1:定时器/计数器T1溢出中断申请标志位,功能与TF0类似。,串行口控制寄存器SCON,串行口控制寄存器SCON,

5、其格式如图7.2所示。图7.2 串行口工作方式控制字段,与中断有关的控制位有2位,与中断有关的控制位有2位:TI和RI。 TI:串行口的发送中断标志位。当串行口发送完一帧8位数据后,由硬件电路置位TI。需要注意的是:CPU在响应发送中断请求后,转向中断服务程序时并不会对TI自动进行复位,因此用户应在中断服务程序中对TI进行手动复位。 RI:串行口的接收中断标志位。当串行口接收完一帧8位数据后,由硬件电路置位RI。类似的,用户应在中断服务程序中对RI进行手动复位。,7.2.2 中断允许控制,对于每个中断源,其开发与禁止由中断允许控制寄存器IE的控制位决定,其格式如图7.3所示。图7.3 中断允许

6、控制字段,与中断有关的控制位,与中断有关的控制位有:EA、ES、ET1、EX1、ET0、EX0。 EA:中断允许总控制位。EA0,关闭总控制位,禁止所有中断;EA1,开放总控制位,每个中断源根据各自的控制位的置位或复位来确定开发或禁止。 ES:串行口中断允许控制位。ES0,禁止串行口中断;ES1,允许串行口中断。,定时器/计数器中断允许控制位,ET1:定时器/计数器T1中断允许控制位。ET10,禁止T1中断;ET11,允许T1中断。 EX1:外部中断1中断允许控制位。EX10,禁止外部中断1;EX11,允许外部中断1。 ET0:定时器/计数器T0中断允许控制位。ET00,禁止T0中断;ET01

7、,允许T0中断。 EX0:外部中断0中断允许控制位。EX00,禁止外部中断0;EX01,允许外部中断0。,7.2.3 中断响应优先级控制,中断源的响应优先级是由中断优先级寄存器IP的控制位决定的,格式如图7.4所示。图7.4 中断优先级控制字段,中断优先级控制位,PS:串行口中断优先级控制位。PS0,串行口中断响应优先级设为低优先级;PS1,串行口中断响应优先级设为高优先级。 PT1:定时器/计数器T1中断优先级控制位。PT10,定时器/计数器T1中断响应优先级设为低优先级;PT11,定时器/计数器T1中断响应优先级设为高优先级。 PX1:外部中断1中断优先级控制位。PX10,外部中断1中断响

8、应优先级设为低优先级;PX11,外部中断1中断响应优先级设为高优先级。,中断优先级控制位,PT0:定时器/计数器T0中断优先级控制位。PT0=0,定时器/计数器T0中断响应优先级设为低优先级;PT0=1,定时器/计数器T0中断响应优先级设为高优先级。 PX0:外部中断0中断优先级控制位。PX0=0,外部中断0中断响应优先级设为低优先级;PX0=1,外部中断0中断响应优先级设为高优先级。,中断系统结构,单片机对中断优先级的处理原则,同一优先级的中断源同时申请中断时,按自然优先级顺序确定应响应的中断申请; 不同优先级的中断源同时申请中断时,先处理高优先级的申请,后处理低优先级的申请; 正在处理低优

9、先级中断时收到高优先级中断申请,停止处理低优先级中断以响应高优先级中断申请; 正在处理高优先级中断时收到低优先级中断申请,不响应低优先级中断申请。,对于同一优先级的中断申请,对于同一优先级的中断申请,单片机对中断申请响应顺序安排如下:中断源 同一中断优先级外部中断0 最高级定时器/计数器T0中断外部中断1定时器/计数器T1中断串行口中断 最低级,7.2.4 中断响应,单片机响应中断的基本条件是:有效的中断请求;当前的所有中断请求中,响应优先级最高;中断允许控制寄存器IE中源允许开关和总允许开关均已开放。,单片机中断响应过程,单片机中断响应过程:单片机一旦响应中断,首先置位相应的优先级有效触发器

10、;然后执行一个硬件子程序调用,把断点地址压入堆栈;再把与各中断源对应的中断服务程序首地址送到程序计数器PC,同时清除中断请求标志(TI和RI除外),从而控制程序转移到中断服务程序。以上过程由中断系统自动完成。,中断服务程序入口地址,各中断源所对应的中断服务程序入口地址: 中断源 入口地址外部中断0 0003H定时器/计数器T0中断 000BH外部中断1 0013H定时器/计数器T1中断 001BH串行口中断 0023H,中断服务程序入口地址,由于每个中断服务程序入口地址处只有8个字节的空间,无法放下完整的中断服务程序,通常是将中断服务程序放在内存的其他区域,而在入口地址处放一条长跳转指令LJM

11、P,以转移到中断服务程序运行。单片机在保护断点后,转入中断服务程序,直到遇到RETI指令返回主程序为止。,中断服务程序中加上参数,如使用C51语言编程,只需在中断服务程序中加上参数:interrupt n(n=0-4)即可,n的数值对应5个中断源。在返回主程序时,也无需再加入特别的中断返回指令。断点保护和返回在C51源程序编译时由系统自动完成。,7.3 交通灯控制实验,用单片机来控制十字路口的交通,在紧急状况下能让特殊车辆优先通行。正常情况下,东西路口和南北路口交替通行,有特殊车辆需通行时,通过中断程序使东西路口和南北路口均禁止通行,保证特殊车辆的优先通行。,7.3.1 硬件电路,7.3.2

12、软件,在工作目录中建立traffic_light.uv2工程,将traffic_light.c源文件添加到工程中,经编译连接后生成traffic_light.hex以载入到单片机中。 工程项目窗口如图7.8所示。,图7.8 工程窗口,以下为traffic_light.c源文件: /-交通灯控制实验- /-头文件引用- #include “reg51.h“ /-宏定义- #define uchar unsigned char #define uint unsigned int /-位变量定义- sbit EAST_REDLIGHT=P10; sbit EAST_YELLOWLIGHT=P11;

13、sbit EAST_GREENLIGHT=P12; sbit SOUTH_REDLIGHT=P13; sbit SOUTH_YELLOWLIGHT=P14; sbit SOUTH_GREENLIGHT=P15;,/-延时子程序- void delay(uint k) uint i,j;for(i=0;i1000;i+)for(j=0;jk;j+); ,/-外部中断0响应程序-,void int0( ) interrupt 0 EAST_REDLIGHT=1;EAST_YELLOWLIGHT=0;EAST_GREENLIGHT=0; /东西路口红灯开启,黄灯绿灯关闭SOUTH_REDLIGHT=

14、1;SOUTH_YELLOWLIGHT=0;SOUTH_GREENLIGHT=0; /南北路口红灯开启,黄灯绿灯关闭delay(850);/延时10秒 ,/-东西路口通行子程序- void east( ) EAST_REDLIGHT=0;EAST_YELLOWLIGHT=0;EAST_GREENLIGHT=1;/东西路口绿灯开启,黄灯红灯关闭SOUTH_REDLIGHT=1;SOUTH_YELLOWLIGHT=0;SOUTH_GREENLIGHT=0;/南北路口红灯开启,黄灯绿灯关闭delay(850);/延时10秒EAST_REDLIGHT=0;EAST_YELLOWLIGHT=1;EAST

15、_GREENLIGHT=0;/东西路口黄灯开启,绿灯红灯关闭delay(85);/延时1秒 ,/-南北路口通行子程序- void south( ) EAST_REDLIGHT=1;EAST_YELLOWLIGHT=0;EAST_GREENLIGHT=0;/东西路口红灯开启,黄灯绿灯关闭SOUTH_REDLIGHT=0;SOUTH_YELLOWLIGHT=0;SOUTH_GREENLIGHT=1;/南北路口绿灯开启,黄灯红灯关闭delay(850);/延时10秒SOUTH_REDLIGHT=0;SOUTH_YELLOWLIGHT=1;SOUTH_GREENLIGHT=0;/南北路口黄灯开启,绿灯

16、红灯关闭delay(85);/延时1秒 ,/-主程序-,main( ) IE=0x81; /开中断TCON=0x00;/中断触发方式为电平方式IP=0x00; /外部中断0设为低优先级while(1) east( ); /东西路口通行south( );/南北路口通行 ,7.3.3 运行结果,图7.10 南北路口通行,图7.11 特殊车辆通行(中断),7.4 数据采集实验,用单片机来实现一个数据采集系统,用户发出中断请求后,单片机采集一次数据,之后将采集结果在发光二极管上输出。,7.4.1 硬件电路,本实验使用单片机的P0口作为数据采集输入端,P1口作为输出端,使用一个按键开关提供单个脉冲作为中

17、断请求信号。硬件电路图如图7.12所示。,图7.12 数据采集实验硬件电路,7.4.2 软件 工程窗口如图7.13所示。图7.13 数据采集实验工程窗口,C51源文件data_collect.c如下所示。 /-数据采集实验- /-包含头文件- #include“reg51.h“ /-外部中断1响应程序- void int1( ) interrupt 2 P0=0xff;/P0口用于输入P1=P0; ,/-主函数-,void main( ) IE=0x84;/开中断while(1); ,7.4.3 实验运行结果 从图7.14至图7.16,可看到:按键一次,则采集数据一次;不按键则不采集。图7.1

18、4 数据采集实验(未采集数据),图7.15 数据采集实验(第一次数据采集),图7.16 数据采集实验(第二次数据采集),7.5 中断嵌套实验,MCS-51单片机具有2个响应优先级的中断系统,可以实现中断的嵌套,即高优先级的中断请求可以打断低优先级的中断服务程序的执行而去执行高优先级的中断服务程序。 实验中使用了三套数码管显示系统,分别为正常显示系统(使用P0口)、低优先级中断显示系统(使用P1口)和高优先级中断显示系统(使用P2口)。,P1口进行显示0-9的数字,实验中,正常显示系统将循环显示0-9的数字,发出中断请求后,低响应优先级的显示系统将打断正常显示系统的显示,转到P1口进行显示一次0

19、-9的数字,显示完毕后关闭显示返回到主程序。若在显示期间有高响应优先级的中断请求来到,则低响应优先级的显示系统将被打断,转到P2口进行显示一次0-9的数字,显示完毕后关闭显示返回到低响应优先级的中断服务程序。,7.5.1 硬件电路 中断嵌套实验的硬件电路如图7.17所示。图7.17 中断嵌套实验硬件电路,7.5.2 软件,在工作目录下建立工程文件7seg.uv2,之后输入C51源文件7seg.c,添加到工程文件中,编译连接后生成7seg.hex目标文件以供载入单片机。 工程窗口如图7.18所示。,图7.18 中断嵌套实验工程窗口,C51源文件7seg.c如下所示。 /-中断嵌套实验- /-头文

20、件引用- #include “reg51.h“ /-宏定义- #define uchar unsigned char #define uint unsigned int,/-延时子程序-,void delay(uint k) uint i,j;for(i=0;i100;i+)for(j=0;jk;j+); ,/-外部中断0响应程序-,void int0( ) interrupt 0 uchar i;for(i=0xf0;i0xfa;i+) P1=i; /数码管显示 delay(850);/延时1秒P1=0; /关闭数码管显示 ,/-外部中断1响应程序- void int1( ) interru

21、pt 2 uchar i;for(i=0xf0;i0xfa;i+) P2=i; /数码管显示delay(850);/延时1秒P2=0; /关闭数码管显示 ,/-主程序-,main( ) uchar i;IE=0x85; /开中断TCON=0x00;/中断触发方式为电平方式IP=0x04; /外部中断0设为低优先级,外部中断1设为高优先级while(1) for(i=0;i10;i+) P0=i;delay(850);/延时1秒 ,7.5.3 实验运行结果 从图7.19到图7.23可以看到中断嵌套的过程。图7.19 中断嵌套实验的正常显示,图7.20 低优先级显示程序中断正常显示的情况,图7.21 高优先级显示程序中断低优先级显示程序的情况,图7.22 高优先级显示程序结束后,关闭显示返回低优先级显示程序,图7.23 低优先级显示程序结束后,关闭显示返回正常显示程序,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报