单片机原理与接口技术5

上传人:小** 文档编号:243652871 上传时间:2024-09-28 格式:PPT 页数:131 大小:703.50KB
返回 下载 相关 举报
单片机原理与接口技术5_第1页
第1页 / 共131页
单片机原理与接口技术5_第2页
第2页 / 共131页
单片机原理与接口技术5_第3页
第3页 / 共131页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第五章 中断系统,1,第五章 中断系统,5.1,微机的输入,/,输出方式,5.2,中断的概念,5.3 89C51,中断系统结构及中断控制,5.4,中断处理过程,5.5,外部中断扩展方法,5.6,中断程序举例,2,5.1,微机的输入,/,输出方式,5.1.0,绪,5.1.1,无条件传送方式,5.1.2,查询传送方式,5.1.3,直接存储器存取(,DMA,)方式,5.1.4,中断方式,返回,返回,3,5.1.0,绪,CPU,与外部设备交换信息通常有以下几种方式,:,程序控制传送方式,又分为无条件传送方式和查询传送方式。,中断传送方式。,直接存储器存取,(DMA),方式。,4,5.1.1,无条件传送方式,CPU,总是认为外设在任何时刻都处于,“,准备好,”,的状态。,这种传送方式不需要交换状态信息,只需在程序中加入访问外设的指令,数据传送便可以实现。,此种方法很少使用。,5,5.1.2,查询传送方式(条件传送),一、什么是查询传送方式,二、查询方式程序流程,三、查询方式的特点,6,一、什么是查询传送方式,查询传送方式:,通过查询外设的状态信息,确信外设已处于,“,准备好,”,,计算机才发出访问外设的指令,实现数据的传送。,输入时,需查询外设的输入数据是否准备好,输出时,需要查询外设是否把上一次,CPU,输出的数据处理完毕。,7,二、查询方式程序流程,输入状态信息,准备好?,传送数据,查询方式的过程:,查询,等待,数据传送,待到下一次数据传送时则重复上述过程。,8,启动外设设备,传送数据,延迟,二、查询方式程序流程,9,三、查询方式的特点,优点:,通用性好,可以用于各类外设和,CPU,间的数据传送。,缺点:,CPU,在完成一次数据传送后要等待很长时间才能进行下一次的传送。在等待过程中,,CPU,不能进行其他操作,所以效率比较低。,10,DMA,:,Direct Memory Access,CPU,让出数据总线(悬浮状态),,,使外设和存储器之间直接传送(不通过,CPU,),数据的方式。,适用于外设和存储器之间有大量的数据需要传送及外设工作速度很快的情况。,5.1.3,直接存储器存取(,DMA,),方式,11,5.1.4,中断方式,非常重要的数据输入输出方式。,12,5.2,中断的概念,一、,中断的一些概念,二、,中断方式的特点,返回,13,一、中断的一些概念,中断:,当,CPU,正在处理某事件的时候,外部发生的某一事件请求,CPU,迅速去处理,,于是,CPU,暂时中止当前的工作,转去处理所发生的事件。,中断服务处理完该事件后,再返回到原来被中止的地方继续原来的工作。,这样的过程称为中断。,中断流程如图,14,主程序,响应中断请求,中断服务程序,返回主程序,继续执行主程序,断点,中断流程,15,中断机构,实现中断功能的部件称为中断系统,又称中断机构。,一、中断的一些概念,16,中断源,产生中断的请求源称为中断源。,一、中断的一些概念,17,中断请求,中断源向,CPU,提出的处理请求,称为中断请求或中断申请。,一、中断的一些概念,18,中断响应过程,CPU,暂时中止自身的事物,转去处理事件的过程,称为,CPU,的中断响应过程。,一、中断的一些概念,19,中断服务,对事件的整个处理过程,称为中断服务(或中断处理)。,一、中断的一些概念,20,中断返回,中断处理完毕,在返回到原来被中止的地方,称为中断返回。,一、中断的一些概念,21,二、中断方式的特点,完全消除了,CPU,在查询方式中的等待现象, 大大提高了,CPU,的工作效率。,实现实时处理 将从现场采集的数据通过中断方式及时传送给,CPU,,,经过处理后可立即作出反应,实现现场控制。采用查询方式很难做到及时采集,实时控制。,22,二、中断方式的特点,中断方式是外设主动提出数据传送的请求,,CPU,在收到这个请求以前,执行本身的程序,(,主程序,),,只是在收到外设希望进行数据传送的请求之后,才中断原有主程序的执行,暂时去与外设交换数据。,由于,CPU,工作速度很快,交换数据所花费的时间很短。,对于主程序来讲,虽然中断了一个瞬间,由干时间很短,对计算机的运行也不会有什么影响。,23,5.3 89C51,中断系统结构及中断控制,5.3.1 89C51,中断系统结构,5.3.2 89C51,中断源,5.3.3,中断控制,返回,24,5.3.1 89C51,中断系统结构,一、中断系统结构,二、中断技术实现的功能,25,一、中断系统结构,中断系统的结构如,图,5-3,所示。,89C51,有五个中断请求源,(89C52,有六个,),。,四个寄存器,IE,、,IP,、,TCON,、,SCON,用来控 制中断的类型、中断的开,/,关和中断源的优 先级。,有两个中断优先级,每个中断源可以编程为 高优先级或低优先级。,26,27,二、中断技术实现的功能,1,、分时操作,2,、实时处理,3,、故障处理,28,1,、分时操作,中断可以使,CPU,与外设同时工作。,CPU,在启动外设后,便继续执行主程序;而外设被启动后,开始进行准备工作。当外设准备就绪时,就向,CPU,发出中断请求,,CPU,响应该中断请求并为其服务完毕后,返回原来的断点处继续运行主程序。外设在得到服务后,也继续进行自己的工作。,因此,,CPU,可以使多个外设同时工作,并分时为各外设提供服务,从而提高了,CPU,的利用率和输入和输出的速度。,29,2,、实时处理,当计算机用于实时控制时,请求,CPU,提供服务时随机发生的。有了中断系统,,CPU,就可以立即响应并加以处理。,30,3,、故障处理,计算机在运行时往往会出现一些故障,如断电、存储器奇偶校验出错、运算溢出等。,有了中断系统,当出现上述情况时,,CPU,可及时转去执行故障处理程序,自行处理故障而不必停机。,31,5.3.2 89C51,中断源,一、,89C51,中断系统的五个中断源,二、通常情况的中断源,返回,32,一、,89C51,中断系统的五个中断源,1,、,INT0,外部中断0请求,低电平有效。,通过,P3.2,引脚输入。,2、,INT1,外部中断1请求,低电平有效。,通过,P3.3,引脚输入。,3、,T0,定时器/计数器0溢出中断请求。,4、,T1,定时器/计数器1溢出中断请求。,33,一、,89C51,中断系统的五个中断源,5、,TX/RX,串行口中断请求。,当串行口完成一帧数据的发送或接收时,便请求中断。,34,二、通常情况的中断源,1,、,I/O,外设,2,、硬件故障,3,、实时时钟,4,、为调试程序而设定的中断源,35,5.3.3,中断控制,一、中断请求标志,二、中断允许控制,三、中断优先级控制,返回,36,一、中断请求标志,1,、定时器控制寄存器,TCON,中的中断标志位,2,、串行口控制寄存器,SCON,中的中断标志位,37,1,、,TCON,中的中断标志位,TCON,为定时器,/,计数器,T0,和,T1,的控制器,,同时也锁存,T0,和,T1,的溢出中断标志及外部中断,0,和,1,的中断标志等。,与中断有关的位如图,。,38,TF1,TF0,IE1,IT1,IE0,IT0,TCON,(88H),8FH 8EH 8DH 8CH 8BH 8AH 89H 88H,图,TCON,中的中断标志位,外部中断,0,的中断请求标志,定时器,/,计数器,T0,溢出中断请求标志位,外部中断,0,的中断触发方式控制位,39,各控制位的含义,TF1,:,定时器,/,计数器,T1,溢出中断请求标志位。,当启动,T1,计数后,,T1,从初值开始加,1,计数,计数 器最高位产生溢出时,由硬件使,TF1,置,1,,并向,CPU,发出中断请求。 当,CPU,响应中断时,,硬件将自动对,TF1,清,0,。,TF0,:,定时器,/,计数器,T0,溢出中断请求标志位。,含义与,TF1,类同。,40,各控制位的含义,IE1,:,外部中断,1,的中断请求标志。,INT1,当检测到外部中断,1,引脚,P3.3,)上存在有效的,中断请求信号时,,由硬件使,IE1,置,1,。当,CPU,响应中断请求时,由硬件使,IE1,清,0,。,IE0,:,外部中断,0,的中断请求标志。,INT0,其含义与,IE1,类同。,41,各控制位的含义,IT1,:,外部中断,1,的中断触发方式控制位。,IT1=0,时,外部中断,1,程控为,电平触发方式,。,CPU,在每一个机器周期,S5P2,期间采样外部中断 请求引脚的输入电平。若外部中断,1,请求为低电平,则使,IE1,置,1,;若为高电平,则使,IE1,清,0,。,42,各控制位的含义,IT1,:,IT1=1,时,外部中断,1,程控为,边沿触发方式,。,CPU,在每一个机器周期,S5P2,期间采样外部中断请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断,1,请求引脚为高电平,接着的,下一个机器周期,采样到为低电平,则使,IE1,置,1,。直到,CPU,响应该中断时,才由硬件使,IE1,清,0,。,43,各控制位的含义,IT0,:,外部中断,0,的中断触发方式控制位。,其含义与,IT1,类同。,44,2,、,SCON,中的中断标志位,SCON,为串行口控制寄存器,,其低,2,位锁存串行口的,接收中断,和,发送中断,标志,RI,和,TI,。,SCON,中,TI,和,RI,的格式如图,所示。,45,TI,RI,SCON,(98H),9FH 9EH 9DH 9CH 9BH 9AH 99H 98H,图,SCON,中的中断标志位,串行口接收中断请求标志,串行口发送中断请求标志,46,SCON,中控制位的含义,TI,:,串行口发送中断请求标志。,CPU,将一个数据写入发送缓冲器,SBUF,时,就启动发送。,每发送完一帧串行数据后,硬件置位,TI,。,CPU,响应中断时,并不清除,TI,,,必须在,中断服务程序中由软件对,TI,清,0,。,47,SCON,中控制位的含义,RI,:,串行口接收中断请求标志。,在串行口允许接收时,,每接收完一个串行帧,,,硬件置位,RI,。,CPU,响应中断时不会清除,RI,,,必须在中断服务程序中由软件对,RI,清,0,。,48,二、中断允许控制,中断允许寄存器,IE,(),49,EA,ES,ET1,EX1,ET0,EX0,IE,(A8H),AFH AEH ADH ACH ABH AAH A9H A8H,二、中断允许控制,=0,,,屏蔽,中断,=1,,,开放,中断,50,EA,中断允许总控制位。,EA=0,,,屏蔽,所有的中断请求;,EA=1,,,CPU,开放,中断。对各中断源的中断请求是否允许,还要取决于各中断源的中断允许控制位的状态。这就是所谓的两级控制。,二、中断允许控制,51,ES,串行口中断允许位。,ES=0,,,禁止串行口,中断;,ES=1,,,允许串行口,中断。,二、中断允许控制,52,ET1,定时器,/,计数器,T1,的溢出中断允许位,ET1=0,,,禁止,T1,中断;,ET1=1,,,允许,T1,中断。,二、中断允许控制,53,EX1,外部中断,1,的溢出中断允许位。,EX1=0,,,禁止外部中断,1,中断;,EX1=1,,,允许外部中断,1,中断。,二、中断允许控制,54,ET0,定时器,/,计数器,T0,的溢出中断允许位。,ET0=0,,,禁止,T0,中断;,ET0=1,,,允许,T0,中断。,二、中断允许控制,55,EX0,外部中断,0,的溢出中断允许位。,EX0=0,,,禁止外部中断,0,中断;,EX0=1,,,允许外部中断,0,中断。,二、中断允许控制,56,例,假设允许片内定时器,/,计数器中断,禁止其他中断。试根据假设条件设置,IE,的相应值。,解,:(,IE,),=10001010B=8AH,(,a,),用字节操作指令,MOV IE,,,#8AH,;,或,MOV A8H,,,#8AH,;,(,b,),用位操作指令,SETB ET0,;,定时器,/,计数器,0,允许中断,SETB ET1,;,定时器,/,计数器,1,允许中断,SETB EA,;,CPU,开中断,57,三、中断优先级控制,1,、,89C51,的中断优先级,2,、中断优先级寄存器,IP,3,、,中断优先级排列顺序,4,、中断优先级控制实现的功能,58,1,、,89C51,的中断优先级,89C51,有,两个,中断优先级。,每个中断请求源均可编程为,高优先级,中断或,低优先级,中断。,中断系统中有,两个不可寻址,的,“,优先级生效,”,触发器,分别指出,CPU,正在执行的高、低优先级的中断服务程序。当其为,1,时则分别屏蔽所有的中断请求。有一个中断优先级寄存器,IP,59,2,、中断优先级寄存器,IP,PS,PT1,PX1,PT0,PX0,IP,(B8H),BCH BBH BAH B9H B8H,=1,,高级中断,=0,,低级中断,60,PS,串行口中断优先级控制位,PT1,定时器,/,计数器,T1,中断优先级控制位,PX1,外部中断,1,中断优先级控制位,PT0,定时器,/,计数器,T0,中断优先级控制位,PX0,外部中断,0,中断优先级控制位,若某控制位为,1,,则相应的中断源规定为高级中断;反之,为,0,,则相应的中断源规定为低级中断。,61,3,、,中断优先级排列顺序,当同时接收到,几个同一优先级,的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。,其优先级顺序排列如下:,62,中断源同级内的中断优先级,外部中断,0,高级,定时器,/,计数器,T0,溢出中断,外部中断,1,定时器,/,计数器,T1,溢出中断,串行口中断,低级,3,、,中断优先级排列顺序,63,4,、中断优先级控制实现的功能,(,1,)按内部查询顺序排队,(,2,)实现中断嵌套,64,(,1,)按内部查询顺序排队,当数个中断源同时向,CPU,发出中断请求时,,CPU,根据设计者事先确定的中断源顺序号的次序,依次响应其中断请求。,65,(,2,)实现中断嵌套,当,CPU,正在处理一个中断请求时,又出现了另一个优先级比它高的中断请求,这时,,CPU,就暂时中止执行对原来优先级较低的中断源的服务程序,保护当前断点,转去响应优先级更高的中断请求,并为它服务。待服务结束,再继续执行原来较低级的中断服务程序。该过程称为中断嵌套。,该中断系统称为多级中断系统。,66,图,二级中断嵌套,CPU,在执行主程序,低级中,断请求,响应低级中断请求,CPU,执行低级,中断服务程序,高级中,断请求,响应高级中断请求,CPU,执行高级,中断服务程序,返回低级中断程序,返回主程序,67,解:(,IP,),=00000101B=05H,(a),用字节操作指令,MOV IP,,,#05H,;,或,MOV 0B8H,,,#05H,;,(b),用为操作指令,SETB PX0,SETB PX1,CLR PS,CLR PT0,CLR PT1,例,设,89C31,的片外中断为高优先级,片内中断为低优先级。设置,IP,相应值。,68,5.4,中断处理过程,5.4.0,绪,5.4.1,中断响应,5.4.2,中断处理,5.4.3,中断返回,返回,69,5.4.0,绪,中断处理过程可分为:,中断响应,中断处理,中断返回,中断处理的大致流程如,图,返回,70,保护现场,为外设服务,恢复现场,主程序,N,K,N,+,m,K+1,返回,中 断 处 理,图,中断处理的大致流程,71,5.4.1,中断响应,一、,中断响应条件,二、中断响应操作过程,三、中断响应时间,返回,72,一、中断响应条件,有中断源发出中断请求。,中断总允许位,EA=1,,即,CPU,中断。,申请中断的中断源的中断允许位为,1,,即中断没有被屏蔽。,无同级或更高级中断正在被服务。,当前的指令周期已经结束。,返回,73,一、中断响应条件,当前的指令周期已经结束。,若现行指令为,RETI,或是访问,IE,或,IP,指令时,该指令以及紧接着的另一条指令已执行完。,74,二、中断响应操作过程,1,、,中断响应操作过程,2,、各中断源及其对应的矢量地址,3,、编写中断服务程序时应注意的问题,返回,75,1,、中断响应操作过程,把当前,PC,值压入堆栈,保护断点。,将相应的中断服务程序的入口地址送入,PC,。, 执行中断服务程序。, 执行到返回指令,RETI,,中断服务程序结束,将堆栈内容弹出到,PC,,返回到原来断点继续执行。,76,中断响应操作过程,解释:,CPU,在每个机器周期的,S5P2,期间顺序采样每个中断源,,CPU,在下一个机器周期,S6,期间按优先级顺序查询中断标志,,如查询到某个中断标志为,1,,将在接下来的机器周期,S1,期间按优先级进行中断处理。,中断系统通过硬件自动将相应的中断矢量地址装入,PC,。,77,中断响应操作过程,解释:,89C51,单片机的中断系统中有两个不可编程的,优先级生效,触发器。,一个是,“,高优先级生效触发器,”,,用以指明己进行高级中断服务,并阻止其他一切中断请求,;,一个是,低优先级生效,触发器,用以指明已进行低优先级中断服务,并阻止除高优先级以外的一切中断请求。,78,中断响应操作过程,解释:,单片机一旦响应中断,首先置位相应的中断,优先级生效,触发器,然后由硬件执行一条长调用指令,LCALL,,,把当前,PC,值压入堆栈,以保护断点,,再将相应的中断服务程序的入口地址,(,如外中断,0,的入口地址为,0003H),送入,PC,, 于是,CPU,接着从中断服务程序的入口处开始执行。,79,中断响应操作过程,解释:,对于有些中断源,,CPU,在响应中断后会自动清除中断标志,,定时器溢出标志,TF0,TF1,边沿触发方式下的外部中断标,IE0,,,IE1,。,有些中断标志不会自动清除,只能由用户用软件清除,,串行口接收发送中断标志,RI,TI,。,80,中断响应操作过程,解释:,在电平触发方式下的外部中断标志,IE0,、,IE1,则是根据引脚,INT0,和,INTl,的电平变化的,,CPU,无法直接干预,;,需在引脚外加硬件,(,如,:D,触发器,),制使其自动撤消外部中断请求。,81,中断响应操作过程,解释:,CPU,执行中断服务程序之前,,自动将程序计数器的内容,(,断点地址,),压入堆栈保护起来。,但不保护状态寄存器,PSW,的内容,,也不保护累加器,A,和其他寄存器的内容,,然后将对应的中断矢量装入程序计数器,PC,,,使程序转向该中断矢量地址单元中,以执行中断服务程序。,82,CPU,对外部中断响应的解释:,当采用边沿触发方式时,,CPU,在每个机器周期的,S5P2,期间采样外部中断输入信号,INTX(X=0,1),, 如果在相邻的两次采样中,第一次采样到的,INTX=1,,紧接着第二次采样到的,INTX=0,, 则硬件将特殊功能寄存器,TCON,中的,IEX(X=0,1),置,1,,请求中断。,IEX,的状态可一直保存下去,直到,CPU,响应此中断, 进入到中断服务程序时,才由硬件自动将自动,IEX,清,0,。,83,CPU,对外部中断响应的解释:,由于外部中断每个机器周期被采样一次,,因此,输入的高电平或低电平至少必须保持,12,个振荡周期,(,一个机器周期,),,以保证能被采样到。,84,2,、各中断源及其对应的矢量地址,85,在中断矢量地址单元处放一条无条件转移指令,(,如,LJMP,指令,),,使中断服务程序可灵活地安排在,64KB,程序存储器的任何空间。若在,2KB,范围内转移,则可存放,AJMP,指令。,由于两个相邻中断源中断服务程序入口地址相距只有,8,个单元,一般的中断服务程序是容纳不下的。,、编写中断服务程序时应注意的问题,:,86,在中断服务程序中,用户应注意用软件保护现场,以免中断返回后丢失原寄存器、累加器中的信息。,中断服务程序从矢量地址开始执行,一直到返回指令,RETI,为止。,RETI,指令的操作: 告诉,CPU,该中断服务程序已执行完毕, 把原来压入堆栈保护的断点地址从栈顶弹出,装入程序计数器,PC,。 使程序返到到被中断的程序断点处继续执行。,、编写中断服务程序时应注意的问题,:,87,若要在执行当前中断程序时禁止更高优先级中断,可以先用软件关闭,CPU,中断或禁止某中断源中断,在中断返回前再开放中断。,、编写中断服务程序时应注意的问题,:,88,在保护现场和恢复现场时,,为了不使现场信息受到破坏或造成混乱,一般应关闭,CPU,中断,使,CPU,暂不响应新的中断请求。,在编写中断服务程序时,应注意在保护现场之前并要关闭中断,,同样,在恢复现场之前应关闭中断,恢复之后再开中断。,、编写中断服务程序时应注意的问题,:,89,三、中断响应时间,CPU,不是在任何情况下都对中断请求予以响应,,不同的情况下对中断响应的时间也是不同的。,最短的响应时间:,3,个机器周期。,若系统只有一个中断源,则响应时间在,3,个,-8,个机器周期之间。,90,以外部中断为例说明中断响应的最短时间,:,在每个机器周期,S5P2,期间,,INT0,和,INT1,的电平被锁存到,TCON,的,IE0,和,IE1,的标志位。,CPU,在下一个机器周期才会查询这些值。,这时,如果满足中断响应条件,下一条要执行的指令将是一个长调用指令,LCALL,,使程序转至中断源对应的矢量地址入口。,长调用指令本身要花费,2,个机器周期。,这样,从中断请求有效到开始执行中断服务程序的第一条指令,中间要隔,3,个机器周期,91,三、中断响应时间,有时,中断响应时间会更长一些,:,例如, 一个同级或高优先级的中断正在进行,则附加的等待时间将取决于正在进行的中断服务程序。,如果正在执行的一条指令还没有进行到最后,1,个机器周期,附加的等待时间为,1,个,-3,个机器周期。,因为一条指令的最长执行时间为,4,个机器周期。,92,三、中断响应时间,有时,中断响应时间会更长一些,:,如果正在执行的是,RETI,指令或者是读,/,写,IE,或,IP,的指令,则附加的时间在,5,个机器周期之时,为完成正在执行的指令,还需要,1,个机器周期,加上为完成下一条指令所需的最长时间为,4,个机器周期,故最长为,5,个机器周期。,若系统只有一个中断源,则响应时间在,3,个,-8,个机器周期之间。,93,5.4.2,中断处理,一、什么是中断处理,二、中断处理包括的内容,三、编写中断服务程序时的注意问题,返回,94,一、什么是中断处理,CPU,响应中断后即转入中断服务程序的入口,执行中断服务程序。从中断服务程序的第一条指令开始到返回指令为止,这个过程称为中断处理或中断服务,。,95,二、中断处理包括的内容,不同的中断源服务的内容及要求各不相同,其处理过程也就有所区别。,一般情况,中断处理包括两部分内容:,1,、保护现场,2,、为中断源服务,96,二、中断处理包括的内容,1,、保护现场:,如在中断服务程序中要用到,PSW,、,A,、工作寄存器和,SFR,等寄存器时,则在进入中断服务之前应将它们的内容保护起来,在中断结束、执行,RETI,指令前应恢复现场。,2,、为中断源服务:,针对中断源的具体要求进行相应的处理。,97,5.4.3,中断返回,在中断服务程序中,最后一条指令必须为中断返回指令,:,RETI,返回,98,5.4.3,中断返回,CPU,执行中断返回指令,RETI,该指令时,,一方面清除中断响应时所置位,的,“,优先级生效,”,触发器,,另一方面从当前栈顶弹出断点地址送入程序计数器,PC,,,从而返回主程序。,99,5.4.3,中断返回,注意在中断服务程序中,:,PUSH,和,POP,指令必须成对使用,否则,不能正确返回断点。,100,5.5,外部中断扩展方法,5.5.0,绪,5.5.1,利用定时器扩展外部中断源,5.5.2,中断加查询扩展外部中断源,返回,101,5.5.0,绪,89C51,单片机有两个外部中断请求输入端(,INT0,和,INT1,)。,实际应用中,若外部中断源有两个以上,则需要扩展外部中断源。,返回,102,5.5.1,利用定时器扩展外部中断源,单片机有两个定时器,都具有两个内部中断标志和外部计数输入引脚。,当定时器设置为计数方式时,计数初值设置为满量程(,FFFFH,、,FFH,)。,一旦外部信号从计数器引脚输入一个负跳变信号,计数器加,1,产生溢出中断,从而转去处理该外部中断源的请求。,103,5.5.1,利用定时器扩展外部中断源,将外部中断源信号接至,T0,或,T1,引脚;,该定时器的溢出中断标志及中断服务程序作为扩充外部中断源的标志和中断服务程序。,104,5.5.2,中断加查询扩展外部中断源,如,图,返回,105,图多个外部中断源连接法,INT1,INT0,P1.3,P1.2,P1.1,P1.0,8051,装置,1,装置,2,装置,3,装置,4,+5V,106,ORG 0003H,LJMP INTRP,;,INT0,中断服务程序入口,ORG,1000H,INTRP,:,PUSH PSW,;,中断中断查询,PUSHA,JBP1.0,,,DV1,JBP1.1,,,DV2,JBP1.2,,,DV3,JBP1.3,,,DV4,EXIT,:,POPA,POP PSW,RETI,有关,中断服务程序,框架:,107,DV1,:,装置,1,的,中断服务程序,AJMP EXIT,DV2,:,装置,2,的,中断服务程序,AJMP EXIT,DV3,:,装置,3,的,中断服务程序,AJMP EXIT,DV4,:,装置,4,的,中断服务程序,AJMP EXIT,108,5.6,中断程序举例,5.6.1,主程序,5.6.2,中断服务程序,5.6.3,中断服务程序举例,返回,109,5.6.1,主程序,1,、主程序,的起始地址,2、主程序的初始化内容,110,1,、主程序,的起始地址,MCS-51,系列单片机复位后,,(,PC,),=0000H,编程时应在,0000H,处写一条跳转指令,(,LJMP,),主程序是以跳转的目标地址作为起始地址开始编写,一般从,0030H,开始,,111,0000H,LJMP,00,30,0030H,主程序,图,主程序地址,112,2、主程序的初始化内容,初始化:,将用到的内部部件或扩展芯片进行初始工作状态设定。,单片机复位后,特殊功能寄存器,IE,、,IP,内容均为,00H,,,所以应对,IE,、,IP,进行初始化编程,以开放中断,允许某些中断源中断和设置中断优先级等。,113,2、主程序的初始化内容,对,PSW,进行设置,如当前工作寄存器组,用户标志。,对,SP,重新赋值。对内部区功能进行划分。,114,5.6.2,中断服务程序,1,、程序框架,2,、中断服务程序编制中的注意事项,返回,115,1,、程序框架,ORG 0000H,LJMP MAIN,ORG 0003H,LJMP INT0_SUB,ORG 000BH,LJMP T0_SUB,ORG 0013H,LJMP INT1_SUB,ORG 001BH,LJMP T1_SUB,116,1,、程序框架,ORG 0023H,LJMP RXTI_SUB,ORG 0030H,MAIN: ,LJMP XXXX,INT0_SUB: ,RETI,ORG XXXXH,117,1,、程序框架,INT1_SUB: ,RETI,T0_SUB: ,RETI,T1_SUB: ,RETI,RXTI_SUB: ,RETI,END,118,2,、中断服务程序编制中的注意事项,视需要确定是否保护现场。,及时清除那些不能被硬件自动清除的中断请求标志,以免产生错误的中断。,中断服务程序中的压栈与弹栈指令必须成对使用,以确保中断服务程序的正确返回。,主程序和中断服务程序之间的参数传递与主程序和子程序的参数传递方式相同。,119,5.6.3,中断服务程序举例,返回,120,例:,如,图,,将,P1,口的,P1.4,P1.7,为,输入,,,P1.0,P1.3,为,输出,。要求利用8,9C5,1将开关所设的数据读入单片机内,并依次通过,P1.0,P1.3,输出,驱动发光二极管,以检查,P1.4,P1.7,输入的电平情况(若输入为高电平则相应的,LED,亮)。,现要求采用中断边沿触发方式,每中断一次,完成一次读/写操作。,121,P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0,INT0,89C51,+5V,+5V,+5V,+5V,+5V,1,2,S1,图 外部中断实验,122,解:采用外部中断,0,,中断申请从,INT0,输入,并采用了去抖动电路。,当,P1.0,P1.3,的任何一位输出为,1,时,相应的发光二极管就会发光。当开关,S1,闭合时,发出中断请求。中断服务程序的矢量地址为,0003H,。,源程序如下页。,123,源程序如下:,ORG 0000H,SJMP MAIN,;,上电,转向主程序,ORG 0003H,;,外部中断,0,入口地址,SJMP INSER,;,转向中断服务程序,ORG 0030H,;主程序,MAIN,:,SETB EX0,;允许外部中断,0,中断,SETB IT0,;选择边沿触发方式,SETB EA,;,CPU,开中断,HERE,:,SJMP HERE,;等待中断,124,ORG 0200H,;,中断服务程序,INSER,:,MOV A,,,#0F0H,MOV P1,,,A,;设,P1.4,P1.7,为输入,MOV A,,,P1,;,取开关数,SWAP A,;,A,的高、低四位互换,?,MOV P1,,,A,;,输出驱动,LED,发光,RETI,;,中断返回,END,125,例,利用中断显示系统故障,如,图,,此中断电路可实现系统的故障显示。,当系统的各部分正常工作时,四个故障源的输入均为低电平,显示灯全不亮。,当有某个部分出现故障时,则相应的输入线由低电平变为高电平,相应的发光二极管亮,126,+,INT0,P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7,89C51,R,R,R,R,LED,LED,LED,LED,图,利用中断显示系统故障,127,解:,如图,当某一个故障信号输入线由低电平变为高点平时,会通过,INT0,线引起,89C51,中断(边沿触发方式)。在中断服务程序中,应将各故障源的信号读入,并加以查询,以进行相应的发光显示。,128,ORG 0000H,SJMP MAIN,;,上电,转向主程序,ORG 0003H,;,外部中断,0,入口地址,SJMP INSER,;,转向中断服务程序,MAIN,:,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,;,等待中断,ORG 0030H,129,INSER,:,JNB P1.0,,,L1,;,查询中断源,,;,(,P1.0,),=0,,转,L1,SETB P1.1,;,是,P1.0,引起的中断,,;,使相应的二极管亮,L1,:,JNB P1.2,,,L2,;,继续查询,SETB P1.3,;,L2,:,JNB P1.4,,,L3,SETB P1.5,L3,:,JNB P1.6,,,L4,;,SETB P1.7,L4,:,RETI,END,130,END THANKS,131,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!