单片机原理及应用 第3版 课件第6章 中断系统及应用_第1页
单片机原理及应用 第3版 课件第6章 中断系统及应用_第2页
单片机原理及应用 第3版 课件第6章 中断系统及应用_第3页
单片机原理及应用 第3版 课件第6章 中断系统及应用_第4页
单片机原理及应用 第3版 课件第6章 中断系统及应用_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第6章中断系统及应用3.7

中断概述6.180C51单片机中断系统6.2中断服务程序的设计中断系统的应用6.46.326.1中断概述计算机的信息处理系统与人的一般思维有着许多异曲同工之妙,中断技术就是其中的一例。例如,某人正在看书,这时候电话铃响了,他在书本上做个记号,然后与对方通电话,通完电话后从做有记号的地方继续往下看书。这就是日常生活中的中断现象。为什么会出现这样的中断呢?因为一个人在一段特定的时间内,可能会面对着两个、三个甚至更多的任务。但一个人又不可能在同一时间去完成多项任务,因此人只能分析任务的轻重缓急,采用中断的方法穿插去完成它们。17:5036.1.1中断的有关概念1.中断中断是指CPU执行程序的过程中,由于某种随机的事件(中断发生)引起CPU暂时停止正在执行的程序,而转去执行一个用于处理该事件的程序(中断服务程序),中断服务程序处理完该事件后又返回到原来被中止的程序断点处继续执行(中断返回),这一过程称为中断。中断流程图17:5042.

中断服务程序中断之后所执行的相应的处理程序通常称之为中断服务子程序,原来正常运行的程序称为主程序。主程序被断开的位置(或地址)称为“断点”。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序是在程序中事先安排好的,通过调用指令实现;而何时调用中断服务程序事先却无法确定,因为中断的发生是由外部因素决定的,程序中无法事先安排调用指令,调用中断服务程序的过程是由硬件自动完成的。17:5053.中断源中断源是指引起中断的来源。中断源在单片机内部的为内中断,中断源在单片机外部的为外中断。常见的中断源主要有以下几种:

(1)输入/输出设备(2)实时时钟或计数信号(3)故障源

17:5061.实现分时操作6.1.2中断技术的应用中断可以解决快速的CPU与慢速的外设之间的矛盾,使CPU和外设并行工作。CPU在启动外设工作后继续执行主程序,同时外设也在工作。每当外设做完一件事就发出中断申请,请求CPU中断它正在执行的主程序,转去执行中断服务程序(一般情况是处理输入/输出数据),中断处理完成之后,CPU继续执行主程序,外设也继续工作。这样,CPU可以控制多个外设同时工作,大大地提高了CPU的效率。2.实时处理在实时控制系统中,现场的各种参数、信息均随时间和现场而变化。这些外界变量可根据要求随时向CPU发出中断申请,请求CPU及时处理发生的情况。如中断条件满足,CPU马上就会响应,进行相应的处理。3.故障处理单片机在运行过程中会出现难以预料的情况或故障,如掉电、存储出错、运算溢出等,此时可以通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。17:5076.1.3中断系统的功能1.能实现中断及返回2.能实现优先权排队3.能实现中断嵌套当中断源向CPU发出中断申请时,CPU能决定是否响应这个中断请求。若中断源有效且CPU开中断,则CPU在现行的指令执行完后,保护好被中断的主程序的断点地址(下一条应该执行的指令地址)及现场信息,然后,将中断服务程序的首地址送给PC,转去执行中断服务程序。中断服务程序的最后一条指令是中断返回指令RETI,该指令使CPU返回断点,继续执行主程序,这个过程如图6-1所示。通常,单片机系统中有多个中断源,有时会遇到多个中断源同时提出中断请求的情况。这就要求单片机既能区分各个中断源的请求,又能确定先为哪一个中断源服务。当CPU响应某一外设的中断请求,正在进行中断处理时,若有优先权级别更高的中断源提出中断请求,则CPU能中断正在进行的中断服务程序,响应高级中断,在高级中断处理完后,再继续执行被中断的中断服务程序。这一过程称为中断嵌套,17:508中断嵌套17:5096.280C51单片机中断系统

6.2.1中断系统的结构中断系统结构示意图17:501080C51单片机的中断系统有5个中断源,两个中断优先级,可实现2级中断服务程序嵌套。由片内特殊功能寄存器中的定时器/计数器控制寄存器TCON和串行口控制寄存器SCON对中断源进行控制,由中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;相同优先级内各中断同时提出中断请求时,不能通过程序控制,而是由CPU内部的查询顺序决定谁优先响应。17:50111.中断源80C51单片机的中断系统有5个中断源,它们是:(1)外部中断0:由(P3.2)引脚输入,由IT0选择其为低电平有效还是下降沿有效,当CPU检测到引脚上出现有效的中断请求信号时,中断请求标志位IE0置1,向CPU申请中断。(2)外部中断1:由(P3.3)引脚输入,由IT1选择其为低电平有效还是下降沿有效,当CPU检测到引脚上出现有效的中断请求信号时,中断请求标志位IE1置1,向CPU申请中断。(3)定时器/计数器T0溢出中断请求,当T0定时时间到或计数满后,中断请求标志位TF0由硬件置1,向CPU申请中断。17:5012(4)定时器/计数器T1溢出中断请求,当T1定时时间到或计数满后,中断请求标志位TF1被硬件置1,向CPU申请中断。

(5)串行口中断请求,当串行口接收完一帧数据时,中断请求标志RI被硬件置1,或当串口发送完一帧数据时,中断请求标志TI被硬件置1。17:5013中断源的中断请求标志位分别由特殊功能寄存器TCON和SCON的相应位锁存,TCON和SCON寄存器的字节地址分别为88H和98H,可进行位寻址。2.中断标志寄存器TCON和串行口控制寄存器SCON17:5014IT0:外部中断的触发方式选择位。当IT0=0时,外部中断为电平触发方式,即引脚上的信号为低电平有效。当IT0=1时,外部中断为边沿触发方式,即引脚上的信号出现从高到低的负跳变有效。IT0位可由软件置1或清0。17:5015IE0:外部中断

中断请求标志位。当IT0=0时,外部中断为电平触发方式,CPU在每个机器周期的S5P2采样引脚电平,若采样到为低电平时,IE0置1表示向CPU申请中断;若采样到为高电平时,IE0清0。注意:在电平触发方式下,CPU响应中断时,不能自动将IE0清0,因为IE0的状态完全由状态决定,所以在中断返回前必须撤除引脚上的低电平。17:5016当IT0=1,外部中断为边沿触发方式,CPU在每个机器周期的S5P2采样引脚电平,如果在连续的两个机器周期里检测到引脚由高电平到低电平,即在第一个机器周期的S5P2采样到=1,在第二个机器周期的S5P2采样到=0,则IE0置1表示向CPU申请中断。在边沿触发方式,CPU响应中断时,由硬件自动清除IE0标志。注意:为了保证CPU能检测到负跳变,的高低电平至少应保持一个机器周期。17:5017IT1:外部中断的触发方式选择位,其操作功能与IT0类似。IE1:外部中断中断请求标志位,其操作功能与IE0类似。TF0:定时器/计数器T0溢出中断请求标志位。当T0启动计数后,T0从计数初值开始加1,直至最高位产生溢出由硬件将TF0置1,向CPU申请中断,CPU响应中断时,由硬件自动将TF0清0。如果定时器/计数器T0工作在查询方式,T0计数溢出后,TF0必须由软件清0。TF1:定时器/计数器T1溢出中断请求标志位,其操作功能与TF0类似。17:5018TR0、TR1这两个与中断无关,仅与定时器/计数器T0和T1有关,用来启动和停止定时器工作,它们的功能将在定时器/计数器这一章介绍。17:5019SCON为串行口控制寄存器,与中断有关的是它的低两位TI和RI,SCON各位定义如下:17:5020RI:串行口接收中断标志位,当允许串行口接收数据时,串行口每接收完一帧数据,由硬件将RI置1,CPU响应串行口接收中断时,CPU并不自动清除RI中断标志位,必须在中断服务程序中由软件对RI清零。TI:串行口发送中断标志位,CPU将8位数据写入串行口发送缓冲器SBUF时,就启动了一帧数据的发送,每发送完一帧数据后,由硬件将TI置1,CPU响应串行口发送中断时,CPU并不自动清除TI中断标志位,必须在中断服务程序中由软件对TI清零。单片机复位时,TCON和SCON各位清0,TCON和SCON中所有能产生中断的标志位均可由软件置1或清0。17:5021IE各位定义如下:单片机复位时,IE各位清0,禁止所有中断。

3.中断允许寄存器IE17:5022EA:总中断允许控制位EA=0,CPU屏蔽所有的中断请求,称为CPU关中断;EA=1,CPU开放所有中断,称为CPU开中断。在EA=1的条件下,由各个中断控制位确定相应中断的打开与关闭。ES:串行口中断允许位ES=0,禁止串行口中断;ES=1,允许串行口中断。17:5023ET1:定时器/计数器T1的溢出中断允许位ET1=0,禁止T1溢出中断;ET1=1,允许T1溢出中断。EX1:外部中断1的中断允许位EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。17:5024ET0:定时器/计数器T0的溢出中断允许位ET0=0,禁止T0溢出中断;ET0=1,禁止T0溢出中断;EX0:外部中断0的中断允许位EX0=0,禁止外部中断0中断;EX0=1,允许外部中断0中断。17:5025例6-1若允许外部中断0和外部中断1中断,禁止其它中断源的中断请求,请编写出设置IE的相应程序段。解:(1)用位操作指令来编写程序段如下:ES=0 ;禁止串口中断ET1=0 ;禁止定时器/计数器T1中断EX1=1 ;允许外部中断1中断ET0=0 ;禁止定时器/计数器T1中断 EX0=1 ;允许外部中断1中断EA=1 ;CPU开中断(2)用字节操作语句编写为:IE=0x8517:502680C51单片机有两个中断优先级,即可实现两级中断嵌套,每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位来规定的。IP各位定义如下:4.中断优先级寄存器IP17:5027PS:串行口中断优先级控制位PS=0,串行口中断定义为低优先级中断;PS=1,串行口中断定义为高优先级中断。PT1:定时器/计数器T1中断优先级控制位PT1=0,T1定义为低优先级中断;PT1=1,T1定义为高优先级中断。17:5028PX1:外部中断1中断优先级控制位PX1=0,外部中断1中断定义为低优先级中断;PX1=1,外部中断1中断定义为高优先级中断。PT0:定时器/计数器T0中断优先级控制位PT0=0,T0定义为低优先级中断;PT0=1,T0定义为高优先级中断。PX0:外部中断0中断优先级控制位PX0=0,外部中断0中断定义为低优先级中断;PX0=1,外部中断0中断定义为高优先级中断。17:502980C51单片机的中断系统有两个不可寻址的优先级激活触发器,其中一个指示某高优先级的中断正在执行,所有后来的中断均被阻止。另一个触发器指示某低优先级的中断正在执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求。80C51单片机高优先级中断能够打断低优先级中断形成两级中断嵌套,同优先级中断之间,或低级对高级中断都不能形成中断嵌套,若几个同级中断同时向CPU申请中断,哪一个中断请求优先得到响应,按照单片机内部的查询顺序,这是由中断系统硬件确定的自然优先级。17:5030各中断源的默认内部中断优先级、序号和中断服务程序入口地址如表6-1所示。中断源序号(C语言用)中断服务程序入口地址(汇编语言用)默认中断级别外部中断000003H最高T0溢出中断1000BH外部中断120013HT1溢出中断3001BH串行口中断40023H最低17:5031例6-2设置IP寄存器的初始值,使2个外部中断请求为低优先级,其它中断请求为高优先级。解(1)用位操作语句来编写程序段PX0=0 ;2个外中断为低优先级PX1=0 PS=1 ;串口为高优先级中断PT0=1 ;2个定时器/计数器为高优先级中断PT1=1(2)用字节操作语句编写为:IP=0x1a17:5032假设IP按照例6-2进行设定。如果CPU正在处理串口中断或2个定时器/计数器中断中的任一个,那么所有后来的中断都被阻止;如果正在处理外部中断0的中断,那么串口中断、2个定时器/计数器溢出中断都可以打断外部中断0;如果5个中断源同时向CPU申请中断,CPU响应定时器/计数器T0溢出中断请求。17:5033

6.2.2中断响应一个中断源的中断请求被响应,需满足以下必要条件:1.IE寄存器中的总中断允许位EA=1。2.该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。3.该中断源的中断允许位=1,即该中断没有被屏蔽。4.无同级或更高级中断正在被服务。17:5034CPU响应中断的过程如下:1.将相应的优先级状态触发器置1(以阻断后来的同级或低级的中断请求)。2.执行一条硬件LCALL指令,即把程序计数器PC的内容压入堆栈保存,再将相应的中断服务程序的序号(入口地址)送入PC。3.执行中断服务程序。17:5035中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,遇到下列三种情况之一时,中断响应被封锁:1.CPU正在处理同级的或更高优先级的中断。2.所查询的机器周期不是所当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。3.正在执行的指令是RETI或是访问IE或IP的指令。需要再去执行完一条指令,才能响应新的中断请求。

17:5036

6.2.3

中断请求的撤销某个中断请求被响应后,在中断返回前,必须撤除中断请求,否则会错误地再一次引起中断过程。

下面按中断请求源的类型分别说明中断请求的撤销方法。

1.定时器/计数器中断请求的撤销定时器/计数器的中断请求被响应后。硬件会自动把中断请求标志位TF0、TF1清0,因此定时器/计数器中断请求是自动撤销的。

17:5037(1)电平触发方式外部中断请求的撤销电平触发方式的中断请求标志是自动撤销的,但外部中断请求信号的低电平可能继续存在,由于单片机对、引脚没有控制作用,所以在以后的机器周期采样时,又会把已清0的IE0或IE1标志位重新置1,会多次引起中断。因此需要外接电路来撤销中断请求信号,即在中断响应后把中断请求信号引脚从低电平强制改变为高电平。常用的电平触发方式外部中断请求信号的撤销电路如图6-4所示。

2.外部中断请求的撤销17:5038(2)边沿触发方式外部中断请求的撤销边沿触发方式的外部中断请求的撤销,其中断标志位(IE0或IE1)的清0是在中断响应后由硬件自动完成的,因此边沿触发方式的外部中断请求是自动撤销的。17:50393.串行口中断请求的撤销

串行口中断的标志位是TI和RI,但对这两个中断标志位CPU不进行自动清0,因为响应串行口的中断后,CPU无法知道是接收中断还是发送中断,所以串行口中断请求的撤销只能使用软件的方法,在中断服务程序中用程序清0,即用如下的语句进行串行口中断标志位的清除:TI=0 ;清TI标志位RI=0 ;清RI标志位17:50406.3中断服务程序的设计中断系统的控制功能要通过对中断系统的各个寄存器进行设置,根据设计要求设置中断允许寄存器IE、优先级寄存器IP以及外部中断的触发方式。17:5041例6-3假设允许外部中断0中断,并设定它为高级中断,采用边沿触发方式,其它中断源为低级中断。试编写初始化程序段。解:初始化程序段如下:EA=1 ;CPU开中断EX0=1 ;允许外部中断0产生中断PX0=1 ;外中断0为高级中断IT0=1 ;外中断0为边沿触发方式17:5042C51的中断函数格式如下:void函数名()interrupt中断号using工作组

{

中断服务程序内容}中断函数不能返回任何值,所以最前面用void;后面紧跟函数名,名字不要与C语言中的关键字相同;中断函数后不带任何参数,所以函数后面的小括号为空;中断号是指单片机中几个中断源的序号,可查表6-1,这个序号是编译器识别不同中断的唯一序号;最后面的“using工作组”是指这个中断函数使用单片机内部RAM中4个工作寄存器组中的哪一组,C51编译器在编译程序时会自动分配工作组,因此“using工作组”通常省略不写。17:50436.4中断系统的应用例6-4

关于单片机外中断应用的Proteus仿真电路如图6-9所示,要求单片机主程序控制8段数码管各段依次循环点亮,当外部中断输入出现从高到低的负跳变时,数码管开始亮灭闪烁显示“8”,闪烁显示8次后,8段数码管的各段继续依次循环点亮。试编写程序,实现上述功能。17:5044解:单片机外部中断请求信号采用边沿触发方式,当无中断请求时,七段数码管的a~g段依次点亮,不断循环,因此将P2口的各位依次为高电平即可;当引脚上所接的按钮按下时,产生中断,在中断服务程序中让P2口交替输出0x7f和0x00,数码管显示状态变为“8”亮灭闪烁显示,控制亮灭闪烁显示次数为8次,返回主程序,数码管继续各段循环点亮。17:5045#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharuchari,aa;voiddelay(uintz);voidmain() { EA=1; //开总中断

EX0=1; //开外部中断0 IT0=1;//将外部中断0设为边沿触发方式

aa=0x01;//最低位先亮

P3=0xff;//为输入P3.2上的开关状态做准备

while(1) { P2=aa; //送入段选信号

delay(1000); aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa } }voiddelay(uintz)//延时子程序{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }voidexter0()interrupt0//外部中断0{ for(i=8;i>0;i--) { P2=0x7f; //送入段选信号7FH,使数码管显示8 delay(500); P2=0x00;//送入段选信号00H,使数码管熄灭

delay(500); } }17:5046例6-5单片机中断优先级应用的仿真电路如图6-10所示,要求用单片机主程序控制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论