中止操控关键
1、当CPU正在处理某项业务的时分,假如外界或内部发生了更紧迫的事情,要求CPU暂停正在处理的作业转而去处理这个紧迫事情,待处理完今后再回到本来被中止的当地,持续履行本来被中止了的程序,这样的进程称为中止。
(1)能够完结中止处理功用的部件称为中止体系。
(2)向CPU提出中止恳求的源称为中止源,51系列单片机共有5个中止源。
(3)中止源向CPU提出的处理恳求,称为中止恳求或中止请求。
(4)CPU赞同处理中止恳求称为中止呼应,处理中止恳求的程序称为中止服务子程序。
(5)当CPU暂时中止正在履行的程序,转去履行中止服务子程序时,除了硬件主动把断点地址(16位程序计数器PC的值)压入仓库之外,用户应留意维护有关的作业寄存器、累加器、标志位等信息,这称为维护现场;在完结中止服务子程序后,康复有关的作业寄存器、累加器、标志位的内容,称为康复现场;最终履行中止回来指令RETI,从仓库中主动弹出断点地址到PC,持续履行被中止的程序,称为中止回来。
2、根本51单片机的中止体系有5个中止源,可任意分为2个中止优先级(高优先级和低优先级),可完结2级中止服务程序嵌套。
(1)中止优先级寄存器IP的字节地址为B8H,能够位寻址。IP相应的位为0则其对应中止的优先级为低,不然优先级为高。51单片机复位今后IP为0,各个中止源均为低优先级中止。可用位操作指令或字节操作指令更改IP的内容,以改动各中止源的中止优先级。
(2)中止答应寄存器IE的字节地址为A8H,能够位寻址。51单片机的CPU对中止源的敞开或屏蔽,是由片内的中止答应寄存器IE操控的,51单片机复位今后,IE被清0,由用户程序置“1”或清“0”IE相应的位,完结答应或制止相应中止源的中止请求。若答应某一个中止源中止,除了敞开中止总的答应位EA外,有必要一起使CPU敞开该中止源的中止答应位。
(3)51单片机有两个中止优先级,关于每一个中止恳求源可编程为高优先级中止或低优先级中止。一个正在履行的低优先级中止程序能被高优先级的中止源所中止,但不能被另一个低优先级的中止源所中止。若CPU正在履行高优先级的中止,则不能被任何中止源所中止,一向履行到中止服务完毕,遇到回来指令RETI。每次从中止服务程序回来主程序后都有必要再履行一条指令后才干呼应新的中止恳求。中止嵌套的两条根本规则是:①低优先级可被高优先级中止,而高优先级中止源不能被任何中止源所中止;②任何一种中止(不管是高档仍是初级),一旦得到呼应,不会再被它的同级中止所中止。
(4)当几个同优先级的中止一起请求中止时,呼应哪一个中止源将取决于由辅佐优先级决议的一个内部查询次序,详细便是中止服务程序的进口地址越靠前(地址值越小)则辅佐优先级越高。
3、假如总的中止答应敞开(即EA=1)则CPU在每个机器周期的S5P2时间采样中止标志,并鄙人一个机器周期对采样到的中止进行查询。假如前一个机器周期的S5P2有中止标志,则在查询周期内便会查询到,并按优先级凹凸进行中止处理,假如呼应中止,中止体系将操控程序转入相应的中止服务子程序。CPU中止呼应是有条件的,并不是查询到的一切中止恳求都能被当即呼应,当遇到下列三种状况之一时,中止呼应被封闭:
(1)CPU正在处理相同的或更高优先级的中止;
(2)现行的机器周期不是所履行指令的最终一个机器周期;
(3)正在履行的指令是RETI或是拜访IE或IP的指令(CPU在履行RETI或拜访IE、IP的指令后,至少需求再履行一条指令才会呼应新的中止恳求)。
4、TF0和TF1分别为守时/计数器0和守时/计数器1的中止恳求标志位,在现已敞开T0/T1中止答应且已被发动的前提下,T0/T1加1计满溢出时 TF0/TF1标志位主动置“1”;CPU 检测到TCON中TF0/TF1变“1”后,将主动保存当时PC值到仓库,并将相应中止服务程序进口地址000BH/001BH赋值给PC,然后鄙人一条指令开端履行中止服务;TF0/TF1标志位由硬件主动清“0”,以便进行下次中止请求。
5、IE0和IE1分别为外部中止0和外部中止1中止请求标志位。以外部中止0为例,当IT0为0即挑选电平触发方法时,每个机器周期的S5P2采样-INT0,若-INT0为低电平,则IE0置“ 1”,不然IE0清“0”;当IT0为1即挑选边缘触发方法时,当时一个机器周期采样到-INT0输入为高,而本机器周期采样到该引脚为低电平时,则置“1”IE0;IE0/IE1为1表明外部中止0/1正在向CPU请求中止。当CPU呼应中止,转向中止服务子程序(进口地址0003H/0013H)时,由硬件主动清“0”IE0/IE1。
6、TI和RI分别是串行口的发送中止和接纳中止的中止恳求标志。
(1)在串行口以方法0发送时,每逢发送完8位数据,由硬件置“1”TI;若以方法1、方法2或方法3发送时,在发送中止位的开端时置“1”TI。TI为1表明串行口发送器正在向CPU请求中止,而CPU呼应串口发送器中止恳求,转向履行中止服务程序时并不清“0”TI,TI有必要由用户的中止服务子程序清0(即中止服务子程序中有必要用CLR TI或ANL SCON,#0FDH等清“0”TI的指令)。
(2)若串行口接纳器答应接纳,并以方法0作业,每逢接纳到第8位数据时置“1”RI;若以方法1、2、3作业,且(SM2)=0时,每逢接纳器接纳到中止位的中心时置“1”RI,当串行口以方法2或方法3进行作业,且(SM2)=1时仅当接纳到的第9位数据RB8为1后,一起还要在接纳到中止位的中心方位“1”RI。RI为1表明串行口接纳器正在向CPU请求中止,而CPU呼应串口接纳器中止恳求,转向履行中止服务程序时并不清“0”RI,RI有必要由用户的中止服务子程序清0(即中止服务子程序中有必要用CLR RI或ANL SCON,#0FEH等清“0”RI的指令)。
(3)实际上串口发送器中止恳求和串口接纳器中止恳求对应着同一个中止服务程序进口地址0023H。在用户的串口中止服务子程序的开端应首要判别TI和RI标志以决议本次中止是由发送完毕引起仍是由接纳完结引起以便进一步转入相应的处理(也或许刚好便是发送完毕又是接纳完结)。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/258248.html