《(15.13)--第5章1 单片机的中断系统2020.ppt》由会员分享,可在线阅读,更多相关《(15.13)--第5章1 单片机的中断系统2020.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、*1第第5章章 MCS-51中断、定时中断、定时/计数器及串行接口计数器及串行接口本章教学要求(1)了解)了解MCS-51单片机中断系统的内部结构和工单片机中断系统的内部结构和工作方式,熟悉中断源和中断控制寄存器,掌握作方式,熟悉中断源和中断控制寄存器,掌握中断服务程序的设计方法。中断服务程序的设计方法。(2)了解)了解MCS-51单片机定时单片机定时/计数器的结构和工作计数器的结构和工作方式,熟悉定时方式,熟悉定时/计数器的控制寄存器,掌握计数器的控制寄存器,掌握定时定时/计数器的应用编程。计数器的应用编程。(3)了解)了解MCS-51单片机串行通信接口的结构和工单片机串行通信接口的结构和工
2、作方式,熟悉串行接口的控制寄存器,掌握串作方式,熟悉串行接口的控制寄存器,掌握串行通信接口的应用编程。行通信接口的应用编程。*2本 章 目 录5.1 中断系统中断系统5.1.1 中断系统概述中断系统概述5.1.2 MCS-51中断系统中断系统5.1.3 中断系统应用举例中断系统应用举例5.2 定时定时/计数器计数器5.2.1 定时定时/计数器的结构计数器的结构与原理与原理5.2.2 定时定时/计数器的工作计数器的工作方式方式*35.2.3 5.2.3 定时定时定时定时/计数器对输入计数器对输入计数器对输入计数器对输入信号的要求信号的要求信号的要求信号的要求5.2.4 5.2.4 定时定时定时定
3、时/计数器的应用计数器的应用计数器的应用计数器的应用5.3 5.3 串行通信接口串行通信接口串行通信接口串行通信接口5.3.1 5.3.1 串行通信基础知识串行通信基础知识串行通信基础知识串行通信基础知识5.3.2 MCS-515.3.2 MCS-51串行通信接串行通信接串行通信接串行通信接口口口口5.3.3 5.3.3 串行通信接口的应串行通信接口的应串行通信接口的应串行通信接口的应用用用用习题与思考题习题与思考题习题与思考题习题与思考题 5.1 5.1 单片机的中断系统单片机的中断系统本章的主要内容本章的主要内容#16 n n MCS-51MCS-51MCS-51MCS-51单片机中断源的
4、单片机中断源的单片机中断源的单片机中断源的种类及工作方式种类及工作方式种类及工作方式种类及工作方式n n 中断控制寄存器中断控制寄存器中断控制寄存器中断控制寄存器IEIEIEIE、中断优先级寄存器中断优先级寄存器中断优先级寄存器中断优先级寄存器IPIPIPIP 及定时器及定时器及定时器及定时器/计数器及外部中断控制寄存器计数器及外部中断控制寄存器计数器及外部中断控制寄存器计数器及外部中断控制寄存器TCONTCONTCONTCON的使的使的使的使 用方法用方法用方法用方法n n MCS-51MCS-51MCS-51MCS-51型单片机型单片机型单片机型单片机中断响应过程中断响应过程中断响应过程中
5、断响应过程n n 外部中断外部中断外部中断外部中断的结构及原理的结构及原理的结构及原理的结构及原理n n 熟练编制熟练编制熟练编制熟练编制中断服务程序中断服务程序中断服务程序中断服务程序5.1.1 中断的概念中断的概念 执行执行主程序主程序继续继续执行执行断点断点中断请求中断请求中断响应中断响应执行执行中断中断处理处理中断返回中断返回5.1 中断系统的概述中断系统的概述 5.1.2 5.1.2 中断的功能中断的功能 n1 1实现中断及返回实现中断及返回n2 2能实现优先权排队能实现优先权排队 n3 3能实现中断嵌套能实现中断嵌套 一、一、中断源中断源 1.1.中断源分类中断源分类 五个中断源,
6、分别是五个中断源,分别是 外部中断外部中断0:0:INT0 INT0,由,由P3.2P3.2提供,提供,外部中断外部中断1:1:INT1 INT1,由,由P3.3P3.3提供,提供,外部中断有两种信号方式,即电平外部中断有两种信号方式,即电平方式和脉冲方式。方式和脉冲方式。T0 T0溢出中断;溢出中断;由片内定时由片内定时/计数器计数器0 0提供提供 T1T1溢出中断;溢出中断;由片内定时由片内定时/计数器计数器1 1提供提供 串行口中断串行口中断RI/TIRI/TI;由片内串行口提供由片内串行口提供5.1.2 5.1.2 中断请求中断请求 中断源机及中断编号中断源机及中断编号 2 2 中断请
7、求中断请求中断请求中断请求 3.3.中断源入口地址中断源入口地址 中断源中断源 入口地址入口地址 INT0 0003 T0 000BH INT1 0013H T1 001BH RI/TI 0023H二、中断寄存器二、中断寄存器 n在在中中断断请请求求被被响响应应前前,中中断断请请求求是是由由CPUCPU锁锁存存在在特殊功能寄存器特殊功能寄存器TCONTCON和和SCONSCON相应中断标志位中。相应中断标志位中。与中断控制有关的控制寄存器有四个:与中断控制有关的控制寄存器有四个:TCON -定时控制寄存器定时控制寄存器,IE -中断允许控制寄存器,中断允许控制寄存器,IP -中断优先级控制寄存
8、器,中断优先级控制寄存器,SCON -及串行口控制寄存器及串行口控制寄存器。1 1中断允许控制寄存器中断允许控制寄存器IEIE D7D6D5D4D3D2D1D0EAESET1EX1 ET0 EX00 0 禁止,禁止,1 1允许允许2中断优先级的设定中断优先级的设定 n 基本原则是:基本原则是:(1)高优先级不能被低优先级中断;)高优先级不能被低优先级中断;(2)低优先级可被高优先级中断。)低优先级可被高优先级中断。(3)任任何何一一种种中中断断(不不管管是是高高级级还还是是低低级级),一旦得到响应,不会再被它的同级中断所中断。一旦得到响应,不会再被它的同级中断所中断。(4)两个同一级的中断源同
9、时向)两个同一级的中断源同时向CPU发出中断发出中断申请,申请,CPU通过内部硬件查询,按自然优先级确通过内部硬件查询,按自然优先级确定优先响应哪一个中断要求定优先响应哪一个中断要求中断响应条件中断响应条件n n 中断源有中断请求;中断源有中断请求;n n 此中断源的中断允许位为此中断源的中断允许位为1;n n CPU开中断(即开中断(即EA=1)。)。以上三条同时满足时,以上三条同时满足时,CPU才有可能响应才有可能响应中断。中断。nPSPS:串行口中断串行口中断优先级控制位。优先级控制位。nPT1PT1:定时计数器定时计数器T1T1中断优先级控制位。中断优先级控制位。nPX1PX1:外部中
10、断外部中断1 1中断中断优先级控制位。优先级控制位。nPT0PT0:定时计数器定时计数器T0T0中断中断优先级控制位。优先级控制位。nPX0PX0:外部中断:外部中断0 0中断中断优先级控制位。优先级控制位。注意:注意:单片机复位后,单片机复位后,IPIP寄存器被清寄存器被清0 0,所有中断源为,所有中断源为低级中断。低级中断。中断优先级控制寄存器(中断优先级控制寄存器(IPIP)#1#1 D7D6D5D4D3D2D1D0PSPT1 PX1 PT0 PX03.3.定时控制寄存器定时控制寄存器TCONTCON D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TF1TF1TF0TF
11、0IE1IE1 IT1IT1 IE0IE0 IT0IT01)TCON7 TF1:T1溢溢出出中中断断标标志志。T1被被启启动动计计数数后后,从从初初值值开开始始加加1计计数数,直直至至计计满满溢溢出出由由硬硬件件使使TF1=1,向向CPU请请求求中中断断,此此标标志志一一直直保保持持到到CPU响响应应中中断断后后,才才由由硬硬件件自自动动清清“0”。也也可可用软件查询该标志,并由软件清用软件查询该标志,并由软件清“0”。2)TCON5 TF0:T0溢出中断标志。其操作功能类似于溢出中断标志。其操作功能类似于TF1。3)TCON3 IE1:外外部部中中断断1标标志志。IE1=1表表明明外外部部中
12、中断断1向向CPU申请中断。申请中断。4)TCON1 IE0:外部中断:外部中断0标志。其操作功能与标志。其操作功能与IE1类似。类似。4.4.串行口控制寄存器串行口控制寄存器SCONSCON D7D6D5D4D3D2D1D0TIRI 说明:说明:SCONSCON1 TI1 TI:串行发送中断标志。:串行发送中断标志。CPUCPU将一个将一个字节数据写入发送缓冲器字节数据写入发送缓冲器SBUFSBUF后启动发送,后启动发送,每发送完一每发送完一个串行帧,硬件置位个串行帧,硬件置位TITI。但。但CPUCPU响应中断后,并不能自响应中断后,并不能自动清除动清除TITI标志,必须标志,必须由软件清
13、除由软件清除。5.1.3 中断处理过程中断处理过程 中断处理过程分为三个阶段:中断处理过程分为三个阶段:中断响应、中断响应、中断处理和中断返回。中断处理和中断返回。v 中断响应中断响应v 中断处理中断处理(又称中断服务又称中断服务)v 中断返回中断返回v 中断请求的撤除中断请求的撤除 中断响应中断返回 一、一、中断处理过程中断处理过程 1 1CPUCPU的中断响应条件的中断响应条件 无同级或高级中断正在服务;无同级或高级中断正在服务;当前指令周期结束当前指令周期结束,如果查询中断请求的机器,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行;周期不是当前指令的最后一个周期,则不行;
14、若现行指令若现行指令是是RETIRETI、RETRET或或访问访问IEIE、IPIP指令,指令,则需要执行到当前指令及下一条指令响应。则需要执行到当前指令及下一条指令响应。n n 2.2.响应过程响应过程n 置位中断优先级有效触发器,即置位中断优先级有效触发器,即关闭同级关闭同级和低级中断:和低级中断:n 调用入口地址,断点入栈,调用入口地址,断点入栈,相当于相当于LCALLLCALL指令;指令;n 进入进入中断服务程序。中断服务程序。响应时间响应时间-从查询中断请求标志位到转向中断服从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。务入口地址所需的机器周期数。(1 1)最快响应时间
15、最快响应时间 以外部中断的电平触发为最快。以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三从查询中断请求信号到中断服务程序需要三 机器周期:机器周期:1 1个周期(查询)个周期(查询)2 2个周期(长调用个周期(长调用LCALLLCALL)(2 2)最长时间最长时间 若当前指令是若当前指令是RETRET、RETIRETI和和IPIP、IEIE指令,紧接指令,紧接 着下一条是乘除指令发生,则最长为着下一条是乘除指令发生,则最长为8 8个周期个周期。二、中断处理二、中断处理 n中断处理(又称中断服务),程序从中断处理(又称中断服务),程序从入口地址入口地址开始执行开始执行,直到返
16、回指令,直到返回指令“RETIRETI”为止,这个为止,这个过程称为过程称为中断处理中断处理。n 包括两部分内容:包括两部分内容:(1 1)保护现场,)保护现场,(2 2)处理中断源的请求)处理中断源的请求。中断处理过程示意图中断源发中断请求中断源发中断请求中断响应条件中断响应条件 是否满足?是否满足?中断是否受阻?中断是否受阻?把把PC断点地址压入堆栈断点地址压入堆栈 相应中断源的中断入口地址相应中断源的中断入口地址送入送入PC,转向中断服务程序,转向中断服务程序NYYN 由硬件自动完成 关中断关中断保护现场保护现场中断服务中断服务 开中断开中断 关中断关中断恢复现场恢复现场 开中断开中断中
17、断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC保护现场和保护现场和恢复现场的恢复现场的过程中不允过程中不允许中断,以许中断,以免现场遭到免现场遭到破坏。破坏。保护和恢复现场之后保护和恢复现场之后的开中断是为了允许的开中断是为了允许有更高级中断打断此有更高级中断打断此中断服务程序。中断服务程序。中断服务程序硬件自动完成中断处理中断处理INTT0:PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务中断源服务 POP PSW POP DPL POP DPH POP ACC RETI保护现场恢复现场三、三、中断返回中断返回 中断返回是指中断服务完中断返回是指中断
18、服务完后,计算机返回到原来暂停后,计算机返回到原来暂停的位置的位置(即即断点断点),继续执行,继续执行原来的程序。原来的程序。中断返回由专门的中断中断返回由专门的中断返回指令返回指令RETIRETI来实现。来实现。中断响应中断返回 5.1.4 外部中断的触发方式外部中断的触发方式 n外部中断的方式选择是通过定时外部中断的方式选择是通过定时/计数器及外部计数器及外部中断控制寄存器中断控制寄存器TCON中的标志位选择的。中的标志位选择的。n1)TCON2 IT1:外部中断外部中断1触发方式控制位。触发方式控制位。当当 IT1=0,外部中断,外部中断1为电平触发方式。为电平触发方式。若若IT1=1,
19、外部中断,外部中断1控制为边沿触发方式。控制为边沿触发方式。n 2)TCON0 IT0:外部中断外部中断0触发方式控制。触发方式控制。5.1.5 中断请求的撤除中断请求的撤除 CPUCPU响应某中断请求后,在中断返回前,应该撤响应某中断请求后,在中断返回前,应该撤除该中断请求,否则会引起另一次中断。除该中断请求,否则会引起另一次中断。定时器定时器0 0或或1 1溢出:溢出:CPUCPU在响应中断后,硬件清除在响应中断后,硬件清除 了有关的中断请求标志了有关的中断请求标志TFOTFO或或TF1TF1,即,即中断请求是中断请求是 自动撤除的自动撤除的。串行口中断:串行口中断:CPUCPU响应中断后
20、,没有用硬件清除响应中断后,没有用硬件清除 TITI、RIRI,要靠软件来清除相应的标志要靠软件来清除相应的标志。边沿激活的外部中断:边沿激活的外部中断:CPU在响应中断后,也是在响应中断后,也是 用硬件自动清除用硬件自动清除有关的中断请求标志有关的中断请求标志IE0或或IE1。电平触发外部中断撤除方法较复杂。因为在电平触发方式中,CPU响应中断 时不会 自动清除IE1或IE0标志,所以在响应中断后应立即响应中断后应立即撤除撤除INT0INT0或或INT1INT1引脚上的低电平引脚上的低电平。在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要硬件软件来配合解决。电平激活的外
21、部中断源中断标志撤除电平激活的外部中断源中断标志撤除#2 撤除外部电平请求信号的方案(参见P124 图5-7)MCS-51INTXP1.0D QCP SD外部设备D型触发器CLR P1.0SETB P1.0中断服务程序RETI服务程序主体硬件电路部分 ANL P1,#0FEHORLP1,#01H 由图可知,外部中断请求信号不直接加由图可知,外部中断请求信号不直接加 或或 引引脚脚上上,而而是是加加在在D触触发发器器的的CLK端端。由由于于D端端接接地地,当当外外部中断请求的正脉冲信号出现在部中断请求的正脉冲信号出现在CLK端时,端时,Q端输出为端输出为0,或或 为为低低,外外部部中中断断向向单
22、单片片机机发发出出中中断断请请求求。利利用用P1口口的的P1.0作作为为应应答答线线,当当CPU响响应应中中断断后后,可可在在中中断断服服务务程序中采用两条指令:程序中采用两条指令:ANL P1,#0FEH ORLP1,#01H 来来撤撤除除外外部部中中断断请请求求。第第一一条条指指令令使使P1.0为为0,因因P1.0与与D触触发发器器的的异异步步置置1端端SD相相连连,Q端端输输出出为为1,从从而而撤撤除除中中断断请请求求。第第二二条条指指令令使使P1.0变变为为1,SD=1,无无效效,Q继继续续受受CLK控控制制,即即新新的的外外部部中中断断请请求求信信号号又又能能向向单单片片机机申申请请
23、中中断断。第第二二条条指指令令是是必必不不可可少少的的,否否则,将无法再次形成新的外部中断。则,将无法再次形成新的外部中断。采采用用定定时时器器(T0,T1)中中断断,其其中中断断请请求求的的撤撤除除由硬件自动完成,无须采取其它措施。由硬件自动完成,无须采取其它措施。5.1.6 中断初始化n中断系统初始化步骤如下:中断系统初始化步骤如下:n 开相应中断源的中断;开相应中断源的中断;n 设定所用中断源的中断优先级;设定所用中断源的中断优先级;n 若为外部中断,则应规定低电平还若为外部中断,则应规定低电平还是负边沿的中断触发方式。是负边沿的中断触发方式。n【例例1】请写出请写出 为低电平触发的中断
24、系统初始为低电平触发的中断系统初始n 化程序。化程序。采用位操作指令采用位操作指令 EA=1;EX1=1;;开外部中断;开外部中断1 PX1=1;;令外部中断;令外部中断1为高优先级为高优先级 IT1=1;;令外部中断;令外部中断1为电平触发为电平触发 采用字节型指令采用字节型指令 IE=0 x84;;开外部中断;开外部中断1中断中断 IP=IP|0 x04;;令为外部中断;令为外部中断1高优先级高优先级 TCON=TCON&0 xFB;;令外部中断;令外部中断1为电平触发为电平触发 IE(A8H)EA ESET1EX1 ET0EX0 PSPT1PX1PT0PX0 IP(B8H)TI RISC
25、ON 98H TF1TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON 88H以外部中断以外部中断0为例:为例:主程序中需要有以下代码:主程序中需要有以下代码:EA=1EA=1;/打开总中断开关打开总中断开关打开总中断开关打开总中断开关EX0=1EX0=1;/开外部中断开外部中断开外部中断开外部中断0 0IT0=0/1IT0=0/1;/设置外部中断的触发方式设置外部中断的触发方式设置外部中断的触发方式设置外部中断的触发方式中断服务函数:中断服务函数:void int0 ()interrupt 0 using 1void int0 ()interrupt 0 using 1 do a
26、nything that you wantdo anything that you want nvoid 函数名函数名()interrupt 中断号中断号 using 工作组工作组 /中断服务程序内容中断服务程序内容nvoid T1_time()interrupt 3n n TH1=(65536-10000)/256;n TL1=(65536-10000)%256;n 中断源机及中断编号中断源机及中断编号5.1.7 外部中断的系统设计应用外部中断的系统设计应用 例例5-15-1 外外部部中中断断0 0引引脚脚(P3.2(P3.2口口)接接一一个个开开关关,P1.0,P1.0口口接接一一只只发发
27、光二极管。开关闭合一次光二极管。开关闭合一次,发光二极管改变一次状态。发光二极管改变一次状态。*39#include#include#include#includesbit P1_0=P10;sbit P1_0=P10;void delay(void)void delay(void)/*/*延时函数延时函数*/int a=5000;int a=5000;while(a-)_nop_();while(a-)_nop_();void main()void main()P1_0=0;P1_0=0;EA=1;EA=1;/*/*开中断开中断*/EX0=1;EX0=1;while(1);while(1);
28、-例例4-17 void int_srv(void)interrupt 0 using 1void int_srv(void)interrupt 0 using 1/*/*外中断函数外中断函数*/delay();delay();if(INT0=0)if(INT0=0)/*/*测试测试INT0=0INT0=0后后P1.0P1.0取反取反*/P1_0=!P1_0;while(INT0=0);P1_0=!P1_0;while(INT0=0);例例5-2 如图如图5-10所示,将所示,将P0口的口的P0.0P0.3作作为输入位输入为输入位输入4个开关的状态,个开关的状态,P2.0P2.3作为输作为输出
29、显示开关状态。要求利用出显示开关状态。要求利用89C52外部中断外部中断0将开关将开关所设的数据读入单片机内,并依次通过所设的数据读入单片机内,并依次通过P2.0P2.3输出,驱动发光二极管,以检查输出,驱动发光二极管,以检查P0.0P0.3输入的输入的电平情况(若输入为低电平则相应的电平情况(若输入为低电平则相应的LED亮)。要亮)。要求采用中断边沿触发方式,每中断一次,完成一次求采用中断边沿触发方式,每中断一次,完成一次读读/写操作。写操作。C语言程序清单:语言程序清单:#includevoid main()IT0=1;/选择边沿触发方式选择边沿触发方式EX0=1;/允许外部中断允许外部中
30、断0EA=1;/总中断允许总中断允许while(1);/等待中断等待中断void int0_serv(void)interrupt 0 /外部中断服务函数外部中断服务函数P0=0 x0f;/设设P0.0P0.3为输入为输入P2=P0;/P0的值输出到的值输出到P2使使LED发光发光 5.1.8 中断源的扩展中断源的扩展例例5-3 用单片机中断方式设计一用单片机中断方式设计一4路故障声光报路故障声光报警系统。警系统。C语言程序清单:语言程序清单:#includesbit sound=P37;void main()IT1=0;/选择低电平触发方式选择低电平触发方式EX1=1;/允许外部中断允许外部
31、中断1EA=1;P2=0 x0f;while(1);/等待中断等待中断void int1_serv()interrupt 2/外部中断外部中断1中断服务函数中断服务函数unsigned char i;sound=sound;/输出方波到蜂鸣器发声输出方波到蜂鸣器发声for(i=0;i100;i+);/发声延时,控制声音频率发声延时,控制声音频率n 例例5-4:利用单片机扩展利用单片机扩展5个外部中断源,中断个外部中断源,中断的优先次序为的优先次序为X0X4,其中,其中X0接到外部中断接到外部中断0上,上,X1X4接到外部中断接到外部中断1上;单片机的上;单片机的P1.4P1.7接接4个发光二极管用来作输出指示;个发光二极管用来作输出指示;(1)当有当有X1X4其中一个外部中断发生时,相其中一个外部中断发生时,相应的发光二极管应的发光二极管D1D4点亮;点亮;(2)当当X0外部中断发生时,外部中断发生时,4个发光二极管全个发光二极管全亮。亮。程序自己编写程序自己编写