永发信息网

中断允许触发器是用来控制什么

答案:3  悬赏:70  手机版
解决时间 2021-12-19 02:23
  • 提问者网友:沉默菋噵
  • 2021-12-18 12:25
中断允许触发器是用来控制什么
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-12-18 14:02
如果只是查询中断标志位然后在主函数处理他就没什么用,如果要产生中断,在中断中执行函数就要允许开中断
全部回答
  • 1楼网友:青灯有味
  • 2021-12-18 17:07
单片机中断允许触发器
  • 2楼网友:鱼芗
  • 2021-12-18 15:35
中断源与中断请求   由图3.2可以看出,mcs-51系列单片机有5个中断源,它们是:外部中断into(p3.2) 、inti(p3.3);定时器肼数器t0、tl溢出中断;串行口的发送(txd)和接收(rxd)中断源(只占1个中断源)。外部中断的中断请求标志位和t0、tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器tcon中,而串行口对应的中断请求标志位锁存在串行口控制寄存器scon中。    1.定时器/计数器控制寄存器tcon    tcon为定时器/计数器控制寄存器,其字节映像地址为88h,可位寻址,它除了控制定时器/计数器t0、tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志。其格式如下: tfl trl tf0 tro iel itl ieo it0   tcon寄存器各位的含义如下:   it0:外部中断into的中断触发方式选择位。   当it0位清为0时,外部中断into为电平触发方式。在这种触发方式中,cpu在每一个机器周期的$5p2采样into(p3.2)引脚的输入电平,当采样到低电平时,置int0的中请求标志位为1,采样到高电平清ie0位为0。在采用电平触发方式时,外部中断源(输入到into,即p3.2引脚)上的必须保持低电平有效,直到该中断被cpu响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。为了保证cpu能正确采样电平状态,要求外部中断源into有效的低电平信号至少要维持一个机器周期以上。 当it0位置为1时,外部中[新in-t0为边沿触发方式。在这种触发方式中,cpu在每个机器周期的$5p2采样into(p3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到into为高电平,而接着的下一个周期采样到低电平,则置into的中断请求标志位ie0为1,即当ie0位为l时,表示外部中断into正在向cpu请求中断,直到该中断被cpu响应时,才由硬件自动将ie0位清为0。因为cpu在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证cpu检测到此信号由高到低的负跳变。   ie0:外部中断:int0的中断请求标志位。当ie0位为0时,表示外部中断源int0没有向cpu请求中断;当ie0位为l时,表示外部中断into正在向cpu请求中断,且当cpu响应该中断时由硬件自动对ie0进行清0。   1t1:外部中断into的中断触发方式选择位。功能与ito相同。   iel:外部中断into的中断请求标志位。功能与ie0相l司。   tr0:定时器/计数器t0的启动标志位。当tr0位为0时,不允许t0计数工作;当tro位为l时,允许t0定时或计数工作。   tf0:定时器/计数器t0的溢出中断请求标志位。在定时器/计数器t0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将tf0位置为1,通过tf0位向cpu申请中断,一直保持到cpu响应该中断后才由硬件自动将tf0位清为0。当tf0位为0时,表示t0未计数或计数未产生溢出。当t0工作在不允许中断时,tf0标志可供程序查询。   trl:定时器/计数器tl的启动标志位。功能与tr0相l司。   tfl:定时器/计数器tl的溢出中断请求标志位。功能与tf0相i司。 2.串行口控制寄存器sc,on ’scon为串口控制寄存器,其字节映像地址为98h,也可以进行位寻址。串口的接收和发送数据中断请求标志位(r1、ti)被锁存在串口控制寄存器scon中,其格式如下: sm0 sml sm2 ren tb8 rb8 ti ri   scon寄存器各位的含义如下:   r1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将rl位置为1。而rl位的清0必须由用户用指令来完成。   t1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将tl位置为l。而tl位的清0也必须由用户用指令来完成。   注意:在中断系统中,将串行口的接收中断rl和发送中断tl经逻辑或运算后作为内部的一个中断源。当cpu响应串口的中断请求时,cpu并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是ri还是tl产生的中断请求,从而执行相应的中断服务程序。   scon其他位的功能和作用与串行通信有关,将在第6章中介绍。   在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向cpu发出中断请求,如果清。就撤销中断请求。 3.2.2中断允许控制   在计算机中断系统中有两种不同类型的中断:一类为非屏蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,cpu就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许cpu去响应。允许cpu响应某一个中断请求称为中断开放(或中断允许),不允许cpu响应某一个中断请求称为中断屏蔽(或中断禁止)。   mcs一51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,cpu对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器ie来实现的。ie的字节映像地址为0a8h,既可以按字节寻址,也可以按位寻址。当单片机复位时,ie被清为0。   通过对ie的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对ea位的清o来屏蔽所有的中断源。ie的格式如下. ea ---- ----- es et1 ex1 eto ex0   ie寄存器各位的含义为:   ea:总中断允许控制位。当ea位为0时,屏蔽所有的中断;当ea位为l时,开放所有的中断。   es:串口中断允许控制位。当es位为0时,屏蔽串口中断;当es位为l且ea位也为1时,开放串口中断。   etl:定时器/计数器tl的中断允许控制位。当etl位为0时,屏蔽tl的溢出中断;当etl位为l且ea位也为1时,开放tl的溢出中断。   exl:int1的中断允许控制位。当exl位为0时,屏蔽intl;当exl位为l且ea位也为1时,开放丽。   et0:定时器/计数器t0的中断允许控制位。功能与etl相同。   ex0:int0的中断允许控制位。功能与exl相同。比如要开放intl和tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8ch。只要将这个结果送人ie中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对ie按字节操作,也可以按位操作。                  按字节操作形式    按位操作形式                              setb exl                   mov ie,#8ch     setb etl                              setb ea   思考题3.1:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢? 3.2.3中断优先权管理   在中断系统中,要使某一个中断被优先响应的话,就要依靠中断优先权控制。mcs-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套。为了实现对中断优先权的管理,在mcs一51内部提供了一个中断优先级寄存器ip,其字节地址为088h,既可以按字节形式访问,又可以按位的形式访问。其格式如下: — ------- -------- ps ptl pxl pt0 pxo   ip寄存器各位的含义如下:   px0、pt0、pxl、ptl和ps分别为into、to、int1、tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级。   比如要将t0定义为高优先级,使cpu优先响应其中断,其他中断均定义为低优先级,对应的优先级控制字为o00000108,即02h。只要将这个控制字送人ip中,cpu就优先响应to产生的溢出中断,并将其他中断按低优先级中断处理。具体操作形式如下:       按字节操作形式  按位操作形式        mov ip,#02h    setb pt0   在同一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也确定了一个自然优先级,其从高到低的优先级排列如下:                   into—to—int1—tl--串口(ri、ti)  按中断优先权设置后,响应中断的基本原则是:   .若多个中断请求同时有效,cpu优先响应优先权最高的中断请求。   .同级的中断或更低级的中断不能中断cpu正在响应的中断过程。   .低优先权的中断响应过程可以被高优先权的中断请求所中断,cpu会暂时中止当前低优先权的中断过程,而优先响应高优先权中断。等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套。为了实现上述功能和基本原则,在mcs.51系列单片机中断系统的内部设置了两个不可寻址的优先级触发器,一个是指出cpu是否正在响应高优先权中断的高优先级触发器,另一个是指出cpu是否正在响应低优先权中断的低优先级触发器。当高优先级触发器状态为l时,屏蔽所有的中断请求;当低优先级触发器状态为1时,屏蔽所有同级的中断请求而允许高优先权中断的中断请求。   mcs一51系列单片机复位后,特殊功能寄存器ie、ip的内容均为0,由用户的初始化程序对ie、ip进行初始化,开放或屏蔽某些中断并设置它们的优先权。 3.2.4中断响应   单片机一旦工作,并由用户对各中断源进行使能和优先权初始化编程后,mcs-51系列单片机的cpu在每个机器周期顺序检查每一个中断源。那么,在什么情况下cpu可以及时响应某一个中断请求呢?若cpu响应某一个中断请求,它又是如何工作的呢?   1.中断响应条件    单片机的cpu在每个机器周期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求。一个中断源的请求要得到响应,必须满足一定的条件。    (1)cpu正在处理相同的或更高优先权的中断请求。这种情况下只有当前中断响应结 束后才可能响应另一个中断请求。    (2)现行的机器周期不是当前所执行指令的最后一个机器周期。此时只有在当前指令执行结束周期的下一个机器周期才可能响应中断请求。    (3)正在执行的指令是中断返回指令(reti)或者是对ie、ip的写操作指令。在这种情况下,只有在这些指令执行结束并至少再执行一条其他指令后才可能响应中断请求。如果上述条件中有一个存在,cpu将自动丢弃对中断查询的结果;若一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。   2.中断响应过程   如果某一个中断被开放,且中断请求符合响应条件,cpu会及时响应该中断请求,并按下列过程进行处理:   (1)置相应的优先级触发器状态为1,指明了cpu正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。   (2)执行一条硬件子程序调用,清相应的中断请求标志位为0(r1、tl和电平触发的外部中断除外)。   (3)保护断点。即将被中断程序的断点位置(pc的值)压人堆栈保存起来。   (4)将被响应的中断源的中断服务程序入口地址送程序计数器pc。各中断源的中断服务程序入口地址的分配情况如表l.4所示。   (5)执行相应的中断服务程序。当cpu执行完中断服务程序中的中断返回指令后,清相应的优先级触发器为0,然后恢复断点,即将保存在堆栈中的程序计数器pc的值再弹给pc,使cpu再继续执行原来被中断的程序。   3.中断响应的时间    在mcs.51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脉冲被采样并锁存到相应的中断请求标志中,这个状态等到下一个机器周期才被查询。如果中断被开放,并符合响应条件,cpu接着执行一个硬件子程序调用指令以转到相应的中断服务程序入口,该调用指令需要2个机器周期,所以从外部产生中断请求到cpu开始执行中断服务程序的第l条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时间。如果已经在处理同级或更高级中断,额外的等待取决于中断服务程序的处理过程。如果正处理的指令没有执行到最后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期;如果是cpu正在执行中断返回指令retl或对ie、ip的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机器周期。所以在单一中断系统中,外部中断响应时间总是在3~8个机器周期。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯