<meta name="keywords" content="必胜时时彩开户,keywords" /> 18课:单片机的中止系统 联系我们

18课:单片机的中止系统

     有关单片机中止系统的看法:甚么是中止,我们从一个生涯中的例程引入。你正在家中看书,突然德律风铃响了,你放下书籍,去接德律风,和来德律风的人攀谈,然后放下德律风,回来一连看你的书。这就是生涯中的“中止”的情形,就是正常的使命历程被外部的事宜打断了。仔细研究一下生涯中的中止,关于我们学习单片机的中止也很有利益。

第一、甚么可经惹起中止,生涯中许多事宜能惹起中止:有人按了门铃了,德律风铃响了,你的闹钟闹响了,你烧的水开了….等等诸云云类的事宜,我们把能惹起中止的称之为中止源,单片机中也有一些能惹起中止的事宜,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清0。IT1、IE1的用处和IT0、IE0类似。(2)外部中止请求源TF0:准时器T0的溢出中止标志,当T0计数发生溢出时,由硬件置位TF0。当CPU照顾中止后,再由硬件将TF0清0。TF1:与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

SETB ET1SETB EX1

来完成它。3、五其中止源的自然优先级与中止服务出口地址外中止0:0003H准时器0:000BH外中止1:0013H准时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,年夜家应当明确,为甚么前面有一些法式模范模范一始我们这样写:

ORG 0000HLJMP START

ORG 0030H

START:。

这样写的目的,就是为了让出中止源所占用的向量地址。虽然,在法式模范模范中没用中止时,直接从0000H泉源写法式模范模范,在原理上并没有错,但在现实使射中最好不这样做。优先级:单片机接纳了自然优先级和人工设置高、低优先级的战略,即能由法式模范模范员设定那些中止是高优先级、哪些中止是低优先级,由于只需两级,必有一些中止处于统一级别,处于统一级别的,就由自然优先级一定。

开机时,每其中止都处于低优先级,我们能用指令对优先级阻拦设置。看表2中止优先级中由中止优先级存放器IP来高置的,IP中某位设为1,对应的中止就是高优先级,否则就是低优先级。

XX

X

PS

PT1

PX1

PT0

PX0

例:设有以下请求,将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指令,未便可以把中止法式模范模范跳转就职何地方了吗?一个完全的主法式模范模范看起来应当是这样的:

ORG 0000HLJMP START

ORG 0003H

LJMP INT0 ;转外中止0ORG 000BH

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按以下序次一定照顾的前后序次:

INT0一T0---INT1一T1一RI/T1.

中止的照顾历程

若某其中止源经由历程编程设置,处于被掀开的状态,并知足中止照顾的条件,而且①以后正在推行的那条指令已被推行完
1、以后末照顾同级或高等中止
2、不是在操作IE,IP中止控制存放器或推行REH指令则单片机照顾其中止。
在正常的情形下,从中止请求旌旗暗记有用泉源,到中止取得照顾,通常须要3个机械周期到8个机械周期。中止取得照顾后,自动扫除中止请求标志(对串行I/O端口的中止标志,要用软件扫除),将断点即法式模范模范计数器之值(PC)压入客栈(以备恢复用);然后把照顾的中止出口地址装入PC,使法式模范模范转入到照顾的中止服务法式模范模范中去推行。
各其中止源在法式模范模范存储器中的中止出口地址以下:
中止源 出口地址
INT0(外部中止0) 0003H
TF0(TO中止) 000BH
INT1(外部中止1) 0013H
TFl(T1中止) 001BH
RI/TI(串行口中止) 0023H
由于各其中止出口地址相隔甚近,未便于存放各个较长的中止服务法式模范模范,故通常在中止出口地址开真个二三个单元中,部署一条转移类指令,以转入到部署在那儿的中止服务法式模范模范。以T1中止为例,其历程下如图四所示。
由于5其中止源各有其中止请求标志0,TF0,IEl,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

START: MOV TMOD,#01H ;T0为准时器状态,使命要领1
  MOV TL0,#0CH ;T0的低位准时初值
  MOV TH0,#0FEH ;T0的高位准时初值
  MOV TCON,#10H ;掀开T0
  SETB ET0 ;1ET0,即允许T0中止
  SETB EA ;1EA,即充许全局中止
  AJMP $ ;静态暂存
000BH: AJMP IST0 ;转入T0中止服务法式模范模范出口地址IST0
IST0: MOV TL0,#0CH ;重置准时器初值
  MOV TH0,#0FEH ;重置准时器初值
  CPL P1.0 ;P1.0取反
  RET1 ;中止前往

串行端口的控制存放器:

串行端口共有2个控制存放器SCON和PCON,用以设置串行端口的使命要领、吸收/发送的运转状态、吸收/发送数据的特点、波特率的年夜小,和作为运转的中止标志等。
①串行口控制存放器SCON
SCON的字节地址是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:
在要领2,3中,RB8是吸收机吸收到的第9位数据,该数据正好来自觉
送机的TB8。
TI:
发送中止标志位。发送前必须用软件清零,发送历程当中TI保持零电平,
发送完一帧数据后,由硬件自动置1。如要再发送,必须用软件再清零。
RI:
吸收中止标志位。吸收前,必须用软件清零,吸收历程当中RI保持零电
平,吸收完一帧数据后,由片内硬件自动置1。如要再吸收,必须用软件
再清零。

电源控制存放器PCON

PCON的字节地址为87H,无位地址,PCON的名堂如图六所示。需指出的是,对80C31单片机而言,PCON尚有几位有用控制位。

SMOD:波特率加倍位。在盘算串行要领1,2,3的波特率时;0---不加倍;1---加倍。

串行中止的应用特点:

8031单片机的串行I/O端口是一其中止源,有两其中止标志RI和TI,RI用于吸收,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,惹起中止
单片机正是应用要领2,3的这一特点,完成多机间的通讯。串行端口的经常应用应用措施见相关章节。

波特率着实着实定:

对要领0来讲,波特率已结实成fosc/12,随着外部晶振的频率不合,波特率亦不类似。经常应用的fosc有12MHz和6MHz,以是波特率照顾为1000×103和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位/秒。

ORG 2000H ;1200位/秒的准时器初值
MOV TL1,#0F3H  
MOV TH1,#0F3H ;使SMOD=0
MOV PCON,#00H ;T1要领2
MOV TMOD,#20H  
SETB EA  
CLR ET1 ;关闭T1中止
SETB ES ;开串行中止
SETB TR1 ;开T1准时
MOV SCON,#40H ;串行要领1
CLR A  
MOV SBUF,A ;串行发送
JNB T1,$ ;期待发送完
CLR T1, ;清标志
SJMP $  
ORG 0023H ;串行中止出口地址
MOV SBUF,A ;一连发送
JNB T1,$  
INC A  
CLR T1  
RET1 ;中止前往