收藏 分享(赏)

第4章 单片机的中断系统.ppt

上传人:kpmy5893 文档编号:7183637 上传时间:2019-05-09 格式:PPT 页数:50 大小:1.43MB
下载 相关 举报
第4章  单片机的中断系统.ppt_第1页
第1页 / 共50页
第4章  单片机的中断系统.ppt_第2页
第2页 / 共50页
第4章  单片机的中断系统.ppt_第3页
第3页 / 共50页
第4章  单片机的中断系统.ppt_第4页
第4页 / 共50页
第4章  单片机的中断系统.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、第4章 单片机的中断系统,单片机原理、接口及应用,MCS-51单片机的中断系统 中断的基本概念 中断的系统结构 中断的响应过程 中断的的应用编程 小结,内容提要,4.1.1 中断技术的概念在CPU和外设交换信息时,存在着快速CPU和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用中断技术。 中断CPU和外设并行工作,当外设数据准备好( 或有某种突发事件发生)时向CPU提出请求,CPU暂停正在执行的程序转而为该外设服务(或处 理紧急事件),处理完毕再回到原断点继续执行原程序。 中断源引起中断的原因,中断申请的来源,中断源可以是I/O设备、故障、时钟、调试中人为设置。,4.

2、1 中断概述,中断优先级当有多个中断源同时 向CPU申请中断时,CPU优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的 ,这种预先安排的响应次序。 中断的嵌套在中断系统中,高优先级的 中断请求能中断正在进行的较低级的中断源处理,本章将讨论MCS-51系列单片机的中断系统。,8XX51有5个中断源,3个在片内,2个在片外,它们在程序存贮器中有固定的中断入口地址, 当CPU响应中断时,硬件自动形成这些地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形式中断嵌套.,4.2 MCS-51单片机中断系统的结构,4.2.1 中断源8XX51有5个中断源,其符号、名称、产生条件及中断服

3、务程序的入口地址如下表。,说明:IT0和IT1为外中断INT0 和INT1中断触发方式选择,若选下降沿触发则相应位置1;若选低电平触发 ,IT相应位置0。某中断源有中断请求,该中断标志置1,无中断请求,该中断标志置0 TR0 和 TR1 为定时器T0和T1 工作启动和停止控制。,4.2.2 中断标志寄存器 1.定时器控制寄存器TCON,2.串行口的空制寄存器SCON8XX51串行通信的方式选择 ,接受和发送控制及串行口的标志均由专用寄存器SCON控制和指示,其格式如下:,TI: 发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平,发送完一帧数据后,由硬件置 “1”,如果再发送,必须

4、用软件再清零。 RI: 接收中断标志位。接收前,必须用软件清零,接收过程中RI保持零电平,接收完一帧数据后由片内硬件自动置“1”。如果再接收必须用软件清零。,4.2.3 中断控制寄存器,(1)中断的允许和禁止中断控制寄存器IE IE寄存器的各位对应相应的中断源,如果允许该中断源中断则该位置1,禁止中断则该位置0 。IE可以位寻址,EA:中断总控开关,是CPU是否响应中断的前提。EA=1,CPU开中断;EA=0, CPU关中断。 ES: 串行口中断允许位, ES=1,允许串行口发送/接收中断;ES=0,禁止串行口中断。 ET1:定时器T1中断允许位,ET1=1,允许T1计数溢出中断;ET1=0,

5、禁止T1中断。,ET0: 定时器T0中断允许位,ET0=1,允许T1计数溢出中断;ET0=0,禁止T0中断。 EX1: 外部中断INT1允许位,EX1=1,允许INT1中断;EX1= 0,禁止INT1中断。 EX0: 外部中断INT0允许位,EX0=1,允许INT0中断;EX0= 0,禁止INT0中断。,(2)中断优先级管理寄存器IP,T0,INT0,INT1,T1,串行口,当 某几个中断源在IP寄存器相应位同为1或同为零时,由内部查询确定优先级,查询的顺序是:,CPU优先响应 先查询的中断请求,五个中断源的优先级别由IP寄存器管理,相应位置1,则该中断源优先级别高,置0的优先级 别低。,4.

6、3 中断响应过程,4.3.1 中断处理过程 中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。MCS51系列单 片机的中断过程流程如图所示。,N,N,Y,Y,Y,N,执 行 指 令,中断标志1? (中断请求?),指令 最后一个T周期?,EA=1? 允 许 位 = 1?,CPU 判 别优 先权 ,响 应优 先权高 的中断,断点的PC进栈, 中断服务入口地址送PC,撤 除 中 断 标 志,中 断 服 务,中 断 返 回, 断 点 出 栈 送 PC,中断请求.,中断响应,中断服务,中断返回,中断请求、中断响应过程由硬件自动完成。 中断服务程序应根据需要进行编写。程序中要注意保护现场和

7、恢复现场。 中断返回是通过执行一条RETI中断返回指令,使堆栈中被压入的断 点地址送PC,从而返回主程序的断点继续执行主程序。另外RETI还有恢复优先级状态触发器 的作用,因此不能以RET指令代替“RETI”指令。,若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,然而下面三种情 况单片机不响应此中断: 当前正在执行的那条指令没执行完; 当前响应了同级或高级中断; 正在操作IE、IP中断控制寄存器或执行RETI指令。在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。,4.3.2 中断请求的撤除 CPU响应中断后,应撤除该中断请求标志,否

8、则会再次中断。, 对电平触发的外部中断,CPU在响应中断时也不会自动清除中断标志,因此,在CPU响应中断后应立即撤除INT1或INT0的低电平信号。,对定时计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0和TF1。,对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动清除中断请求标志IE0和IE1。,对于串行口中断,CPU响应中断后,没有用硬件清除中断请求标志TI、RI,即这些中断标志 不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的。,4.4 中断的程序设计,用户对中断的控制和管理,实际是对4个与中断有关的寄存器IE、TCON、IP、

9、SCON进行控制 或管理。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关 位进行预置。在中断程序的编制中应注意:,开中断总控开关EA,置位中断源的中断允许位。,对外部中断INT0、INT1应选择中断触发方式。,编写中断服务程序,并注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器中的信息。,多个中断源中断,应设定中断优先级,预置IP。,若要在执行当前中断程序时禁止更高优先级中断,可以采 用软件关CPU中断或禁止某中断源中断,在中断返回前再开放中断。,汇编语言的中断服务程序按规定的中断矢量地址存入,由于五个中断矢量地址0003H、000BH 、0013H、0

10、01BH、0023H之间相距很近,往往装不下一个中断服务程序,通常将中断服务程 序安排在程序存贮器的其他地址空间,而在矢量地址的单元中安排一条转移指令。,4.4.1 汇编语言中断程序的设计,例1.在图6.3中P1.4P1.7接有四个发光二极管,P1.0P1.3接有四个开关,消抖电路用于 产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过INT0向CPU申请中断,要求:初时发光二极管全黑,每中断一次,P1.0P1.3所接的 开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮,编程如下:,ORG 0000H AJMP MAIN ORG 0003H ;INT0中断入口

11、AJMP WBI ; 转中断服务程序ORG 0030H ;主程序MAIN: MOV P1,#0FH ;全灯灭,低四位输入SETB IT0 ; 边沿触发中断SETB EX0 ;允许外中断0中断SETB EA ;开中断开关 SJMP $WBI: MOV P1,#0FH ;P1先写入“1”且灯灭MOV A,P1 ;输入开关状态SWAP A MOV P1,A ;输出到P1高4位RETIEND,此例的执行现象是,每重置一次四个开关的开、合状态,四个发光二极管维持原来的亮、灭 状态,仅当来回拔动消抖电路开关后,产生了中断,发光二极管才反映新置的开关状态。,例2. 89C51的P1口接一个共阴极的数码管,利

12、用消抖开关产生中断请求信号,每来回拔动一 次开关,产生一次中断,用数码管显示中断的次数(最多不超过15次)。,ORG 0000H AJMP MAINORG 0013H ;INT1中断入口AJMP INT1 ;转中断服务程序ORG 0030H ;主程序 MAIN: SETB IT1 ;边沿触发中断SETB EX1 ;允许INT1中断SETB EA ;开中断开关MOV R0,#0 ;计数初值为0MOV A,#3FH ;“0”的字形码送A AL1: MOV P1,A ;显示数码 AL2: CJNE R0,#0FH,AL1 ;没满15次循环显示 MOV R7,#0FFH ;满15次,显F,延时,DJN

13、Z R7,MOV P1,#0 ;关显示CLR EA ;关中断SJMP ;结束 INT1: INC R0 ;中断次数加1MOV A,R0MOV DPTR,TAB ;DPTR指向字形码表首址 MOVC A,A+DPTR ;查表POP DPHPOP DPL ;弹出断点MOV DPTR,#AL1PUSH DPLPUSH DPH ;修改中断返回点,AL1压入堆栈 RETI ;从堆栈AL1地址PC,返主程序AL处 ,TAB: DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7CHDB 39H,5EH,79H,71H ;段码表(字形码)END上面程序每中断一

14、次,执行一次中断服务程序INT1。在中断服务程序中,累计中断次数并 查字形表,返回到主程序AL1地址执行显示。,以上中断在AL1或AL2两指令处发生,究竟是哪一指令处中断是随机的,为保证返回到AL1显示F ,这里采用修改中断返回点的办法, 即先从栈中弹出中断响应时压入的断点弹到DPTR中,修改DPTR为用户需要的返回点,并将其压 入堆栈,再通过执行RETI指令弹出栈中内容到PC、弹出的即为修改后的地址,从而返回到主 程序中用所希望的地址执行。上例中中断次数在主程序判断,目的是使读者了解修改中断返回点的方法,如果改在中断服 务程序中判断,编程简洁些,下面仅介绍和上例中的不同部分的程序。,MOV

15、R0, #0 ;计数初值为0MOV P1, #3FH ;显示0MOV DPTR,#TAB ;指向字形码表 AGA: SJMP ;等待中断 INT1:INC R0 ;中断次数加1MOV A, R0MOVC A, A+DPTR ;查字形码表MOV P1, A ;显示CJNE R0, #0FH, RE ; 15次中断未到转RE CLR EA ;15次到关中断 RE: RETI ;返回主程序的AGA处 TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,每个中断源有固定的中断服务程序的入口地址(称矢量地址

16、或向量地址)。当CPU响应中断以 后单片机内部硬件保证它能自动的跳转到该地址。因此,此地址是应该熟记的,在汇编程序 中,中断服务程序应存放在正确的向量地址内。(或存放一条转移指令);而在C语言中是靠Interrupt n的关键字n自动设置的。,4.3 小 结,(1)中断技术是实时控制中的常用技术,51系列单片机有三个内部中断,二个外部中断。所谓 外部中断就是在外部引脚上有产生中断所需要的信号。,(2)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器IE,中断优先权寄存器IP ,必须在CPU开中断即开全局中断开关EA,开各中断源的中断开关,CPU才能响应该中断源的 中断请求,其中缺一不可

17、。(3)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程, 才能理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序。(4)本章重点应掌握中断的基本概念,并能熟练编制中断程序。,第5章 单片机的定时/计数器与串行接口,单片机原理、接口及应用,4.5 定时/计数器的结构及工作原理 定时计数器结构和工作原理 定时计数器的控制寄存器 定时器的四种工作方式 定时计数器的应用编程, 51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。 两个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合 定时/计数器实际上是

18、16位加1计数器。T0由2个8位持殊功能寄存器TH0和TL0构成,T1由2个8位持殊功能寄存TH1和TL1构成。 每个定时器都可由软件设置为定时工作方式或计数工作方式。 T0和T1受特殊功能寄存器TMOD和TCON控制。,4.5.1 定时/计数器结构,1. 定时工作方式, 设置为定时工作方式时,定时器计数的脉冲是由51单片机片内振荡器经12分频后产生的。每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。如:当8051采用12MHz晶体时,每个机器周期为1s,计5 个机器周期即为5 s,即定时5 s 。,4.5.2 定时/计数器的工作原理,2. 计数工作方式, 设置为计数工作方

19、式时,通过引脚T0(P34)和T1(P35)对外部脉冲信号计数。 当输入脉冲信号产生由1至0的下降沿时,定时器的值加1, 在每个机器周期CPU采样T0和T1的输入电平。若前一个机器周期采样值为高,下一个机器周期采样值为低,则计数器加 1。 由于检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。 虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。,4.6定时/计数器工作方式 4.6.1 定时/计数器的控制寄存器 定时器共有两个控制寄存器:定时器控制TCON(88H)定时器工作模式寄存器TMOD(89

20、H),1. 工作模式寄存器TMOD(89H),TMOD用于控制T0和T1的操作模式。其各位的定义如下:,定时器T0,定时器T1, GATE:门控信号GATE=0,TRx=1时即可启动定时器工作 ;GATE=1,INTx=1才可启动定时器工作。 C/T:定时器/计数器选择位C/T=1,为计数器方式;C/T=0,为定时器方式。 M1 M0 工作模式选择位M1M0=00 工作方式0(13位方式)。M1M0=01 工作方式1(16位方式)。M1M0=10 工作方式2(8位自动再装入方式)。M1M0=11 工作方式3(T0为2个8位方式)。,2. 控制寄存器TCON(88H),TCON寄存器 中定时器控

21、制 仅用了其中高四位,其意义如下:TF1:T1溢出中断请求标志。TF1=1,T1有溢出中断请求。TF1=0,T1无溢出中断请求。TR1:T1运行控制位。TR1=1,启动T1工作。TR1=0,停止T1工作。,TF0:T0溢出中断请求标志。TF0=1,T0有溢出中断请求。TF0=0,T0无溢出中断请求。TR0:T0运行控制位。TR0=1,启动T0工作。TR0=0,停止T0工作。,C/T,C/T,4.6.2 定时器的工作方式,对TMOD寄存器的M1、M0位的设置,可选择四种工作方式,即方式0、方式1、方式2和方式3。 下面用THX、TLX(X=1或0)表示TH1 TL1 TH0 TL0。1.方式 0

22、 定时器(T0或T1)工作于13位定时、计数方式。 用于计数方式时最大计数值为 213 8192个脉冲 用于定时工作时,定时时间为:t(213一T0初值) 时钟周期12 在这种模式下,16寄存器(THX和TLX)只用13位,其中THX占高8位。其中TLX占低5位, TLX的高3位末用。 当TLX的低5位溢出时向THX进位,而THX溢出时硬件置位TF0,并申请中断。, 定时、计数溢出否可查询TF0是否置位,如果开中断则产生溢出中断。,2 .方式1当TMOD中M1M0=01时,定时计数器工作在方式1。 该模式是一个16位定时计数方式。 寄存器TH0和TL0是以全16位参与操作, 计数方式时最大计数

23、 21665536(个外部脉冲) 用于定时工作方式时,定时时间为: t(216一T0初值) 时钟周期12 16寄存器(THX和TLX) 中THX提供高8位、TLX提供低8位计数初值,3. 方式2当TMOD中M1M0=10时,定时器工作在方式2。方式2是8位的可自动重装载的定时计数方式。 16位的计数器被拆成两个8位,其中TL0用作8位计数器, TH0用以保持计数初值。当TL0计数溢出,置位TF0,TH0中的初值自动装入TL0,继续计数,循环重复计数。 用于计数工作方式时,最大计数值为:28256(个外部脉冲)。 用于定时工作方式时,其定时时间为;t(28TH0初值)振荡周期12 这种工作方式可

24、省去用户重装常数的程序,并可产生精确的定时时间,特别适用作串行口波待率发生器。,4.方式3 当TMOD中M1M0=11时,定时器工作在方式3。 若将T0设置为模式3,TL0和TH0被分成为两个互相独立的8位计数器TH0和 TL0 。 TL0可工作为定时方式或计数方式。占用原T0的各控制位、引脚和中断源。即CT、GATE、TR0、TF0和T0 (P3.4)引脚、INT0 (P3.2)引脚。 TH0只可用作定时功能,占用定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TRl的控制。 定时器T1无模式 3, 可工作于方式0、1、2,但不能使用中断方式。 只有将T1用做串行口的波特率

25、发生器时,T0才工作在方式3,以便增加一个定时器。,5.1.4 定时计数器的应用编程,5.1.4.1 定时器的计数初值C的计算和装入如前所述,8xx51定时器/计数器不同工作方式的模值不同,由于采用加1计数,因此计数初值应为负值,计算机中用有符号数采用补码表示。计数初值(C)的求法如下。 计数方式:计数初值 C=模-X(其中X为要计的脉冲个数) 定时方式:计数初值 C= t / MC补=模t / MC其中t为欲定时时间,MC为8xx51的机器周MC=12/fosc当采用12MHZ晶振时,MC=1us;,定时计数器的初始化编程步骤: 1)根据定时时间要求或计数要求计算计数器初值; 2)工作方式控

26、制字送TMOD寄存器; 3)送计数初值的高八位和低八位到THx和TLx寄存器中; 4)启动定时(或计数),即将TRx置位。如果工作于中断方式,需要置位EA(中断总开关)及ETx(允许定时/计数器中断)。并编中断服务程序。,例4.3 使P1.0接的发光二极管,间隔1秒钟闪烁。(用定时器1,方式0实现1s的延时。),解: 因方式0采用13位计数器,其最大定时时间为:8192 1us=8.192ms,可选择定时时间为5ms,再循环200次,即得到1s的延时。 采用定时方式0,先计算计数初值:每个脉冲周期MC =1s 5ms/1s =5000C=M-计数值=8192-5000=3192=C78H=1100 0111 1000因13位计数器中TL1的高3位未用,TH1占高8位,所以,M0的实际填写值应为:M0=0110 0011 0001 1000TH1=0X63HTL1=0X18H,查询方式如下: DELAY: MOV R3,#200MOV TMOD,#00HMOV TH1,#63HMOV TL1,#18HSETB TR1LP1: JBC TF1, LP2SJMP LP1 LP2 : MOV TH1,#63HMOV TL1,#18H DJNZ R3,LP1RET,

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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