




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章单片机的中断系统,单片机原理、接口及应用,MCS-51单片机的中断系统中断的基本概念中断的系统结构中断的响应过程中断的的应用编程小结,内容提要,4.1.1中断技术的概念在CPU和外设交换信息时,存在着快速CPU和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用中断技术。中断CPU和外设并行工作,当外设数据准备好(或有某种突发事件发生)时向CPU提出请求,CPU暂停正在执行的程序转而为该外设服务(或处理紧急事件),处理完毕再回到原断点继续执行原程序。中断源引起中断的原因,中断申请的来源,中断源可以是I/O设备、故障、时钟、调试中人为设置。,4.1中断概述,中断优先级当有多个中断源同时向CPU申请中断时,CPU优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的,这种预先安排的响应次序。中断的嵌套在中断系统中,高优先级的中断请求能中断正在进行的较低级的中断源处理,本章将讨论MCS-51系列单片机的中断系统。,8XX51有5个中断源,3个在片内,2个在片外,它们在程序存贮器中有固定的中断入口地址,当CPU响应中断时,硬件自动形成这些地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形式中断嵌套.,4.2MCS-51单片机中断系统的结构,4.2.1中断源8XX51有5个中断源,其符号、名称、产生条件及中断服务程序的入口地址如下表。,说明:IT0和IT1为外中断INT0和INT1中断触发方式选择,若选下降沿触发则相应位置1;若选低电平触发,IT相应位置0。某中断源有中断请求,该中断标志置1,无中断请求,该中断标志置0TR0和TR1为定时器T0和T1工作启动和停止控制。,4.2.2中断标志寄存器1.定时器控制寄存器TCON,2.串行口的空制寄存器SCON8XX51串行通信的方式选择,接受和发送控制及串行口的标志均由专用寄存器SCON控制和指示,其格式如下:,TI:发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平,发送完一帧数据后,由硬件置“1”,如果再发送,必须用软件再清零。RI:接收中断标志位。接收前,必须用软件清零,接收过程中RI保持零电平,接收完一帧数据后由片内硬件自动置“1”。如果再接收必须用软件清零。,4.2.3中断控制寄存器,(1)中断的允许和禁止中断控制寄存器IEIE寄存器的各位对应相应的中断源,如果允许该中断源中断则该位置1,禁止中断则该位置0。IE可以位寻址,EA:中断总控开关,是CPU是否响应中断的前提。EA=1,CPU开中断;EA=0,CPU关中断。ES:串行口中断允许位,ES=1,允许串行口发送/接收中断;ES=0,禁止串行口中断。ET1:定时器T1中断允许位,ET1=1,允许T1计数溢出中断;ET1=0,禁止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.3中断响应过程,4.3.1中断处理过程中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。MCS51系列单片机的中断过程流程如图所示。,N,N,Y,Y,Y,N,执行指令,中断标志1?(中断请求?),指令最后一个T周期?,EA=1?允许位=1?,CPU判别优先权,响应优先权高的中断,断点的PC进栈,中断服务入口地址送PC,撤除中断标志,中断服务,中断返回,断点出栈送PC,中断请求.,中断响应,中断服务,中断返回,中断请求、中断响应过程由硬件自动完成。中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。中断返回是通过执行一条RETI中断返回指令,使堆栈中被压入的断点地址送PC,从而返回主程序的断点继续执行主程序。另外RETI还有恢复优先级状态触发器的作用,因此不能以RET指令代替“RETI”指令。,若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,然而下面三种情况单片机不响应此中断:当前正在执行的那条指令没执行完;当前响应了同级或高级中断;正在操作IE、IP中断控制寄存器或执行RETI指令。在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。,4.3.2中断请求的撤除CPU响应中断后,应撤除该中断请求标志,否则会再次中断。,对电平触发的外部中断,CPU在响应中断时也不会自动清除中断标志,因此,在CPU响应中断后应立即撤除INT1或INT0的低电平信号。,对定时计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0和TF1。,对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动清除中断请求标志IE0和IE1。,对于串行口中断,CPU响应中断后,没有用硬件清除中断请求标志TI、RI,即这些中断标志不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的。,4.4中断的程序设计,用户对中断的控制和管理,实际是对4个与中断有关的寄存器IE、TCON、IP、SCON进行控制或管理。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的有关位进行预置。在中断程序的编制中应注意:,开中断总控开关EA,置位中断源的中断允许位。,对外部中断INT0、INT1应选择中断触发方式。,编写中断服务程序,并注意用保护现场和恢复现场,以免中断返回时,丢失原寄存器、累加器中的信息。,多个中断源中断,应设定中断优先级,预置IP。,若要在执行当前中断程序时禁止更高优先级中断,可以采用软件关CPU中断或禁止某中断源中断,在中断返回前再开放中断。,汇编语言的中断服务程序按规定的中断矢量地址存入,由于五个中断矢量地址0003H、000BH、0013H、001BH、0023H之间相距很近,往往装不下一个中断服务程序,通常将中断服务程序安排在程序存贮器的其他地址空间,而在矢量地址的单元中安排一条转移指令。,4.4.1汇编语言中断程序的设计,例1.在图6.3中P1.4P1.7接有四个发光二极管,P1.0P1.3接有四个开关,消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过INT0向CPU申请中断,要求:初时发光二极管全黑,每中断一次,P1.0P1.3所接的开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮,编程如下:,ORG0000HAJMPMAINORG0003H;INT0中断入口AJMPWBI;转中断服务程序ORG0030H;主程序MAIN:MOVP1,#0FH;全灯灭,低四位输入SETBIT0;边沿触发中断SETBEX0;允许外中断0中断SETBEA;开中断开关SJMP$WBI:MOVP1,#0FH;P1先写入“1”且灯灭MOVA,P1;输入开关状态SWAPAMOVP1,A;输出到P1高4位RETIEND,此例的执行现象是,每重置一次四个开关的开、合状态,四个发光二极管维持原来的亮、灭状态,仅当来回拔动消抖电路开关后,产生了中断,发光二极管才反映新置的开关状态。,例2.89C51的P1口接一个共阴极的数码管,利用消抖开关产生中断请求信号,每来回拔动一次开关,产生一次中断,用数码管显示中断的次数(最多不超过15次)。,ORG0000HAJMPMAINORG0013H;INT1中断入口AJMPINT1;转中断服务程序ORG0030H;主程序MAIN:SETBIT1;边沿触发中断SETBEX1;允许INT1中断SETBEA;开中断开关MOVR0,#0;计数初值为0MOVA,#3FH;“0”的字形码送AAL1:MOVP1,A;显示数码AL2:CJNER0,#0FH,AL1;没满15次循环显示MOVR7,#0FFH;满15次,显F,延时,DJNZR7,MOVP1,#0;关显示CLREA;关中断SJMP;结束INT1:INCR0;中断次数加1MOVA,R0MOVDPTR,TAB;DPTR指向字形码表首址MOVCA,A+DPTR;查表POPDPHPOPDPL;弹出断点MOVDPTR,#AL1PUSHDPLPUSHDPH;修改中断返回点,AL1压入堆栈RETI;从堆栈AL1地址PC,返主程序AL处,TAB:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H;段码表(字形码)END上面程序每中断一次,执行一次中断服务程序INT1。在中断服务程序中,累计中断次数并查字形表,返回到主程序AL1地址执行显示。,以上中断在AL1或AL2两指令处发生,究竟是哪一指令处中断是随机的,为保证返回到AL1显示F,这里采用修改中断返回点的办法,即先从栈中弹出中断响应时压入的断点弹到DPTR中,修改DPTR为用户需要的返回点,并将其压入堆栈,再通过执行RETI指令弹出栈中内容到PC、弹出的即为修改后的地址,从而返回到主程序中用所希望的地址执行。上例中中断次数在主程序判断,目的是使读者了解修改中断返回点的方法,如果改在中断服务程序中判断,编程简洁些,下面仅介绍和上例中的不同部分的程序。,MOVR0,#0;计数初值为0MOVP1,#3FH;显示0MOVDPTR,#TAB;指向字形码表AGA:SJMP;等待中断INT1:INCR0;中断次数加1MOVA,R0MOVCA,A+DPTR;查字形码表MOVP1,A;显示CJNER0,#0FH,RE;15次中断未到转RECLREA;15次到关中断RE:RETI;返回主程序的AGA处TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H,每个中断源有固定的中断服务程序的入口地址(称矢量地址或向量地址)。当CPU响应中断以后单片机内部硬件保证它能自动的跳转到该地址。因此,此地址是应该熟记的,在汇编程序中,中断服务程序应存放在正确的向量地址内。(或存放一条转移指令);而在C语言中是靠Interruptn的关键字n自动设置的。,4.3小结,(1)中断技术是实时控制中的常用技术,51系列单片机有三个内部中断,二个外部中断。所谓外部中断就是在外部引脚上有产生中断所需要的信号。,(2)单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器IE,中断优先权寄存器IP,必须在CPU开中断即开全局中断开关EA,开各中断源的中断开关,CPU才能响应该中断源的中断请求,其中缺一不可。(3)从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程,才能理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序。(4)本章重点应掌握中断的基本概念,并能熟练编制中断程序。,第5章单片机的定时/计数器与串行接口,单片机原理、接口及应用,4.5定时/计数器的结构及工作原理定时计数器结构和工作原理定时计数器的控制寄存器定时器的四种工作方式定时计数器的应用编程,51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。两个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合定时/计数器实际上是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个机器周期即为5s,即定时5s。,4.5.2定时/计数器的工作原理,2.计数工作方式,设置为计数工作方式时,通过引脚T0(P34)和T1(P35)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时,定时器的值加1,在每个机器周期CPU采样T0和T1的输入电平。若前一个机器周期采样值为高,下一个机器周期采样值为低,则计数器加1。由于检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。,4.6定时/计数器工作方式4.6.1定时/计数器的控制寄存器定时器共有两个控制寄存器:定时器控制TCON(88H)定时器工作模式寄存器TMOD(89H),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,为定时器方式。M1M0工作模式选择位M1M0=00工作方式0(13位方式)。M1M0=01工作方式1(16位方式)。M1M0=10工作方式2(8位自动再装入方式)。M1M0=11工作方式3(T0为2个8位方式)。,2.控制寄存器TCON(88H),TCON寄存器中定时器控制仅用了其中高四位,其意义如下: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)表示TH1TL1TH0TL0。1.方式0定时器(T0或T1)工作于13位定时、计数方式。用于计数方式时最大计数值为2138192个脉冲用于定时工作时,定时时间为: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位参与操作,计数方式时最大计数21665536(个外部脉冲)用于定时工作方式时,定时时间为:t(216一T0初值)时钟周期1216寄存器(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这种工作方式可省去用户重装常数的程序,并可产生精确的定时时间,特别适用作串行口波待率发生器。,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用做串行口的波特率发生器时,T0才工作在方式3,以便增加一个定时器。,5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级经济师专业技术资格考试试卷及答案
- 2025年心理测评与辅导技巧考试试题及答案
- 2025年电气工程基础知识考试试卷及答案
- 2025年物联网技术与应用职业资格考试试题及答案
- 2025年美术教师资格考试试题及答案
- 2025年信息管理与信息系统考试试题及答案
- 2025年计算机网络技术考试试卷及答案
- 2025年生物教育专业考研模拟试卷及答案
- 物流园区多式联运仓库委托经营管理协议
- 宠物连锁品牌授权合作协议
- 变电安全典型案例培训
- 年产4亿片阿奇霉素片的精烘包及车间设计
- 北师大版(2019) 必修第二册 Unit 5 Humans and Nature Lesson 3 Race to the Pole Writing Workshop课件
- 威努特防火墙配置手册
- Mysql 8.0 OCP 1Z0-908 CN-total认证备考题库(含答案)
- 起重机械质量安全风险管控清单(制造(含安装、修理、改造))
- 第26届国际电接触会议暨第四届电工产品可靠性与电接触国际会议联合会议通讯录
- 2023年生态环境综合行政执法考试参考题库(400题)
- 2023-2024学年新疆维吾尔自治区乌鲁木齐市小学语文六年级期末通关试卷附参考答案和详细解析
- 建筑学专业基础知识必学必会考试题库(500题)
- 2023年黑龙江省黑河市辅警协警笔试笔试真题(含答案)
评论
0/150
提交评论