首页 单片机原理及应用 教学课件 作者 张兰红 第6章 中断系统及应用

单片机原理及应用 教学课件 作者 张兰红 第6章 中断系统及应用

举报
开通vip

单片机原理及应用 教学课件 作者 张兰红 第6章 中断系统及应用第6章中断系统及应用内容中断概述6.180C51单片机中断系统6.2中断服务程序的设计中断系统的应用6.46.36.1中断概述计算机的信息处理系统与人的一般思维有着许多异曲同工之妙,中断技术就是其中的一例。例如,某人正在看书,这时候电话铃响了,他在书本上做个记号,然后与对方通电话,通完电话后从做有记号的地方继续往下看书。这就是日常生活中的中断现象。为什么会出现这样的中断呢?因为一个人在一段特定的时间内,可能会面对着两个、三个甚至更多的任务。但一个人又不可能在同一时间去完成多项任务,因此人只能分析任务的轻重缓急,采用...

单片机原理及应用 教学课件 作者 张兰红 第6章 中断系统及应用
第6章中断系统及应用内容中断概述6.180C51单片机中断系统6.2中断服务程序的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 中断系统的应用6.46.36.1中断概述计算机的信息处理系统与人的一般思维有着许多异曲同工之妙,中断技术就是其中的一例。例如,某人正在看 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf ,这时候电话铃响了,他在书本上做个记号,然后与对方通电话,通完电话后从做有记号的地方继续往下看书。这就是日常生活中的中断现象。为什么会出现这样的中断呢?因为一个人在一段特定的时间内,可能会面对着两个、三个甚至更多的任务。但一个人又不可能在同一时间去完成多项任务,因此人只能 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 任务的轻重缓急,采用中断的方法穿插去完成它们。中断流程图6.1.1中断的有关概念1.中断中断是指CPU执行程序的过程中,由于某种随机的事件(中断发生)引起CPU暂时停止正在执行的程序,而转去执行一个用于处理该事件的程序(中断服务程序),中断服务程序处理完该事件后又返回到原来被中止的程序断点处继续执行(中断返回),这一过程称为中断。中断响应主程序执行主程序断点继续执行主程序中断服务程序中断返回中断请求2.中断服务程序中断之后所执行的相应的处理程序通常称之为中断服务子程序,原来正常运行的程序称为主程序。主程序被断开的位置(或地址)称为“断点”。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序是在程序中事先安排好的,通过调用指令实现;而何时调用中断服务程序事先却无法确定,因为中断的发生是由外部因素决定的,程序中无法事先安排调用指令,调用中断服务程序的过程是由硬件自动完成的。3.中断源中断源是指引起中断的来源。中断源在单片机内部的为内中断,中断源在单片机外部的为外中断。常见的中断源主要有以下几种:(1)输入/输出设备(2)实时时钟或计数信号(3)故障源1.实现分时操作2.实时处理3.故障处理6.1.2中断技术的应用6.1.3中断系统的功能1.能实现中断及返回2.能实现优先权排队3.能实现中断嵌套当中断源向CPU发出中断申请时,CPU能决定是否响应这个中断请求。若中断源有效且CPU开中断,则CPU在现行的指令执行完后,保护好被中断的主程序的断点地址(下一条应该执行的指令地址)及现场信息,然后,将中断服务程序的首地址送给PC,转去执行中断服务程序。中断服务程序的最后一条指令是中断返回指令RETI,该指令使CPU返回断点,继续执行主程序,这个过程如图6-1所示。通常,单片机系统中有多个中断源,有时会遇到多个中断源同时提出中断请求的情况。这就要求单片机既能区分各个中断源的请求,又能确定先为哪一个中断源服务。当CPU响应某一外设的中断请求,正在进行中断处理时,若有优先权级别更高的中断源提出中断请求,则CPU能中断正在进行的中断服务程序,响应高级中断,在高级中断处理完后,再继续执行被中断的中断服务程序。这一过程称为中断嵌套,中断嵌套主程序低级中断请求低级中断响应返回主程序高级中断响应返回低级中断低级中断服务程序高级中断服务程序6.280C51单片机中断系统6.2.1中断系统的结构中断系统结构示意图80C51单片机的中断系统有5个中断源,两个中断优先级,可实现2级中断服务程序嵌套。由片内特殊功能寄存器中的定时器/计数器控制寄存器TCON和串行口控制寄存器SCON对中断源进行控制,由中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;相同优先级内各中断同时提出中断请求时,不能通过程序控制,而是由CPU内部的查询顺序决定谁优先响应。1.中断源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申请中断。(4)定时器/计数器T1溢出中断请求,当T1定时时间到或计数满后,中断请求标志位TF1被硬件置1,向CPU申请中断。(5)串行口中断请求,当串行口接收完一帧数据时,中断请求标志RI被硬件置1,或当串口发送完一帧数据时,中断请求标志TI被硬件置1。中断源的中断请求标志位分别由特殊功能寄存器TCON和SCON的相应位锁存,TCON和SCON寄存器的字节地址分别为88H和98H,可进行位寻址。2.中断标志寄存器TCON和串行口控制寄存器SCON88HD7D1D2D3D4D5D6D0TF1IE0IT1IE1TR0TF0TR1IT0IT0:外部中断的触发方式选择位。当IT0=0时,外部中断为电平触发方式,即引脚上的信号为低电平有效。当IT0=1时,外部中断为边沿触发方式,即引脚上的信号出现从高到低的负跳变有效。IT0位可由软件置1或清0。IE0:外部中断中断请求标志位。当IT0=0时,外部中断为电平触发方式,CPU在每个机器周期的S5P2采样引脚电平,若采样到为低电平时,IE0置1表示向CPU申请中断;若采样到为高电平时,IE0清0。注意:在电平触发方式下,CPU响应中断时,不能自动将IE0清0,因为IE0的状态完全由状态决定,所以在中断返回前必须撤除引脚上的低电平。当IT0=1,外部中断为边沿触发方式,CPU在每个机器周期的S5P2采样引脚电平,如果在连续的两个机器周期里检测到引脚由高电平到低电平,即在第一个机器周期的S5P2采样到=1,在第二个机器周期的S5P2采样到=0,则IE0置1表示向CPU申请中断。在边沿触发方式,CPU响应中断时,由硬件自动清除IE0标志。注意:为了保证CPU能检测到负跳变,的高低电平至少应保持一个机器周期。IT1:外部中断的触发方式选择位,其操作功能与IT0类似。IE1:外部中断中断请求标志位,其操作功能与IE0类似。TF0:定时器/计数器T0溢出中断请求标志位。当T0启动计数后,T0从计数初值开始加1,直至最高位产生溢出由硬件将TF0置1,向CPU申请中断,CPU响应中断时,由硬件自动将TF0清0。如果定时器/计数器T0工作在查询方式,T0计数溢出后,TF0必须由软件清0。TF1:定时器/计数器T1溢出中断请求标志位,其操作功能与TF0类似。TR0、TR1这两个与中断无关,仅与定时器/计数器T0和T1有关,用来启动和停止定时器工作,它们的功能将在定时器/计数器这一章介绍。SCON为串行口控制寄存器,与中断有关的是它的低两位TI和RI,SCON各位定义如下:D7D1D2D3D4D5D6D0SM0TIRB8TB8RENSM2SM1RI98HRI:串行口接收中断标志位,当允许串行口接收数据时,串行口每接收完一帧数据,由硬件将RI置1,CPU响应串行口接收中断时,CPU并不自动清除RI中断标志位,必须在中断服务程序中由软件对RI清零。TI:串行口发送中断标志位,CPU将8位数据写入串行口发送缓冲器SBUF时,就启动了一帧数据的发送,每发送完一帧数据后,由硬件将TI置1,CPU响应串行口发送中断时,CPU并不自动清除TI中断标志位,必须在中断服务程序中由软件对TI清零。单片机复位时,TCON和SCON各位清0,TCON和SCON中所有能产生中断的标志位均可由软件置1或清0。3.中断允许寄存器IEIE各位定义如下:单片机复位时,IE各位清0,禁止所有中断。D7D1D2D3D4D5D6D0EAET0EX1ET1ESEX0A8HEA:总中断允许控制位EA=0,CPU屏蔽所有的中断请求,称为CPU关中断;EA=1,CPU开放所有中断,称为CPU开中断。在EA=1的条件下,由各个中断控制位确定相应中断的打开与关闭。ES:串行口中断允许位ES=0,禁止串行口中断;ES=1,允许串行口中断。ET1:定时器/计数器T1的溢出中断允许位ET1=0,禁止T1溢出中断;ET1=1,允许T1溢出中断。EX1:外部中断1的中断允许位EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。ET0:定时器/计数器T0的溢出中断允许位ET0=0,禁止T0溢出中断;ET0=1,禁止T0溢出中断;EX0:外部中断0的中断允许位EX0=0,禁止外部中断0中断;EX0=1,允许外部中断0中断。例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=0x854.中断优先级寄存器IP80C51单片机有两个中断优先级,即可实现两级中断嵌套,每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位来规定的。IP各位定义如下:D7D1D2D3D4D5D6D0PT0PX1PT1PSPX0B8HPS:串行口中断优先级控制位PS=0,串行口中断定义为低优先级中断;PS=1,串行口中断定义为高优先级中断。PT1:定时器/计数器T1中断优先级控制位PT1=0,T1定义为低优先级中断;PT1=1,T1定义为高优先级中断。PX1:外部中断1中断优先级控制位PX1=0,外部中断1中断定义为低优先级中断;PX1=1,外部中断1中断定义为高优先级中断。PT0:定时器/计数器T0中断优先级控制位PT0=0,T0定义为低优先级中断;PT0=1,T0定义为高优先级中断。PX0:外部中断0中断优先级控制位PX0=0,外部中断0中断定义为低优先级中断;PX0=1,外部中断0中断定义为高优先级中断。80C51单片机的中断系统有两个不可寻址的优先级激活触发器,其中一个指示某高优先级的中断正在执行,所有后来的中断均被阻止。另一个触发器指示某低优先级的中断正在执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求。80C51单片机高优先级中断能够打断低优先级中断形成两级中断嵌套,同优先级中断之间,或低级对高级中断都不能形成中断嵌套,若几个同级中断同时向CPU申请中断,哪一个中断请求优先得到响应,按照单片机内部的查询顺序,这是由中断系统硬件确定的自然优先级。各中断源的默认内部中断优先级、序号和中断服务程序入口地址如表6-1所示。 中断源 序号(C语言用) 中断服务程序入口地址(汇编语言用) 默认中断级别 外部中断0 0 0003H 最高 T0溢出中断 1 000BH 外部中断1 2 0013H T1溢出中断 3 001BH 串行口中断 4 0023H 最低例6-2设置IP寄存器的初始值,使2个外部中断请求为低优先级,其它中断请求为高优先级。解(1)用位操作语句来编写程序段PX0=0 ;2个外中断为低优先级PX1=0 PS=1 ;串口为高优先级中断PT0=1 ;2个定时器/计数器为高优先级中断PT1=1(2)用字节操作语句编写为:IP=0x1a假设IP按照例6-2进行设定。如果CPU正在处理串口中断或2个定时器/计数器中断中的任一个,那么所有后来的中断都被阻止;如果正在处理外部中断0的中断,那么串口中断、2个定时器/计数器溢出中断都可以打断外部中断0;如果5个中断源同时向CPU申请中断,CPU响应定时器/计数器T0溢出中断请求。6.2.2中断响应一个中断源的中断请求被响应,需满足以下必要条件:1.IE寄存器中的总中断允许位EA=1。2.该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。3.该中断源的中断允许位=1,即该中断没有被屏蔽。4.无同级或更高级中断正在被服务。CPU响应中断的过程如下:1.将相应的优先级状态触发器置1(以阻断后来的同级或低级的中断请求)。2.执行一条硬件LCALL指令,即把程序计数器PC的内容压入堆栈保存,再将相应的中断服务程序的序号(入口地址)送入PC。3.执行中断服务程序。中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,遇到下列三种情况之一时,中断响应被封锁:1.CPU正在处理同级的或更高优先级的中断。2.所查询的机器周期不是所当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。3.正在执行的指令是RETI或是访问IE或IP的指令。需要再去执行完一条指令,才能响应新的中断请求。6.2.3中断请求的撤销某个中断请求被响应后,在中断返回前,必须撤除中断请求,否则会错误地再一次引起中断过程。下面按中断请求源的类型分别说明中断请求的撤销方法。1.定时器/计数器中断请求的撤销定时器/计数器的中断请求被响应后。硬件会自动把中断请求标志位TF0、TF1清0,因此定时器/计数器中断请求是自动撤销的。2.外部中断请求的撤销(1)电平触发方式外部中断请求的撤销电平触发方式的中断请求标志是自动撤销的,但外部中断请求信号的低电平可能继续存在,由于单片机对、引脚没有控制作用,所以在以后的机器周期采样时,又会把已清0的IE0或IE1标志位重新置1,会多次引起中断。因此需要外接电路来撤销中断请求信号,即在中断响应后把中断请求信号引脚从低电平强制改变为高电平。常用的电平触发方式外部中断请求信号的撤销电路如图6-4所示。1INT0P1.0外部中断请求信号QDCPSD单片机(2)边沿触发方式外部中断请求的撤销边沿触发方式的外部中断请求的撤销,其中断标志位(IE0或IE1)的清0是在中断响应后由硬件自动完成的,因此边沿触发方式的外部中断请求是自动撤销的。3.串行口中断请求的撤销串行口中断的标志位是TI和RI,但对这两个中断标志位CPU不进行自动清0,因为响应串行口的中断后,CPU无法知道是接收中断还是发送中断,所以串行口中断请求的撤销只能使用软件的方法,在中断服务程序中用程序清0,即用如下的语句进行串行口中断标志位的清除:TI=0 ;清TI标志位RI=0 ;清RI标志位(2)边沿触发方式外部中断请求的撤销边沿触发方式的外部中断请求的撤销,其中断标志位(IE0或IE1)的清0是在中断响应后由硬件自动完成的,因此边沿触发方式的外部中断请求是自动撤销的。6.3中断服务程序的设计中断系统的控制功能要通过对中断系统的各个寄存器进行设置,根据设计要求设置中断允许寄存器IE、优先级寄存器IP以及外部中断的触发方式。例6-3假设允许外部中断0中断,并设定它为高级中断,采用边沿触发方式,其它中断源为低级中断。试编写初始化程序段。解:初始化程序段如下:EA=1 ;CPU开中断EX0=1 ;允许外部中断0产生中断PX0=1 ;外中断0为高级中断IT0=1 ;外中断0为边沿触发方式C51的中断函数格式如下:void函数名()interrupt中断号using工作组 { 中断服务程序内容}中断函数不能返回任何值,所以最前面用void;后面紧跟函数名,名字不要与C语言中的关键字相同;中断函数后不带任何参数,所以函数后面的小括号为空;中断号是指单片机中几个中断源的序号,可查表6-1,这个序号是编译器识别不同中断的唯一序号;最后面的“using工作组”是指这个中断函数使用单片机内部RAM中4个工作寄存器组中的哪一组,C51编译器在编译程序时会自动分配工作组,因此“using工作组”通常省略不写。6.4中断系统的应用例6-4关于单片机外中断应用的Proteus仿真电路如图6-9所示,要求单片机主程序控制8段数码管各段依次循环点亮,当外部中断输入出现从高到低的负跳变时,数码管开始亮灭闪烁显示“8”,闪烁显示8次后,8段数码管的各段继续依次循环点亮。试编写程序,实现上述功能。解:单片机外部中断请求信号采用边沿触发方式,当无中断请求时,七段数码管的a~g段依次点亮,不断循环,因此将P2口的各位依次为高电平即可;当引脚上所接的按钮按下时,产生中断,在中断服务程序中让P2口交替输出0x7f和0x00,数码管显示状态变为“8”亮灭闪烁显示,控制亮灭闪烁显示次数为8次,返回主程序,数码管继续各段循环点亮。#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); } }例6-5单片机中断优先级应用的仿真电路如图6-10所示,要求用单片机主程序控制P1口流水灯循环显示;外部中断引脚出现负跳变时,P1口全部发光二极管亮5S,外部中断引脚出现负跳变时,P2口数码管显示1,保持时间为5S。外部中断为高优先级,外部中断为低优先级。试编写程序,实现上述功能。程序设计如下:#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharucharaa;ucharK1;voiddelay(uintz);voidmain(){IE=0x85; //开总中断,开外部中断0、1IT0=1;//将外部中断0设为边沿触发方式IT1=1;//将外部中断1设为边沿触发方式PX0=0;//将外部中断0设为低优先级方式PX1=1; //将外部中断1设为高优先级方式aa=0xfe;P2=0x00;//P2口数码管开始为暗K1=1;//K1=0为外部中断0的正在中断的标志P3=0xff; //为输入P3口状态做准备while(1){P1=aa; //送入发光二极管点亮信号delay(1000);aa=_crol_(aa,1); //二极管循环点亮} }voiddelay(uintz)//延时子程序{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }voidexter0()interrupt0//外部中断0服务子程序{ K1=0;P1=0xff;//P1口二极管亮5sP1=0x00;delay(5000);P1=0xff;K1=1;}voidexter1()interrupt2//外部中断1服务子程序{P1=0xff;P2=0x06;//送入段选信号06,使数码管显示1delay(5000);P2=0x00;//送入段选信号00,使数码管熄灭if(K1==0)P1=0x00; }
本文档为【单片机原理及应用 教学课件 作者 张兰红 第6章 中断系统及应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥12.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
科技制造的艺术美
暂无简介~
格式:ppt
大小:821KB
软件:PowerPoint
页数:0
分类:工学
上传时间:2019-11-26
浏览量:2