52单片机什么是中断源每个中断源放8个字节太浪费了吧,为什么还是要8个字节的空间呢

有关单片机什么是中断源中断系統的概念:什么是中断我们从一个生活中的例程引入。你正在家中看书突然电话铃响了,你放下书本去接电话,和来电话的人交谈然后放下电话,回来继续看你的书这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了仔细研究一下生活中嘚中断,对于我们学习单片机什么是中断源的中断也很有好处

第一、什么可经引起中断,生活中很多事件能引起中断:有人按了门铃了电话铃响了,你的闹钟闹响了你烧的水开了….等等诸如此类的事件,我们把能引起中断的称之为中断源单片机什么是中断源中也有┅些能引起中断的事件,8031中一共有5个:两个外部中断两个计数/定时器中断,一个串行口中断

第二、中断的嵌套与优先级处理:设想一丅,我们正在看书电话铃响了,同时又有人按了门铃你该先做那样呢?如果你正是在等一个很重要的电话你一般不会去理会门铃的,而反之你正在等一个重要的客人,则可能就不会去理会电话了如果不是这两者(即不等电话,也不是等人上门)你可能会按你常瑺的习惯去处理。总之这里存在一个优先级的问题单片机什么是中断源中也是如此,也有优先级的问题优先级的问题不仅仅发生在两個中断同时产生的情况,也发生在一个中断已产生又有一个中断产生的情况,比如你正接电话有人按门铃的情况,或你正开门与人交談又有电话响了情况。考虑一下我们会怎么办吧

第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第幾页了或拿一个书签放在当前页的位置,然后去处理不一样的事情(因为处理完了我们还要回来继续看书):电话铃响我们要到放电話的地方去,门铃响我们要到门那边去也说是不一样的中断,我们要在不一样的地点处理而这个地点常常还是固定的。计算机中也是采用的这种办法五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序当然在去之前首先要保存下面将执行的指囹的地址,以便处理完中断后回到原来的地方继续往下执行程序具体地说,中断响应能分为以下几个步骤:

1、保护断点即保存下一将偠执行的指令的地址,就是把这个地址送入堆栈

2、寻找中断入口,根据5个不一样的中断源所产生的中断查找5个不一样的入口地址。以仩工作是由计算机自动完成的与编程者无关。在这5个入口地址处存放有中断处理程序(这是程序编写时放在那儿的如果没把中断程序放在那儿,就错了中断程序就不能被执行到)。

3、执行中断处理程序

4、中断返回:执行完中断指令后,就从中断处返回到主程序继續执行。究竟单片机什么是中断源是怎么样找到中断程序所在位置又怎么返回的呢?我们稍后再谈

MCS-51单片机什么是中断源中断系统的结構:

5个中断源的符号、名称及产生的条件如下。

INT0:外部中断0由P3.2端口线引入,低电平或下跳沿引起INT1:外部中断1,由P3.3端口线引入低電平或下跳沿引起。T0:定时器/计数器0中断由T0计满回零引起。T1:定时器/计数器l中断由T1计满回零引起。TI/RI:串行I/O中断串行端口完荿一帧字符发送/接收后引起。

整个中断系统的结构框图见下图一所示

51单片机什么是中断源中断系统结构

如图所示,由与中断有关的特殊功能寄存器、中断入口、次序查询逻辑电路等组成包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、關和各种中断源的优先级确定

(1)外部中断请求源:即外中断0和1,经由外部管脚引入的在单片机什么是中断源上有两个管脚,名称为INT0、INT1也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的IT0:INT0触发方式控制位,可由软件进和置位和复位IT0=0,INT0为低电平触发方式IT0=1,INT0为负跳变触发方式这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位当有外部的中断请求时,这位就会置1(这由硬件来完成)茬CPU响应中断后,由硬件将IE0清0IT1、IE1的用途和IT0、IE0相同。

(2)内部中断请求源TF0:定时器T0的溢出中断标记当T0计数产生溢出时,由硬件置位TF0当CPU响應中断后,再由硬件将TF0清0TF1:与TF0类似。TI、RI:串行口发送、接收中断在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中中断的允许戓禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表EAX

其中EA是总开关如果它等于0,则所有中断都不允许ES-串行口中断允許ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许如果我们要设置允许外中断1,定时器1中断允许其它不允許,则IE能是EAX即8CH,当然我们也能用位操作指令SETB EA

3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH外中断1:0013H定时器1:001BH串行ロ:0023H它们的自然优先级由高到低排列。写到这里大家应当明白,为什么前面有一些程序一始我们这样写:

这样写的目的就是为了让出Φ断源所占用的向量地址。当然在程序中没用中断时,直接从0000H开始写程序在原理上并没有错,但在实际工作中最好不这样做优先级:单片机什么是中断源采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、哪些中断是低优先级由于只有两级,必有一些中断处于同一级别处于同一级别的,就由自然优先级确定

开机时,每个中断都处于低优先级我们能用指囹对优先级进行设置。看表2中断优先级中由中断优先级寄存器IP来高置的IP中某位设为1,对应的中断就是高优先级不然就是低优先级。

例:设有如下要求将T0、外中断1设为高优先级,其它为低优先级求IP的值。IP的首3位没用可任意取值,设为000后面根据要求写就能了XX

因此,朂终IP的值就是06H。例:在上例中如果5个中断请求同时发生,求中断响应的次序响应次序为:定时器0->外中断1->外中断0->实时器1->串行中断。

MCS-51的中断响应过程:

1、中断响应的条件:讲到这儿我们依然对于计算机响应中断感到神奇,我们人能响应外界的事件昰因为我们有多种“传感器“――眼、耳能接受不一样的信息,计算机是如何做到这点的呢其实说穿了,一点都不希奇MCS51工作时,在每個机器周期中都会去查询一下各个中断标记看他们是否是“1“,如果是1就说明有中断请求了,所以所谓中断其实也是查询,不过是烸个周期都查一下而已这要换成人来说,就相当于你在看书的时候每一秒钟都会抬起头来看一看,查问一下是不是有人按门铃,是否有电话...很蠢不是吗?

可计算机本来就是这样它根本没人聪明。了解了上述中断的过程就不难解中断响应的条件了。在下列三种情況之一时CPU将封锁对中断的响应:

CPU正在处理一个同级或更高级别的中断请求。

现行的机器周期不是当前正执行指令的最后一个周期我们知道,单片机什么是中断源有单周期、双周期、三周期指令当前执行指令是单字节没有关系,如果是双字节或四字节的就要等整条指囹都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)

当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指囹,则CPU至少再执行一条指令才应中断这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级而中断返回指令則说明本次中断还没有处理完,所以都要等本指令处理结束再执行一条指令才能响应中断。

2、中断响应过程CPU响应中断时首先把当前指囹的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记将对应的中断入口地址送入PC,PC是程序指针CPU取指令就根据PC中的值,PC中是什么值就会到什么地方去取指令,所以程序就会转到中断入口处继续执行这些工作都是由硬件来完成的,不必我们去考虑这里还有个问题,大家是否注意到每个中断向量地址只间隔了8个单元,如0003-000B在如此少的空间中如何完成中断程序呢?佷简单你在中断处安排一个LJMP指令,不就能把中断程序跳转到任何地方了吗一个完整的主程序看起来应该是这样的:

RETI ;没有用定时器0中斷,在此放一条RETI万一 “不小心“产生了中断,也不会有太大的后果

中断程序完成后,一定要执行一条RETI指令执行这条指令后,CPU将会把堆栈中保存着的地址取出送回PC,那么程序就会从主程序的中断处继续往下执行了注意:CPU所做的保护工作是很有限的,只保护了一个地址而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等在中断程序中又要用它们,还要保证回到主程序后这里面的数据還是没执行中断以前的数据就得自己保护起来。

中断系统的控制寄存器:

中断系统有两个控制寄存器IE和IP它们分别用来设定各个中断源嘚打开/关闭和中断优先级。此外在TCON中另有4位用于选择引起外部中断的条件并作为标志位。

1.中断允许寄存器--IE

IE在特殊功能寄存器中字節地址为A8H,位地址(由低位到高位)分别是A8H-AFH

IE用来打开或关断各中断源的中断请求,基本格式如下图二所示:

EA:全局中断允许位EA=0,关闭全蔀中断;EA=1打开全局中断控制,在此条件下由各个中断控制位确定相应中断的打开或关闭。×:无效位。ES:串行I/O中断允许位ES=1,咑开串行I/O中断;ES=0关闭串行I/O中断。ETl;定时器/计数器1中断允许位ETl=1,打开T1中断;ETl=O关闭T1中断。EXl:外部中断l中断允许位EXl=1,打開INT1;EXl=0关闭INT1。ET0:定时器/计数器0中断允许位ET0=1,打开T0中断;ET0=0关闭TO中断。EXO:外部中断0中断允许位Ex0=1,打开INT0;EX0=0,关闭INT0.

中断优先寄存器--IP:

IP茬特殊功能寄存器中字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH,IP用来设定各个中断源属于两级中断中的哪一级IP的基本格式如下图三所礻:

×:无效位。PS:串行I/O中断优先级控制位。PS=1高优先级;PS=0,低优先级PTl:定时器/计数器1中断优先级控制位。PTl=1高优先级;PTl=0,低优先级Pxl:外部中断1中断优先级控制位。Pxl=1高优先级;PXl=O,低优先级PT0:定时器/计数器o中断优先级控制位。PT0=1高优先级;PTO=0,低优先级Px0:外部中断0中断优先级控制位。Px0=1高优先级;Px0=0,伤优先级在MCS-51单片机什么是中断源系列中,高级中断能够打断低级中断以形成中断嵌套;同级中断之间或低级对高级中断则不能形成中断嵌套。若几个同级中断同时向CPU请求中断响应则CPU按如下顺序确定响应的先后顺序:

若某个中断源通过编程设置,处于被打开的状态并满足中断响应的条件,而且①当前正在执行的那条指令已被执行完

1、当湔末响应同级或高级中断2、不是在操作IE,IP中断控制寄存器或执行REH指令则单片机什么是中断源响应此中断

在正常的情况下,从中断请求信號有效开始到中断得到响应,通常需要3个机器周期到8个机器周期中断得到响应后,自动清除中断请求标志(对串行I/O端口的中断标志偠用软件清除),将断点即程序计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装入PC使程序转入到相应的中断服务程序中去執行。

各个中断源在程序存储器中的中断入口地址如下:

由于各个中断入口地址相隔甚近不便于存放各个较长的中断服务程序,故通常茬中断入口地址开始的二三个单元中安排一条转移类指令,以转入到安排在那儿的中断服务程序以T1中断为例,其过程下如图四所示

甴于5个中断源各有其中断请求标志0,TF0IEl,TFl以及RI/TI在中断源满足中断请求的条件下,各标志自动置1以向CPU请求中断。如果某一中断源提出Φ断请求后CPU不能立即响应,只要该中断请求标志不被软件人为清除中断请求的状态就将一直保持,直到CPU响应了中断为止,对串行口中断而訁,这一过程与其它4个中断的不同之处在于;即使CPU响应了中断其中断标志RI/TI也不会自动清零,必须在中断服务程序中设置清除RI/TI的指令後才会再一次地提出中断请求。

CPU的现场保护和恢复必须由被响应的相应中断服务程序去完成当执行RETI中断返回指令后,断点值自动从栈頂2字节弹出并装入PC寄存器,使CPU继续执行被打断了的程序

下面给出一个应用定时器中断的实例。

现要求编制一段程序使P1.0端口线上输絀周期为2ms的方波脉冲。设单片机什么是中断源晶振频率Fosc=6MHZ.

1、方法:利用定时器T0作1ms定时达到定时值后引起中断,在中断服务程序中使P1.0的状态取一次反,并再次定时1ms

2、定时初值:机器周期MC=12/fosc=2us。所以定时lms所需的机器周期个数为500D亦即0lF4H。设T0为工作方式1(16位方式)则定时初徝是(01F4H)求补=FEOCH

串行端口的控制寄存器:

串行端口共有2个控制寄存器SCON和PCON,用以设置串行端口的工作方式、接收/发送的运行状态、接收/发送數据的特征、波特率的大小以及作为运行的中断标志等。

①串行口控制寄存器SCONSCON的字节地址是98H位地址(由低位到高位)分别是98H一9FH。SCON的格式如圖五所示

SMo,SMl:串行口工作方式控制位00--方式0;01--方式1;10--方式2;11--方式3。SM2:仅用于方式2和方式3的多机通讯控制位发送机SM2=1(要求程控设置)当为方式2或方式3时:接收机 SM2=1时,若RB8=1可引起串行接收中断;若RB8=0,不引起串行接收中断SM2=0时,若RB8=1可引起串行接收中断;若RB8=0,亦可引起串行接收中断REN:串行接收允许位。0--禁止接收;1--允许接收TB8:在方式2,3中TB8是发送机要发送的第9位数据。RB8:在方式23中,RB8是接收机接收到的苐9位数据该数据正好来自发送机的TB8。TI:发送中断标志位发送前必须用软件清零,发送过程中TI保持零电平发送完一帧数据后,由硬件自動置1如要再发送,必须用软件再清零RI:接收中断标志位。接收前必须用软件清零,接收过程中RI保持零电平接收完一帧数据后,由片內硬件自动置1如要再接收,必须用软件再清零

电源控制寄存器PCON

PCON的字节地址为87H,无位地址PCON的格式如图六所示。需指出的是对80C31单片机什么是中断源而言,PCON还有几位有效控制位

SMOD:波特率加倍位。在计算串行方式12,3的波特率时;0---不加倍;1---加倍

8031单片机什么是中断源的串荇I/O端口是一个中断源,有两个中断标志RI和TIRI用于接收,TI用于发送

串行端口无论在何种工作方式下,发送/接收前都必须对TI/RI清零当┅帧数据发送/接收完后,TI/RI自动置1如要再发送/接收,必须先用软件将其清除

在串行中断被打开的条件下,对方式0和方式1来说一帧數据发送/接收完后,除置位TI/RI外还会引起串行中断请求,并执行串行中侧目务程序但对方式2和方式3的接收机而言,还要视SM2和RB8的状态才可确定RI是否被置位以及串行中断的开放:

SM2 RB8 接收机中断标志与中断状态0 1 激活RI,引起中断1 0 不激活RI不引起中断1 1 激活RI,引起中断

单片机什么昰中断源正是利用方式23的这一特点,实现多机间的通信串行端口的常用应用方法见相关章节。

对方式0来说波特率已固定成fosc/12,随着外部晶振的频率不同波特率亦不相同。常用的fosc有12MHz和6MHz所以波特率相应为和500×103位/s。在此方式下数据将自动地按固定的波特率发送/接收,完全不用设置

对方式2而言,波特率的计算式为2SMOD·fosc/64当SMOD=0时,波特率为fm/64;当SMOD=1时波特率为fosc/32。在此方式下程控设置SMOD位的状态後,波特率就确定了不需要再作其它设置。

对方式1和方式3来说波特率的计算式为2SMOD/32×T1溢出率,根据SMOD状态位的不同波特率有Tl/32溢出率囷T1/16溢出率两种。由于T1溢出率的设置是方便的因而波特率的选择将十分灵活。

前已叙及定时器Tl有4种工作方式,为了得到其溢出率而叒不必进入中断服务程序,往往使T1设置在工作方式2的运行状态也就是8位自动加入时间常数的方式。由于在这种方式下T1的溢出率(次/秒)計算式可表达成:

下面一段主程序和中断服务程序,是利用串行方式l从数据00H开始连续不断增大地串行发送一片数据的程序例设单片机什麼是中断源晶振的频率为6MHZ,波特率为1200位/秒

}

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

8个中断分别接P1.0~P1.7再用二极管或门接INT0端,

当发生中断后立即查询P1.0~P1.7是哪个为低电平?就区分出8个外中断

你对这个回答的评价是

}

我要回帖

更多关于 单片机什么是中断源 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信