收藏 分享(赏)

第5章.中断系统(更新).ppt

上传人:gnk289057 文档编号:9992612 上传时间:2019-09-25 格式:PPT 页数:110 大小:2.22MB
下载 相关 举报
第5章.中断系统(更新).ppt_第1页
第1页 / 共110页
第5章.中断系统(更新).ppt_第2页
第2页 / 共110页
第5章.中断系统(更新).ppt_第3页
第3页 / 共110页
第5章.中断系统(更新).ppt_第4页
第4页 / 共110页
第5章.中断系统(更新).ppt_第5页
第5页 / 共110页
点击查看更多>>
资源描述

1、第五章 中断系统,内容:,5.1 微机的输入/输出方式 5.2 中断的概念 5.3 89C51中断系统结构及中断控制 5.4 中断响应及处理过程 5.5 中断程序举例,5.1 微机的输入/输出方式,5.1.1 无条件传送方式5.1.2 查询传送方式5.1.3 直接存储器存取(DMA)方式,5.1.1 无条件传送方式,CPU总是认为外设在任何时刻都处于“准备好”的状态。 这种传送方式不需要交换状态信息,只需在程序中加入访问外设的指令,数据传送便可以实现。 此种方法很少使用。,5.1.2 查询传送方式(条件传送),一、什么是查询传送方式 二、查询方式流程图 三、查询方式的过程 四、查询方式的特点,

2、一、什么是查询传送方式,在输入时,需要查询外设的输入数据是否准备好; 在输出时,需要查询外设是否把上一次CPU输出的数据处理完毕。 查询传送方式:通过查询外设的状态信息,确信外设已处于“准备好”,计算机才发出访问外设的指令,实现数据的传送。 状态信息:一般为1位二进制码。,二、查询方式程序流程图,输入状态信息,准备好?,传送数据,Y,N,三、查询方式的过程,查询方式的过程: 查询等待数据传送,待到下 一次数据传送时则重复上述过程。,启动外设设备,延迟,传送数据,等待也可以不采用循环,而用软件延时的方法来完成,四、查询方式的特点,优点:通用性好,可以用于各类外设和CPU间的数据传送。缺点:CPU

3、在完成一次数据传送后要等待很长时间才能进行下一次的传送。在等待过程中,CPU不能进行其他操作,所以效率比较低。,5.1.3 直接存储器存取(DMA)方式,DMA:Direct Memory Access DMA方式就是CPU让出数据总线(悬浮状态) ,使外设和存储器之间直接传送(不通过CPU)数据的方式。 适用于外设和存储器之间有大量的数据需要传送及外设工作速度很快的情况。,5.2 中断的概念,一、中断 二、中断系统 三、中断源 四、中断请求 五、中断响应过程 六、中断服务 七、中断返回 八、中断方式的特点,一、中断,当CPU正在处理某事件的时候,外部发生的某一事件请求CPU迅速去处理,于是C

4、PU暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件后,再返回到原来被中止的地方继续原来的工作,这样的过程称为中断。 中断流程如图5-2所示,中断流程如图5-2所示,主程序,断点,继续执行主程序,中断响应,中断返回,中断请求,执行中断处理程序,RETI,89C51中断源(P.26),单片机的中断为固定入口式中断,即一响应中断就转入固定 入口地址执行中断服务程序。具体入口如下:在这些单元中往往是一些跳转指令,跳到真正的中断服务程 序,这是因为给每个中断源安排的空间只有8个单元。,二、中断系统,实现中断功能的部件称为中断系统,又称中断机构。,三、中断源,产生中断的请求源称为中断源。

5、(例如:电话机的振铃),中断源向CPU提出的处理请求,称为中断请求或中断申请。(例如:电话机的铃声),四、中断请求,当89C51的中断源为有效电平时,其相应的中断标志位 (在特殊功能寄存器TCON和SCON中)会由硬件自动置“1”,表示向CPU提出中断申请。若中断源为无效电平时,则其相应的中断标志位为“0”,表示没有中断申请。,铃声响表示“1”, 没有铃声表示“0”,比如说,铃声响了,比如说,铃声没响,五、中断响应过程,CPU暂时中止自身的事物,转去处理事件的过程,称为CPU的中断响应过程,六、中断服务,对事件的整个处理过程,称为中断服务(或中断处理)。,七、中断返回,中断处理完毕,在返回到原

6、来被中止的地方,称为中断返回,八、中断方式的特点,1、中断方式消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。2、将从现场采集的数据通过中断方式及时传送给CPU,经过处理后可立即作出反应,实现现场控制。采用查询方式很难做到及时采集,实时控制。,5.3 89C51中断系统结构及中断控制,5.3 89C51中断系统结构 5.3.1 89C51中断源 5.3.2 中断控制,5.3 89C51中断系统结构(P.114),一、中断系统的结构二、中断技术实现的功能,一、中断系统结构,P3.4、P3.5外部脉冲输入,二、中断技术实现的功能(P.114),1、分时操作 2、实时处理 3、故障处

7、理,1、分时操作,计算机的中断系统可以使CPU与外设同时工作。CPU在启动外设后,便继续执行主程序;而外设被启动后,开始进行准备工作。当外设准备就绪时,就向CPU发出中断请求,CPU响应该中断请求并为其服务完毕后,返回原来的断点处继续运行主程序。外设在得到服务后,也继续进行自己的工作。因此,CPU可以使多个外设同时工作,并分时为各外设提供服务,从而提高了CPU的利用率和输入和输出的速度。,2、实时处理,当计算机用于实时控制时,请求CPU提供服务时随机发生的。有了中断系统,CPU就可以立即响应并加以处理。,3、故障处理,计算机在运行时往往会出现一些故障,如断电、存储器奇偶校验出错、运算溢出等。

8、有了中断系统,当出现上述情况时,CPU可及时转去执行故障处理程序,自行处理故障而不必停机。,5.3.1 89C51中断源(P.115),一、89C51中断系统的五个中断源 二、通常情况的中断源,一、89C51中断系统的五个中断源(P.115),1、INT0外部中断0请求,低电平有效。通过P3.2引脚输入。即当P3.2引脚为低电平时,其中断标志位IE0为“1”,向CPU提出中断申请(有中断请求)。 2、INT1外部中断1请求,低电平有效。通过P3.3引脚输入。即当P3.3引脚为低电平时,其中断标志位IE1为“1”,向CPU提出中断请求。,一、89C51中断系统的五个中断源(P.115),3、T0

9、定时器/计数器0溢出中断请求。即当TO的定时时间或计数值到了(溢出),其相应标志位TF0由硬件自动置“1”,表示向CPU发出中断请求。 4、T1定时器/计数器1溢出中断请求。即当T1的定时时间或计数值到了(溢出),其相应标志位TF1由硬件自动置“1”,表示向CPU发出中断请求。,5、TX/RX串行口中断请求。当串行口完成一帧数据的发送或接收时,便请求中断。(其相应标志位在SCON中),二、通常情况的中断源,1、I/O外设 2、硬件故障(例如:电源断电) 3、实时时钟 4、为调试程序而设定的中断源,5.3.2 中断控制(P.116),一、中断请求标志 二、中断允许控制 三、中断优先级控制,一、中

10、断请求标志(P.117),1、定时器控制寄存器TCON中的中断标志位 2、串行口控制寄存器SCON中的中断标志位,与中断控制有关的控制寄存器有四个: TCON-定时控制寄存器(用六位); IE-中断允许控制寄存器;(其中的位状态设置是控制CPU是否响应中断请求) IP-中断优先级控制寄存器; SCON-及串行口控制寄存器(用二位)。,1、TCON中的中断标志位,TCON为定时器/计数器T0和T1的控制器,同时也锁存T0和T1的溢出中断标志及外部中断0和1的中断标志等。与中断有关的位如图5-4所示。各控制位的含义。,图5-4 TCON中的中断标志位,中断请求标志:1:有中断请求; 0:无中断请求

11、。 CPU响应中断后,该中断标志自动清零。当有中断时,其相应的位被硬件自动置“1”。,触发方式选择位: (由指令设置),1:为边沿触发中断请求; 0:为电平触发中断请求。,1定时控制寄存器TCON,1定时控制寄存器TCON,各控制位的含义: 1、TF1:定时器/计数器T1溢出中断请求标志位。当启动T1计数后,T1从初值开始加1计数,计数器最高位产生溢出时,由硬件使TF1置“1”,并向CPU发出中断请求。当CPU响应中断时,硬件将自动对TF1清“0”。 2、TF0:定时器/计数器T0溢出中断请求标志位。含义与TF1类同。,88H,如果有中断请求,但CPU没有响应 该中断,其相应的中断标志仍然为“

12、1”!,1定时控制寄存器TCON,各控制位的含义: 3、IE1:外部中断1的中断请求标志。 INT1(P3.3)。当检测到外部中断引脚1(P3.3)上存在有效的中断请求信号时(什么是有效的中断请求信号?要看IT1的状态),由硬件使IE1置“1”。当CPU响应中断请求时,由硬件使IE1清“0”。 4、IE0:外部中断0的中断请求标志。INT0(P3.2)。其含义与IE1类同。,88H,也就是说,IE1(或IE0)是否置”1”,由IT1(或IT0)的状态来决定.,如果有中断请求,但CPU没有响应 该中断,其相应的中断标志仍然为“1”!,1定时控制寄存器TCON,各控制位的含义: 5、IT1:外部中

13、断1的中断触发方式控制位。.IT1=0时,外部中断1程控为电平触发方式。(有些书上称为“低电平触发方式”)CPU在每一个机器周期S5P2期间采样外部中断请求引脚(P3.3)的输入电平。若外部中断1请求为低电平,则使IE1置“1”;若为高电平,则使IE1清“0”。,88H,触发方式选择,1:为边沿触发中断请求; 0:为电平触发中断请求。,1定时控制寄存器TCON,各控制位的含义: 5、IT1:外部中断1的中断触发方式控制位。.IT1=1时,外部中断1程控为边沿触发方式。 (有些书上称为“脉冲触发方式”)CPU在每一个机器周期S5P2期间采样外部中断请求引脚(P3.3)的输入电平。如果在相继的两个

14、机器周期采样过程中,一个机器周期采样到外部中断1请求引脚(P3.3)为高电平,接着的下一个机器周期采样到为低电平,则使IE1置“1”。直到CPU响应该中断时,才由硬件使IE1清“0”。,88H,触发方式选择,1:为边沿触发中断请求; 0:为电平触发中断请求。,1定时控制寄存器TCON,各控制位的含义: 6、IT0:外部中断0的中断触发方式控制位。其含义与IT1类同。,88H,2、串行口控制寄存器SCON中的中断标志位,SCON为串行口控制寄存器,其低2位锁存串行口的接收中断和发送中断标志RI和TI。,SCON (98H),99H 98H,其余各位的用法见P154.“串行口控制字”的设定。,SC

15、ON中控制位的含义,1、TI:串行口发送中断请求标志。CPU将一个数据写入发送缓冲器SBUF时,就启动发送。每发送完一帧串行数据后,硬件置位TI。但CPU响应中断时,并不清除TI,必须在中断服务程序中由软件对TI清0。2、RI:串行口接收中断请求标志。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。同样,CPU响应中断时不会清除RI,必须在中断服务程序中由软件对RI清0。,99H 98H,SCON (98H),串行中断请求标志 1:有中断请求; 0:无中断请求。 TI,RI标志必须软件清零,二、中断允许控制,1、中断允许控制寄存器IE 各位的含义:,P118.例题5-1,假设允许片内定时

16、器/计数器中断,禁止其他中断。试设 置IE的相应值。,解:(IE)=1001 1010B=8AH (a)用字节操作指令 MOV IE,#8AH ;或 MOV 0A8H,#8AH (b)用位操作指令 SETB ET0 ;定时器/计数器0允许中断 SETB ET1 ;定时器/计数器1允许中断 SETB EA ;CPU开中断,P120.例题5-2,设98C51的片外中断为高优先级中断,片内中断为低优先级。试根 据假设条件设置IP的相应值。,解:(IP)=00000101B=05H (a)用字节操作指令 MOV IP,#05H ;或 MOV 0B8H,#05H (b)用位操作指令 SETB PX0 ;

17、外部中断0为高优先级 SETB PX1 ;外部中断1为高优先级 CLR PS ;串口中断为低优先级 CLR PT0 ;T0中断为低优先级 CLR PT1 ;T1中断为低优先级,三、中断优先级控制(P.119),1、89C51的中断优先级 2、中断优先级寄存器IP 3、中断优先级排列顺序 4、中断优先级控制实现的功能,1、89C51的中断优先级,89C51有两个中断优先级。每个中断请求源均可编程为高优先级中断或低优先级中断。中断系统中有两个不可寻址的“优先级生效”触发器,分别指出CPU正在执行的高、低优先级的中断服务程序。当其为“1”时则分别屏蔽所有的中断请求。另外,片内还有一个中断优先级寄存器

18、IP。,2、中断优先级寄存器IP,各位的含义:,3、中断优先级排列顺序,当同时接收到几个同一优先级的中断请求时,响应哪一个中断源则取决于内部硬件查询顺序。 其优先级顺序排列如 图5-8所示。,4、中断优先级控制实现的功能,(1)按内部查询顺序排队 (2)实现中断嵌套,(1)按内部查询顺序排队当数个中断源同时向CPU发出中断请求时, CPU根据设计者事先确定的中断源顺序号的次序, 一次响应其中断请求。,(2)实现中断嵌套,当CPU正在处理一个中断请求时,又出现了另一个优先级比它高的中断请求,这时,CPU就暂时中止执行对原来优先级较低的中断源的服务程序,保护当前断点,转去响应优先级更高的中断请求,

19、并为它服务。待服务结束,再继续执行原来较低级的中断服务程序。该过程称为中断嵌套。该中断系统称为多级中断系统。 二级中断嵌套的中断过程如 图5-9 所示。,图5-9 二级中断嵌套,CPU在执行主程序,低级中 断请求,响应低级中断请求,CPU执行低级 中断服务程序,高级中 断请求,响应高级中断请求,CPU执行高级 中断服务程序,返回低级中断程序,返回主程序,例题5-2,设89C51的片外中断为高优先级,片内中断为低优先级。 设置IP相应值。,解:(IP)=00000101B=05H (a)用字节操作指令MOV IP,#05H ;或 MOV 0B8H,#05H (b)用为操作指令SETB PX0SE

20、TB PX1CLR PSCLR PT0CLR PT1,P129.题2 试编写一段对中断系统初始化的程序,使之允许INT0、 INT1、T0和串行口中断,且使T0中断为高优先级中断。,解:MOV IE,#97H ;CPU开放中断,允许源中断MOV IP,#02H ;T0为高优先级中断,5.4 中断响应及处理过程(P.121),5.4.1 中断处理过程的三个阶段 5.4.2 中断响应 5.4.3 中断处理 5.4.4 中断返回,5.4.1 中断处理过程的三个阶段,中断处理过程可分为: 中断响应; 中断处理; 中断返回。 中断处理的大致流程如 图 5-10所示。,图5-10 中断处理的大致流程,保护

21、现场,为外设服务,恢复现场,主程序,第K条指令,第K+1条指令,返回,中 断 处 理,RETI,断点,5.4.2 中断响应(P.121),一、中断响应条件 二、中断响应操作过程 三、中断响应时间,一、中断响应条件,CPU响应中断的条件有: 有中断源发出中断请求。 中断总允许位EA=1,即CPU开放中断。 申请中断的中断源的中断允许位为1,即中断没有被屏蔽。 无同级或更高级中断正在被服务。 当前的指令周期已经结束。 若现行指令为RETI或是访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完。,二、中断响应操作过程,1、中断响应操作过程 2、各中断源及其对应的矢量地址,1、中断响应操作过程

22、, 把当前PC值压入堆栈,保护断点。 将相应的中断服务程序的入口地址送入PC。 对有些中断源,CPU会自动清除中断标志。 执行中断服务程序。 执行到返回指令RETI,中断服务程序结束,将堆栈内容弹出到PC,返回到原来断点继续执行。,三、中断响应时间,CPU不是在任何情况下都对中断请求予以响应,而不同的情况下对中断响应的时间是不同的。对于顺利的中断响应,其最短的响应时间为3个机器周期。对于受阻的中断响应,则响应时间会更长一些。若中断系统只有一个中断源,则响应时间为38个机器周期之间。,5.4.3 中断处理(P.123),一、什么是中断处理 二、中断处理包括的内容 三、编写中断服务程序时的注意问题

23、,一、什么是中断处理,CPU响应中断后即转入中断服务程序的入口,执行中断服务程序。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务。,二、中断处理包括的内容,不同的中断源服务的内容及要求各不相同,其处理过程也就有所区别。一般情况,中断处理包括两部分内容: 1、保护现场:如在中断服务程序中要用到PSW、工作寄存器和SFR等寄存器时,则在进入中断服务之前应将它们的内容保护起来,在中断结束、执行RETI指令前应恢复现场。 2、为中断源服务:针对中断源的具体要求进行相应的处理。,三、编写中断服务程序时的注意问题,在中断矢量地址单元处放一条无条件转移指令,使中断服务程序可灵活

24、地安排在64KB ROM的任何空间。 在中断服务程序中,应注意用软件保护现场,以免中断返回后丢失原来寄存器、累加器中的信息。 若要在执行当前中断程序时禁止更高优先级中断,可以先用软件关闭CPU中断或禁止某中断源中断,在中断返回前再开放中断。,5.4.4 中断返回(P.124),在中断服务程序中,最后一条指令必须为中断返回指令RETI。 CPU执行该指令时,一方面清除中断响应时所置位的“优先级生效”触发器,另一方面从当前栈顶弹出断点地址送入程序计数器PC,从而返回主程序。 注意在中断服务程序中,PUSH和POP指令必须成对使用,否则,不能正确返回断点。,5.5 外部中断扩展方法,89C51单片机

25、有两个外部中断请求输入端(INT0和INT1)。实际应用中,若外部中断源有两个以上,则需要扩展外部中断源。 5.5.1 利用定时器扩展外部中断源 5.5.2 中断加查询扩展外部中断源,5.5.1 利用定时器扩展外部中断源,89C51单片机有两个定时器,都具有两个内部中断标志和外部计数输入引脚。 当定时器设置为计数方式时,计数初值设置为满量程FFH。一旦外部信号从计数器引脚输入一个负跳变信号,计数器加1产生溢出中断,从而转去处理该外部中断源的请求。 将外部中断源信号接至T0或T1引脚;该定时器的溢出中断标志及中断服务程序作为扩充外部中断源的标志和中断服务程序。,5.5.2 中断加查询扩展外部中断

26、源,P128.例5-4 下几页将会讲解。,5.6 中断程序举例(P.125),5.6.1 主程序 5.6.2 中断服务程序 5.6.3 中断服务程序举例,5.6.1 主程序,1、主程序的起始地址 2、主程序的初始化内容,1、主程序的起始地址,MCS-51系列单片机复位后,(PC)=0000H 而0003H002BH分别为各中断源的入口地址。 编程时应在0000H处写一条无条件跳转指令,主程序是以跳转的目标地址作为起始地址开始编写,一般从0030H开始,如 图5-12所示。,图5-12 主程序地址,2、主程序的初始化内容,初始化:将用到的内部部件或扩展芯片进行初始工作状态设定。单片机复位后,特殊

27、功能寄存器IE、IP内容均为00H,所以应对IE、IP进行初始化编程,以开放中断,允许某些中断源中断和设置中断优先级等。,5.6.2 中断服务程序(P126),当CPU接收到中断请求信号并予以响应后,CPU把当前的PC内容压入堆栈进行保护,然后转入响应的中断服务程序入口处执行。 1、中断服务程序的起始地址 2、中断服务程序编制中的注意事项,1、中断服务程序的起始地址,中断系统对五个中断源分别规定了各自的入口地址,但这些入口地址相距很近(8个字节)。 如中断服务程序的指令代码少于8个字节,则可从规定的中断服务程序入口地址开始,直接编写中断服务程序; 如中断服务程序的指令代码大于8个字节,则应采用

28、与主程序相同的方法,在相应的入口处写一条跳转指令,并以跳转指令的目标地址作为中断服务程序的起始地址进行编程。,1、中断服务程序的起始地址(P126),以INT0为例,中断矢量地址为0003H,中断服务程序从0200H开始。如下图所示。,2、中断服务程序编制中的注意事项, 视需要确定是否保护现场。 及时清除那些不能被硬件自动清除的中断请求标志,以免产生错误的中断。 中断服务程序中的压栈与弹栈指令必须成对使用,以确保中断服务程序的正确返回。 主程序和中断服务程序之间的参数传递与主程序和子程序的参数传递方式相同。,P126 例5-3 外部中断实验,如 图5-14所示,将P1口的P1.4P1.7作为输

29、入位, P1.0P1.3作为输出位。要求利用89C51将开关所设的 数据读入单片机内,并依次通过P1.0P1.3输出,驱动 发光二极管,以检查P1.4P1.7输入的电平情况(若输 入为低电平则相应的LED亮)。现要求采用中断边沿触发方式,每中断一次,完成一 次读/写操作。,2个“与门”组成R-S触发器,当INT0引脚为有效电平时,其相应的中断标志位IE0由硬件自动置1,向CPU提出中断请示。若CPU开放了源允许和总允许,则CPU响应中断。,解题思路:,故,程序由主程序和中断服务程序组成。 主程序要做的事就是:初始化设置(开放中断)。 中断服务程序要做的事是:1、读取P1口的高4位电平状态(P1

30、口的高4位引脚是输入口线);2、将读取的数据由P1口的低4位输出,驱动相应的LED;3、中断返回。,解:如图所示,采用外部中断0,中断申请从INT0输入,并采用了去抖动电路(P230P232)。当P1.0P1.3的任何一位输出为0时,相应的发光二极管就会发光。当开关S闭合(即S在1的位置)时,发出中断请求。中断服务程序的矢量地址为0003H。源程序如下页。,注意:P1.4P1.7作为输入口,源程序如下:ORG 0000HAJMP MAIN ;上电,转向主程序ORG 0003H ;外部中断0入口地址AJMP INSER ;转向中断服务程序ORG 0030H ;主程序 MAIN: SETB EX0

31、 ;允许外部中断0中断SETB IT0 ;选择边沿触发方式SETB EA ;CPU开中断SJMP $ ;等待中断ORG 0200H ;中断服务程序 INSER:MOV A,#0F0H MOV P1,A ;P1.4P1.7为输入的准备动作MOV A,P1 ;取P1口高4位的开关数SWAP A ;A的高、低四位互换MOV P1,A ;输出驱动LED发光RETI ;中断返回END,如果采用查询: P3.2引脚电平, 中断标志位, 应如何编写程序?,查询法(查询 P3.2引脚的电平状态),源程序如下:ORG 0000HAJMP MAIN ;上电,转向主程序ORG 0030H ;主程序第1条指令从003

32、0H单元开始存放MAIN:SETB P3.2 ;P3.2作为输入口线LOOP:JB P3.2,LOOP ;开关S由2扳至1时,转LOOP;开关S在不1位置上,继续查询开关S是否在1位置MOV A,#0F0H MOV P1,A ;P1.4P1.7为输入的准备动作MOV A,P1 ;取P1口高4位的开关数SWAP A ;A的高、低四位互换MOV P1,A ;输出驱动LED发光SJMP $ END,当INT0为有效电平时:,ORG 0000HLJMP MAINORG 0003HLJMP INSER ORG 0030H MAIN:SETB EX0 SETB IT0 SETB EA SJMP $ORG

33、0200H INSER: MOV A,#0F0H MOV P1,A MOV A,P1 SWAP A MOV P1,A RETI END,在Proteus ISIS做例5-3实验,P.128 例5-4 利用中断显示系统故障,如图5-15所示,此中断电路可实现系统的故障显示。当 系统的各部分正常工作时,四个故障源的输入均为低电 平,显示灯全不亮。当有某个部分出现故障时,则相应 的输入线由低电平变为高电平,相应的发光二极管亮。,解:如图所示,当某一个故障信号输入线由低电平变为高电平时,会通过 INT0线引起89C51中断(边沿触发方式)。在中断服务程序中,应将各故障源的信号读入,并加以查询,以进行相

34、应的发光显示。,源程序如下:ORG 0000HAJMP MAIN ;上电,转向主程序ORG 0003H ;外部中断0入口地址AJMP INSER ;转向中断服务程序ORG 0030HMAIN:ANL P1,#55H ;P1.0,P1.2,P1.4,P1.6为输入P1.1,P1.3,P1.5,P1.7为输出SETB EX0 ;允许外部中断0中断SETB IT0 ;选择边沿触发方式SETB EA ;CPU开中断HERE:SJMP HERE ;等待中断INSER:JNB P1.0,L1 ;查询中断源,( P1.0)=0,转L1SETB P1.7 ;是P1.0引起的中断,使相应的二极管亮L1:JNB

35、P1.2,L2 ;继续查询SETB P1.5 L2:JNB P1.4,L3SETB P1.3L3:JNB P1.6,L4SETB P1.1L4:RETIEND,在Proteus ISIS中模拟仿真例题5-4,例:如图所示:P3.2和P3.3上各接有一只按键,要求它们分别按下K1或K2时,分别使P1口为0或FFH。用中断法编写程序。,分析:因引脚P3.2和P3.3是外部中断0和外部中断1的中断源输入,当该引脚电平为“0”时(即按钮按下时)为有效电平,即向CPU发出中断请求。若CPU开放了中断,则CPU就会响应该中断请求。CPU就从主程序转到其中断入口矢量地址中执行指令。,解:源程序为:ORG 0

36、000HAJMP MAINORG 0050H MAIN:MOV SP,#60HSETB EX0 ; 允许INT0中断SETB EX1 ;允许INT1中断SETB EA ;CPU开放中断SJMP $ ;等待中断ORG 0003H ;INT0中断入口矢量地址MOV P1,#0 ;K1按下,P1口清0RETI ;中断返回ORG 0013H ;INT1中断入口矢量地址MOV P1,#0FFH ;K2按下,P1口置1RETIEND,或:ORG 0000HAJMP MAINORG 0050H MAIN:MOV SP,#60HMOV IE,#85HSJMP $ORG 0003H MOV P1,#0RETI

37、ORG 0013H MOV P1,#0FFHRETIEND,例:如图所示:P3.2和P3.3上各接有一只按键,要求它们分别按下K1或K2时,分别使P1口为0或FFH。请编写程序(查询中断标志位)。,分析:因引脚P3.2和P3.3是外部中断0和外部中断1的中断源输入,当该引脚电平为“0”时(即按钮按下时)为有效电平,即向CPU发出中断请求。若CPU没有开放中断,则CPU就不响应该中断请求。但其相应的标志位(IE0或IE1)会由硬件自动置“1”。故而可以用指令去查询该标志位。,解:源程序为:ORG 0000HAJMP MAINORG 0050H MAIN:JBC IE0,L1 ;若IE0=1,即K

38、1按下,转L1,否则执行下一条指令L3: JBC IE1,L2 ;若IE1=1,即K2按下,转L2,否则执行下一条指令AJMP MAIN ;无键按下,继续查询L1:MOV P1,#0 ;K1按下,P1口清0AJMP L3 ;查询K2按下否L2:MOV P1,#0FFH ;K2按下,P1口置1AJMP MAINEND,请抄题,回去做题,如图所示。要求在Proteus ISIS中模拟仿真:89C51的P1.0和P1.1驱动二个LED(黄色、绿色)交替“亮”与“灭”,亮、灭的时间为50ms,LED1初始态为亮、LED2初始态为灭 。P3.2接一开关SW。当SW每次按下接通时,黄、绿色LDE都能交替闪

39、烁;当SW每次断开时,二个LED都不亮。要求采用中断法编写程序。已知晶振为12MHz,延时50ms的子程序如下:,DELAY:MOV R0,#200L1:MOV R1,#24L2:NOPDJNZ R1,L2DJNZ R0,L1RET,若采用“边缘触发”方式 会如何变化?,课堂作业 P129题2。,解答: 1)用字节操作 MOV IE,#97H MOV IP,#02H,2)用位操作 SETB EA SETB ES SETB EX0 SETB EX1 SETB ET0 SETB PT0,小结,1.外部中断(INT0、INT1)的标志位分别是:IE0、IE1。 当外部中断是有效电平时,硬件自动使IE

40、0、IE1置“1” 。(否则为0) 。此时向CPU提出中断请求。 若总允许EA未开放(EA=0),或源允许未开放(EX0=0或EX1=0),则CPU不响应该中断,但其中断标志位仍然是“1”。 若总允许EA开放(EA=1),且源允许开放(EX0=1或EX1=1),则CPU就会响应该中断,中断一经响应硬件自动将该中断标志位清“0”。 2.中断响应时程序的执行情况: 中断响应时,硬件自动将主程序的“断点地址”压入堆栈,并把INT0中断的入口矢量地址(0003H)、或INT1中断的入口矢量地址(0013H)交给PC,则程序转去执行中断服务程序;,一、INT0、INT1的中断,小结,当执行到中断服务程序

41、的RET1指令后,硬件自动将堆栈的“断点地址”弹出给PC,则程序又回到主程序的“断点”处继续往下执行。,请结合“P115图5-3中断系统结构”及“P113图5-2中断流程”来理解。,小结,二、T0、T1的中断 1.T0、T1的中断标志位分别是:TF0、TF1。 当T0/T1的计数值(或定时值)已到溢出时,硬件自动使TF0/TF1置“1”(否则为0)。此时向CPU提出中断请求。 若总允许EA未开放(EA=0),或源允许未开放(ET0=0或ET1=0),则CPU不响应该中断,但其中断标志位仍然是“1”。 若总允许EA开放(EA=1),且源允许开放(ET0=1或ET1=1),则CPU就会响应该中断,

42、中断一经响应硬件自动将该中断标志位清“0”。 2.中断响应时程序的执行情况: 中断响应时,硬件自动将主程序的“断点地址”压入堆栈,并把T0中断的入口矢量地址(000BH)、或T1中断的入口矢量地址(001BH)交给PC,则程序转去执行中断服务程序;,当执行到中断服务程序的RET1指令后,硬件自动将堆栈的“断点地址”弹出给PC,则程序又回到主程序的“断点”处继续往下执行。,小结,二、串行口的中断 1.串行口发送、串行口接收的中断标志位分别是:TI、RI。 2.串行口中断允许位ES。 若总允许EA未开放(EA=0),或源允许未开放(ES=0),则CPU不响应该中断,但其中断标志位仍然是“1”。 若

43、总允许EA开放(EA=1),且源允许开放(ES=1),则CPU就会响应该中断,中断一经响应,该中断标志位不会自动清“0”,需要用软件清“0”。 指令“CLR TI”、或“CLR RI”编写在中断服务程序中。,TI、RI的使用实例请参看P116例7-12。,本章 完,单片机应用实例:水塔的水位控制(P286),7407为TTL 集电极开路六正相高压驱动器,下拉电阻4.7K阻值太大,会使P1.0/P1.1引 脚无低电平,改为2.7欧,程序流程图:,是中水位吗?,是高水位吗?,Proteus中模拟“水塔水位控制”,程序,ORG 0000H AJMP LOOPORG 0050HLOOP:SETB P1

44、.0 SETB P1.1MOV A,P1JNB ACC.0,ONEJB ACC.1,TOWBACK:ACALL D10SAJMP LOOP ONE:JNB ACC.1,THERECLR P1.3SETB P1.2 ;电机停止工作 FOUR:AJMP FOUR THERE:CLR P1.2AJMP BACK TOW:SETB P1.2AJMP BACKD10S:MOV R3,#19HLOOP3:MOV R1,#85HLOOP1:MOV R2,#0FAHLOOP2:DJNZ R2,LOOP2DJNZ R1,LOOP1DJNZ R3,LOOP3RETEND,程序流程图:,是中水位吗?,是高水位吗?,本章 完,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报