中断push什么意思

push什么意思  时间:2021-02-01  阅读:()

*第4章AT89S52单片机的中断系统**第4章AT89S52单片机的中断系统4.
1单片机中断技术概述4.
2AT89S52的中断系统结构4.
2.
1中断请求源4.
2.
2中断请求标志寄存器4.
3中断允许与中断优先级的控制4.
3.
1中断允许寄存器IE4.
3.
2中断优先级寄存器IP4.
4响应中断请求的条件4.
5外部中断的响应时间*4.
6外部中断的触发方式选择4.
6.
1电平触发方式4.
6.
2跳沿触发方式4.
7中断请求的撤销4.
8中断服务子程序的应用设计4.
9多外部中断源系统设计4.
9.
1定时器/计数器作为外部中断源的使用方法4.
9.
2中断和查询结合的方法4.
9.
3用优先权编码器扩展外部中断源*内容概要本章介绍AT89S52单片机片内功能部件中断系统的硬件结构和工作原理.
AT89S52的中断系统能够实时地响应片内功能部件和外围设备发出的中断请求并进入中断服务子程序进行处理.
通过本章学习,读者应重点掌握与中断系统有关的特殊功能寄存器及中断系统的应用特性,应能熟练地进行中断系统的初始化编程以及中断服务子程序的设计.

*4.
1中断技术概述中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理.
这是由片内的中断系统来实现的.

当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求.

中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序.

图4-1为整个中断响应和处理过程.
***图4-1中断响应和处理过程*如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上.

采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性.
4.
2AT89S51中断系统结构中断系统结构图如图4-2所示.
中断系统有6个中断请求源(简称中断源),两个中断优先级,可实现两级中断服务程序嵌套.

每一中断源可用软件独立控制为允许中断或关中断状态,中断优先级均可用软件来设置.

**图4-2AT89S52的中断系统结构*4.
2.
1中断请求源由图4-2可见,AT89S52中断系统共有6个中断请求源:(1)INT0*—外部中断请求0,中断请求信号由INT0*脚输入,中断请求标志为IE0.
(2)INT1*—外部中断请求1,中断请求信号由INT1*脚输入,中断请求标志为IE1.
(3)定时器/计数器T0计数溢出发出的中断请求,中断请求标志为TF0.
(4)定时器/计数器T1计数溢出发出的中断请求,中断请求标志为TF1.
(5)串行口中断请求,中断请求标志为发送中断TI或接收中断RI.

**(6)T2的中断请求源,含有计数溢出(TF2)和"捕捉"(EXF2)两种中断请求标志,经或门共用一个中断矢量.
两种中断触发是由T2的两种不同工作方式决定的.
4.
2.
2中断请求标志寄存器6个中断请求源的中断请求标志分别由TCON、SCON和T2CON的相应位锁存(见图4-2).
1.
TCON寄存器为定时器/计数器的控制寄存器,字节地址为88H,可位寻址.
特殊功能寄存器TCON的格式如图4-3所示.

*图4-3特殊功能寄存器TCON的格式*TCON各标志位功能如下:(1)TF1—定时器/计数器T1的溢出中断请求标志位.
当T1计数产生溢出时,由硬件使TF1置"1",向CPU申请中断.
CPU响应TF1中断时,TF1标志由硬件自动清"0",TF1也可由软件清"0".

(2)TF0—定时器/计数器T0的溢出中断请求标志位,功能与TF1类似.
(3)IE1—外部中断请求1的中断请求标志位.
(4)IE0—外部中断请求0中断请求标志位,功能与IE1类似.
(5)IT1—选择外部中断请求1为跳沿触发还是电平触发.
**IT1=0,电平触发方式,引脚上低电平有效,并把IE1置"1".
转向中断服务程序时,由硬件自动把IE1清"0".

IT1=1,跳沿触发方式,加到引脚上的外部中断请求输入信号电平从高到低的负跳变有效,并把IE1置"1".
转向中断服务程序时,由硬件自动把IE1清"0".
(6)IT0—选择外部中断请求0为跳沿触发方式还是电平触发方式,其意义与IT1类似.

AT89S52复位后,TCON被清"0",6个中断源的中断请求标志均为0.
TR1(D6位)、TR0(D4位)这2位与中断系统无关,将在第5章定时器/计数器中介绍.

**2.
SCON寄存器串行口控制寄存器,字节地址为98H,可位寻址.
低二位锁存串行口的发送中断和接收中断的中断请求标志TI和RI,格式如图4-4所示.
各标志位的功能:(1)TI—串行口的发送中断请求标志位.
每发送完一帧串行数据后,TI自动置"1".
TI标志必须由软件清"0".

图4-4SCON中的中断请求标志位**(2)RI—串行口接收中断请求标志位.
串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置"1".
必须在中断服务程序中用指令对RI清"0".

3.
定时器2的控制寄存器T2CON特殊功能寄存器T2CON的字节地址为C8H,可位寻址,位地址为C8H~CFH.
格式见图4-5.

T2CON中的最高两位为定时器/计数器T2的中断请求标志位TF2和EXF2.
(1)TF2(D7):当T2的计数器(TL2、TH2)计数计满溢出回0时,由内部硬件置位TF2(寄存器T2CON.
7),向CPU发出中断请求.
但是当RCLK位或TCLK位为1时将不予置位.
本标志位必须由软件清0.

**(2)EXF2(D6):当由引脚T2EX(P1.
1脚)上的负跳变引起"捕捉"或"重新装载"且EXEN2位为1,则置位EXF2标志位(寄存器T2CON.
6),向CPU发出中断请求.

上述两种中断请求,在满足中断响应条件时,CPU都将响应其中断请求,转向同一个中断矢量地址进行中断处理.
因此,必须在T2的中断服务程序中对TF2和EXF2两个中断请求标志位进行查询,然后正确转入对应的中断处理程序.
中断结束后,中断请求标志位TF2或EXF2必须由软件清0.

图4-5T2CON格式*4.
3中断允许与中断优先级的控制中断允许控制由中断允许寄存器IE控制.
中断优先级控制由中断优先级寄存器IP控制.
4.
3.
1中断允许寄存器IEAT89S52的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的.
IE字节地址为A8H,可位寻址,格式如图4-6所示.
图4-6中断允许寄存器IE的格式*IE对中断的开放和关闭实现两级控制.
有一个总的开关中断控制位EA(IE.
7位),EA=0时,所有的中断请求被屏蔽;EA=1时,开放中断,但6个中断源的中断请求是否允许,还要由IE中的低6位所对应的6个中断请求允许控制位的状态来决定(图4-6).
IE中各位功能如下:(1)EA—中断允许总开关控制位.
EA=0,所有的中断请求被屏蔽.
EA=1,所有的中断请求被开放.
(2)ES——串行口中断允许位.
ES=0,禁止串行口中断.

**ES=1,允许串行口中断.
(3)ET1——定时器/计数器T1的溢出中断允许位.
ET1=0,禁止T1溢出中断.
ET1=1,允许T1溢出中断.
(4)EX1——外部中断1中断允许位.
EX1=0,禁止外部中断1中断.
EX1=1,允许外部中断1中断.
(5)ET0——定时器/计数器T0的溢出中断允许位.
ET0=0,禁止T0溢出中断.
ET0=1,允许T0溢出中断.

**(6)EX0——外部中断0中断允许位.
EX0=0,禁止外部中断0中断.
EX0=1,允许外部中断0中断.
(7)EX0——外部中断0中断允许位.
EX0=0,禁止外部中断0中断.
EX0=1,允许外部中断0中断.

AT89S52复位以后,IE被清"0",所有的中断请求被禁止.
IE中与各个中断源相应的位可用指令置"1"或清"0",即可允许或禁止各中断源的中断申请.
若使某一个中断源被允许中*断,除了IE相应的位被置"1"外,还必须使EA位置"1",即EA位置"1"为中断请求的必要条件.

改变IE的内容,可由位操作指令来实现(即SETBbit;CLRbit),也可用字节操作指令实现.
AT89S51复位以后,IE被清"0",所有中断请求被禁止.
IE中与各个中断源相应的位可用指令置"1"或清"0".

**【例4-1】若允许片内2个定时器/计数器T1、T0中断,并禁止其他中断请求,请编写设置IE的相应程序段.
(1)用位操作指令CLRES;禁止串行口中断CLREX0;禁止外部中断0中断CLREX1;禁止外部中断1中断CLRET2;禁止定时器/计数器T2中断SETBET0;允许定时器/计数器T0中断SETBET1;允许定时器/计数器T1中断SETBEA;总中断开关位开放(2)用字节操作指令MOVIE,#8AH上述两段程序对IE的设置是相同的.
**4.
3.
2中断优先级寄存器IPAT89S52的中断请求源有两个中断优先级,由软件分别设置为高优先级中断或低优先级中断,可实现:两级中断嵌套AT89S52正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序.
两级中断嵌套的过程如图4-7所示.

***图4-7两级中断嵌套的过程*各中断源的中断优先级关系,可归纳为两条基本规则:(1)低优先级可被高优先级中断,高优先级不能低优先级中断.
如果某一中断源被设置为高优先级中断,则不能被任何其他的中断源的中断请求所中断.

(2)任何一种中断一旦得到响应,不会再被它的同级中断源所中断.
中断优先级寄存器IP,其字节地址为B8H,可位寻址.
只要用程序改变其内容,可进行各中断源中断优先级的设置,IP寄存器的格式如图4-8所示.

**中断优先级寄存器IP各位的含义如下:(1)PT2—定时器T2中断优先级控制位(2)PS—串行口中断优先级控制位(3)PT1—定时器T1中断优先级控制位(4)PX1—外部中断1中断优先级控制位(5)PT0—定时器T0中断优先级控制位(6)PX0—外部中断0中断优先级控制位*图4-8IP寄存器的格式*1:高优先级0:低优先级中断优先级控制寄存器IP用位操作指令或字节操作指令可更新IP的内容,以改变中断优先级.

AT89S52复位以后,IP的内容为0,各个中断源均为低优先级中断.
AT89S52的中断系统有两个不可寻址的"优先级激活触发器.
一个指示某高优先级的中断正在执行,所有后来的中断均被阻止;另一个触发器指示某低优先级的中断正在执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求.

**在同时收到几个同优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序.
这相当于在同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序见表4-1.

**由此可见,各中断源在相同优先级的条件下,外部中断0的中断优先权最高,T2溢出中断或EXF2中断的中断优先权最低.

**【例4-2】IP寄存器初始化,AT89S52的两个外中断请求为高优先级,其他中断请求为低优先级.
(1)用位操作指令SETBPX0;外中断0设置为高优先级SETBPX1;外中断1设置为高优先级CLRPS;串行口设置为低优先级CLRPT0;定时器/计数器T0为低优先级CLRPT1;定时器/计数器T1为低优先级CLRPT2;定时器/计数器T2为低优先级(2)用字节操作指令MOVIP,#05H上述的两段程序对IP的设置是相同的.
**4.
4响应中断请求的条件中断请求被响应,必须满足以下必要条件:(1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1.
(2)该中断源发出中断请求,即对应的中断请求标志为"1".
(3)该中断源的中断允许位EA=1,即该中断被允许.
(4)无同级或更高级中断正在被服务.
当CPU查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应.

**中断响应的过程:首先由硬件自动生成一条长调用指令"LCALLaddr16".
就是程序存储区中相应的中断入口地址.
例如,对于外部中断1的响应,硬件自动生成的长调用指令为LCALL0013H首先将程序计数器PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序转向响应中断请求的中断入口地址.

各中断源服务程序的入口地址(也称中断矢量)是固定的,如表4-2所示.
**两个中断入口间只相隔8字节,难以安放一个完整的中断服务程序.
因此,通常在中断入口地址处放置一条无条件转移指令,使程序执行转向中断服务程序入口.

**中断响应是有条件的,当遇到下列三种情况之一时,中断响应被封锁:(1)CPU正在处理同级或更高优先级的中断.
(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期.
只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的完整性.
(3)正在执行的指令是RETI或是访问IE或IP的指令.
因为按照AT89S52中断系统的规定,在执行完这些指令后,需要再执行完一条指令,才能响应新的中断请求.

如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应.

**4.
5外部中断的响应时间使用外部中断时,需考虑从外部中断请求到转向中断入口地址所需的时间.

外部中断的最短响应时间为3个机器周期.
其中中断请求标志位查询占1个机器周期,而这个机器周期恰好处于指令的最后一个机器周期.
在这个机器周期结束后,中断即被响应,CPU接着执行一条硬件子程序调用指令LCALL到相应中断服务程序入口,需要2个机器周期.

外部中断响应的最长时间为8个机器周期.
在CPU进行中断标志查询时,刚好才开始执行RETI或访问IE或IP的指令,需执行完指令再继续执行一条指令后,才响应中断.

**执行RETI或访问IE或IP的指令,最长需要2个机器周期.
接着再执行一条指令,最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期.
再加上硬件子程序调用指令LCALL的执行,需要2个机器周期,所以,外部中断响应的最长时间为8个机器周期.

如果已经在处理同级或更高级中断,外部中断请求的响应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算了.

这样,在一个单一中断的系统里,AT89S52单片机对外部中断请求的响应时间总是在3~8个机器周期之间.

**4.
6外部中断的触发方式选择两种触发方式:电平触发方式和跳沿触发方式.
4.
6.
1电平触发方式外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化.
在中断服务程序返回之前,外部中断请求输入必须无效(即外部中断请求输入已由低电平变为高电平),否则会再次响应中断.

所以本方式适合于外部中断以低电平输入且中断服务程序能清除外部中断请求源(即外中断输入电平又变为高电平)的情况.

**4.
6.
2跳沿触发方式外部中断申请触发器能锁存外部中断输入线上的负跳变.
即使不能响应,中断请求标志不丢失.

相继连续两次采样,一个机器周期为高,下一个机器周期采样为低,则中断申请触发器置1,直到CPU响应此中断时,才清0.

输入的负脉冲宽度至少保持12个时钟周期,才能被采样到.
适合于以负脉冲形式输入的外部中断请求.
4.
7中断请求的撤销某个中断请求被响应后,就存在着一个中断请求的撤销问题.
**1.
定时器/计数器T0、T1中断请求的撤销硬件会自动把中断请求标志位(TF0或TF1)清0,自动撤销.
2.
外部中断请求的撤销(1)跳沿方式外部中断请求的撤销包括两项:中断标志位清0和外中断信号的撤销.
中断标志位清0是在中断响应后由硬件自动完成的.
外中断请求信号的撤销,由于跳沿信号过后也就消失了,自动撤销.
**(2)电平方式外部中断请求的撤销电平方式外中断请求的撤销,其中中断请求标志自动撤销,但中断请求信号的低电平可能继续存在,为此,除了标志位清"0"之外,还需在中断响应后把中断请求信号输入引脚从低电平强制改变为高电平,如图4-9所示.

*图4-9电平方式的外部中断请求的撤销电路*由图4-9,用D触发器锁存外来的中断请求低电平,并通过D触发器的输出端Q接到INT0*(或INT1*).
所以,增加的D触发器不影响中断请求.
中断响应后,利用D触发器的SD端接AT89S51的P1.
0端.
因此,只要P1.
0端输出一个负脉冲就可以使D触发器置"1",撤销低电平的中断请求信号.

负脉冲可在中断服务程序中增加如下指令:ORLP1,#01H;P1.
0为"1"ANLP1,#0FEH;P1.
0为"0"ORLP1,#01H;P1.
0为"1"**3.
串行口中断请求的撤销响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位,以判定是接收操作还是发送操作,然后才清除.
所以串行口中断请求的撤销只能使用软件的方法,在中断服务程序中进行,即用如下指令在中断服务程序中对串行口中断标志位进行清除:CLRTI;清TI标志位CLRRI;清RI标志位4.
定时器/计数器T2中断请求的撤销定时器/计数器T2的中断请求包括两种:TF2和EXF2.
上述两种中断请求,在满足中断响应条件时,CPU都将响应其中断请求,转向同一个中断矢量地址.
因此,必须在T2的**中断服务程序中对TF2和EXF2两个中断请求标志位进行查询,然后正确转入对应的中断处理程序.

中断结束后,中断请求标志位TF2或EXF2必须由软件清0.
所以定时器/计数器T2中断请求的撤销只能使用软件的方法,在中断服务程序返回前完成.

4.
8中断服务子程序的设计中断系统的运行必须与中断服务子程序配合才能正确使用.
设计中断服务子程序需要首先明确以下几个问题.

*1.
中断服务子程序设计的任务任务有下列4条:(1)设置中断允许控制寄存器IE,允许相应的中断请求源中断.
(2)设置中断优先级寄存器IP,确定所使用的中断源的优先级.
(3)若是外部中断源,还要设置中断请求的触发方式决定采用电平触发方式还是跳沿触发方式.
(4)编写中断服务子程序,处理中断请求.

**前3条一般放在主程序的初始化程序段中.
【例5-3】假设允许外部中断0中断,设定为高级中断,采用跳沿触发方式,其他中断源为低级中断.
初始化程序如下:SETBEA;EA位置1,总中断开关位开放SETBEX0;EX0位置1,允许外部中断0产生中断SETBPX0;PX0位置1,外部中断0为高优先级中断SETBIT0;IT0位置1,外部中断0为跳沿触发方式**2.
采用中断时的主程序结构程序必须先从主程序起始地址0000H执行.
所以,在0000H起始地址的几个字节中,用无条件转移指令,跳向主程序.

另外,各中断入口地址之间依次相差8字节,中断服务子程序稍长就超过8字节,这样中断服务子程序就占用了其他的中断入口地址,影响其他中断源的中断处理.
为此,一般在进入中断后,用一条无条件转移指令,把中断服务子程序跳转到远离其他中断入口的入口地址处.

常用的主程序结构如下:**注意:如果有多个中断源,就有多个"ORGX1X2X3X4H"的入口地址,多个"中断入口地址"必须依次由小到大排列.
主程序MAIN的起始地址Y1Y2Y3Y4H,根据具体情况来安排.

***3.
中断服务子程序的流程中断服务子程序的基本流程如图4-10所示.
下面对有关中断服务子程序执行过程中的一些问题进行说明.

*图4-10中断子服务程序的基本流程*(1)现场保护和现场恢复现场是指单片机中某些寄存器和存储器单元中的数据或状态.
为使中断服务子程序的执行不破坏这些数据或状态,因此要送入堆栈保存起来,这就是现场保护.

现场保护一定要位于中断处理程序的前面.
中断处理结束后,在返回主程序前,则需要把保存的现场内容从堆栈中弹出恢复原有内容,这就是现场恢复.

现场恢复一定要位于中断处理的后面.
堆栈操作指令:"PUSHdirect"和"POPdirect",是供现场保护和现场恢复使用的.
要保护哪些内容,应根据具体情况来定.

**(2)关中断和开中断现场保护前和现场恢复前关中断,是为防止此时有高一级的中断进入,避免现场被破坏.

在现场保护和现场恢复之后的开中断是为下一次的中断做好准备,也为了允许有更高级的中断进入.
这样,中断处理可以被打断,但原来的现场保护和现场恢复不允许更改,除了现场保护和现场恢复的片刻外,仍然保持着中断嵌套的功能.

但有时候,一个重要的中断,必须执行完毕,不允许被其他的中断嵌套.
可在现场保护前先关闭总中断开关位,待中断处理完毕后再开总中断开关位.
这样,需把图4-10中的"中断处理"步骤前后的"开中断"和"关中断"去掉.
**(3)中断处理应用设计者根据任务的具体要求,来编写中断处理部分的程序.
(4)中断返回中断服务子程序最后一条指令必须是返回指令RETI.
CPU执行完这条指令后,把响应中断时所置1的不可寻址的优先级状态触发器清0,然后从堆栈中弹出栈顶上的两个字节的断点地址送到程序计数器PC,弹出的第一个字节送入PCH,弹出的第二个字节送入PCL,从断点处重新执行主程序.

**【例4-4】根据图4-10流程,编写中断服务程序.
设现场保护只将PSW寄存器和累加器A的内容压入堆栈中保护.
一个典型的中断服务子程序如下:**上述程序几点说明:(1)本例的现场保护假设仅仅涉及PSW和A的内容,如有其他需要保护的内容,只需在相应位置再加几条PUSH和POP指令即可.
注意,堆栈的操作是先进后出.
(2)"中断处理程序段",设计者应根据中断任务的具体要求,来编写中断处理程序.
(3)如果不允许被其他的中断所中断,可将"中断处理程序段"前后的"SETBEA"和"CLREA"两条指令去掉.
(4)最后一条指令必须是返回指令RETI,不可缺少,CPU执行完这条指令后,返回断点处,重新执行被中断的主程序.

**4.
9多外部中断源系统设计实际的应用中,两个外部中断请求源往往不够用,需对外部中断源进行扩充,如图4-11所示.
系统有5个外部中断请求源IR0~IR4,高电平有效.

最高级的请求源IR0直接接到AT89S52的一个外部中断请求输入端INT0*,其余4个请求源IR1~IR4通过各自的OC门(集电极开路门)连到AT89S52的另一个外中断源输入端INT1*,同时还连到P1口的P1.
0~P1.
3脚,供AT89S52查询.
图4-11所示电路,除了IR0优先权级别最高外,其余4个外部中断源的中断优先权取决于查询顺序,中断优先权的高与低,取决于查询顺序.

***图4-11中断和查询相结合的多外部中断请求源系统*假设图4-11中的4个外设中有一个外设提出高电平有效的中断请求信号,则中断请求通过4个集电极开路OC门的输出公共点,即INT1*脚的电平就会变低.
究竟是哪个外设提出的请求,要通过程序查询P1.
0~P1.
3引脚上的逻辑电平来确定.

本例假设某一时刻只能有一个外设提出中断请求,并设IR1~IR4这4个中断请求源的高电平可由相应的中断服务子程序清"0",则中断服务子程序如下:****查询法扩展外部中断源比较简单,但是扩展的外部中断源个数较多时,查询时间稍长.

**4.
9.
3用优先权编码器扩展外部中断源当需要处理的外部中断源数目较多而又要求响应速度很快时,软件查询方法常常满足不了时间上的要求.
因为在外部中断源很多的情况下,响应优先级最高和响应优先级最低的中断所需的查询时间可能相差很大.
如果采用硬件对外部中断源进行优先级排队就可避免这个问题.
下面介绍采用优先权编码器扩展外部中断源的方法.
74LS148是一种优先权编码器,利用74LS148扩展AT89S52外部中断源的电路如图4-12所示,74LS148的真值表见表4-3.
74LS148具有8个输入端"0~7",用作8个外部中断请求IR0*~IR7*输入端,3个编码输出端A2~A0与单片机的P1.
3~P1.
1口线相连,*图4-12使用优先权编码器扩展8个外部中断源**编码器输出控制端与单片机的外中断请求输入INT1*脚相连.
在使能端为低电平的情况下,只要其8输入端中任一输入为低电平,就有一组相应的编码从A2~A0端输出,且同时编码器输出端输出低电平.
如果8中断源IR0*~IR7*中有多个中断请求时(低有效),其优先权最高的一组编码就出现在单片机的P1.
3~P1.
1口线上,此时CS*端为低电平,则AT89S52的INT1*端就为低电平,若INT1*中断被允许,就可以响应外部中断源所提出的中断请求.

*例如,中断请求源IR1*与IR4*、IR6*同时发出中断请求的情况下,GS*端为低电平,向INT1*发出中断请求,同时A2~A0端仅输出中断优先级最高的编码"001",当单片机响应该中断请求信号后,进入INT1*中断服务子程序,然后读入从P1.
3~P1.
1输入的编码"001",从而去响应IR1*的中断请求.
为了使程序转向各中断源的中断服务子程序,必须在AT89S52的INT1*的中断服务程序中编写如下引导程序:**74LS148的输入端"7"(即IR0*端)具有最高优先权,输入端"0"(IR7*即端)优先权最低,这相当于给图中的8个外部中断请求源安排了一个中断优先级顺序.
因此,当同时有多个中断源提出中断申请时,AT89S52只响应优先权最高的那个中断源的中断申请.
上述电路结构简单,价格低廉,但该电路无法实现中断嵌套.
即当一个中断申请正在被执行时,单片机不能响应别的中断源的中断申请(仅指IR0*~IR7*).
由于所扩展的外中断源都是向AT89S52提出中断申请,因此,这些外中断源在使用时应注意以下三个问题.

*(1)中断响应时间AT89S52的外中断响应时间在3~8个机器周期内,由于AT89S52在真正为所扩展的外中断源(IR0*~IR7*)服务之前需执行一段引导程序,因此对所扩展的外中断源而言,中断响应时间还要把执行引导程序所需的时间算在内.
(2)中断申请信号低电平的宽度扩展的外部中断源,中断请求信号的低电平要有足够宽度,应一直保持到AT89S52将74LS148提供的编码取走为止,否则会出现错误.
AT89S52读取这个编码要执行4条指令,需7个机器周期,若系统时钟频率为12MHz,则外中断请求信号低电平的宽度至少要大于15s.

*(3)堆栈深度的问题由于AT89S52的堆栈只能设在片内RAM,字节有限,每次响应中断时都要把断点、现场的内容压入堆栈内,如果发生中断服务子程序中又调用子程序,则极容易发生堆栈溢出或侵占其它片内RAM内容,从而造成程序混乱,在使用中要特别注意.

除上述3种方法外,还可采用可编程中断控制器接口芯片8259A来进行外部中断源的扩展,限于篇幅,不作介绍,读者可查阅相关资料.

raksmart:全新cloud云服务器系列测评,告诉你raksmart新产品效果好不好

2021年6月底,raksmart开发出来的新产品“cloud-云服务器”正式上线对外售卖,当前只有美国硅谷机房(或许以后会有其他数据中心加入)可供选择。或许你会问raksmart云服务器怎么样啊、raksm云服务器好不好、网络速度快不好之类的废话(不实测的话),本着主机测评趟雷、大家受益的原则,先开一个给大家测评一下!官方网站:https://www.raksmart.com云服务器的说明:底层...

DogYun27.5元/月香港/韩国/日本/美国云服务器,弹性云主机

DogYun怎么样?DogYun是一家2019年成立的国人主机商,称为狗云,提供VPS及独立服务器租用,其中VPS分为经典云和动态云(支持小时计费及随时可删除),DogYun云服务器基于Kernel-based Virtual Machine(Kvm)硬件的完全虚拟化架构,您可以在弹性云中,随时调整CPU,内存,硬盘,网络,IPv4路线(如果该数据中心接入了多条路线)等。DogYun弹性云服务器优...

易探云:香港CN2云服务器低至18元/月起,183.60元/年

易探云怎么样?易探云最早是主攻香港云服务器的品牌商家,由于之前香港云服务器性价比高、稳定性不错获得了不少用户的支持。易探云推出大量香港云服务器,采用BGP、CN2线路,机房有香港九龙、香港新界、香港沙田、香港葵湾等,香港1核1G低至18元/月,183.60元/年,老站长建站推荐香港2核4G5M+10G数据盘仅799元/年,性价比超强,关键是延迟全球为50ms左右,适合国内境外外贸行业网站等,如果需...

push什么意思为你推荐
机械表和石英表哪个好自动石英表与全自动机械表哪个好宝来和朗逸哪个好大众朗逸和宝来,哪个好点?手机杀毒软件哪个好什么手机杀毒软件最好用?英语词典哪个好英语词典哪种更好啊?网页传奇哪个好玩网页传奇哪个好玩 现在的传奇跟以前玩的都不一样了 总感觉没以前的有激情了无纺布和熔喷布口罩哪个好无纺布除了做尿布湿口罩这些,还有其他什么用处吗?杰士邦和杜蕾斯哪个好安全套杜蕾丝好还是杰士邦好?游戏盒子哪个好游戏盒子哪个好?尼康和佳能单反哪个好佳能和尼康哪个好看书软件哪个好推荐几个好用的手机看书软件
tk域名注册 唯品秀 主机 国外idc 紫田 国外空间服务商 外国域名 qingyun 双线机房 web服务器是什么 稳定空间 带宽测试 wordpress空间 免费赚q币 privatetracker 空间排行榜 远程登录 wordpress安装 主机箱 电脑主机配置 更多