1、1/58单片机应用技术.2/58单片机应用技术 计算机在执行某一段程序的过程中,由于计算机系统计算机在执行某一段程序的过程中,由于计算机系统之外的某种原因,有必要中止原程序的执行,而去执行相之外的某种原因,有必要中止原程序的执行,而去执行相应的中断处理程序,待处理结束之后,再回来继续执行被应的中断处理程序,待处理结束之后,再回来继续执行被中止了的原程序。这种程序在执行过程中由于外界的随机中止了的原程序。这种程序在执行过程中由于外界的随机原因而被中间打断的情况称为原因而被中间打断的情况称为“中断中断”。计算机采用中断技术,大大提高了工作效率和处理问计算机采用中断技术,大大提高了工作效率和处理问题
2、的灵活性,主要表现在三方面:题的灵活性,主要表现在三方面:1.1.解决了快速解决了快速CPUCPU和慢速外设之间的矛盾,可使和慢速外设之间的矛盾,可使CPUCPU和和外设并行工作;外设并行工作;2.2.可及时处理控制系统中许多随机参数和信息;可及时处理控制系统中许多随机参数和信息;3.3.具备了处理故障的能力,提高了机器自身的可靠性。具备了处理故障的能力,提高了机器自身的可靠性。“中断中断”类似于程序设计中的调用子程序,但它们又类似于程序设计中的调用子程序,但它们又有区别,主要是中断的产生是随机的有区别,主要是中断的产生是随机的,而子程序调用是程序而子程序调用是程序中事先安排好的没有随机性中事
3、先安排好的没有随机性,因此中断比子程序调用对现场因此中断比子程序调用对现场保护要求更为严格。保护要求更为严格。.3/58单片机应用技术 80518051共有共有5 5个中断源个中断源,二个优先级二个优先级,中断处理程序可实现两极,中断处理程序可实现两极嵌套,因而具有较强的中断处理能力。嵌套,因而具有较强的中断处理能力。1.1.中断源中断源中断源是指能发出中断请求,引起中断的装置或事件。中断源是指能发出中断请求,引起中断的装置或事件。80518051单片机提供单片机提供5 5个中断源个中断源:2 2个外部中断请求(由个外部中断请求(由P3.2P3.2和和P3.3P3.3输入)输入)2 2个片内定
4、时个片内定时/计数器计数器T0T0和和T1T1的溢出中断请求的溢出中断请求TF0TF0和和TF1TF1 1 1个片内串行口中断请求个片内串行口中断请求TITI或或RIRI 这些中断请求信号分别锁存在特殊功能寄存器这些中断请求信号分别锁存在特殊功能寄存器TCONTCON和和SCONSCON中。中。.4/58单片机应用技术 IT0 IT0:选择外部中断请求选择外部中断请求0 0为边沿触发方式或电平触发方式的控制位。为边沿触发方式或电平触发方式的控制位。IT0=0IT0=0,为电平触发方式,低电平有效;为电平触发方式,低电平有效;IT0=1IT0=1,为边沿触发方式,输入为边沿触发方式,输入脚上电平
5、由高到低的负跳变有效。脚上电平由高到低的负跳变有效。IT0IT0可由软件置可由软件置“1”“1”或清或清“0”“0”。IE0 IE0:外部中断外部中断0 0请求标志。当请求标志。当IT0=0IT0=0即电平触发方式时,每个机器即电平触发方式时,每个机器周期的周期的S S5 5P P2 2采样,若为低电平,将直接触发外部中断。当采样,若为低电平,将直接触发外部中断。当IT0=1IT0=1即为边沿即为边沿触发方式时,当第一个机器周期采样到为高电平,第二个机器周期采样触发方式时,当第一个机器周期采样到为高电平,第二个机器周期采样到为低电平时,由硬件置位到为低电平时,由硬件置位IE0IE0,并以此来向
6、并以此来向CPUCPU请求中断。当请求中断。当CPUCPU响应响应中断,转向中断服务程序时由硬件清中断,转向中断服务程序时由硬件清“0”“0”IE0IE0。IT1 IT1:外部中断外部中断1 1触发方式控制位,和触发方式控制位,和IT0IT0类似。类似。IE1 IE1:外部中断外部中断1 1请求标志,其意义和请求标志,其意义和IE0IE0相同。相同。外部中断与外部中断与IExIEx之间的关系如下图所示之间的关系如下图所示D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0复位值复位值TF1TF1-TF0TF0-IE1IE1IT1IT1IE0IE0IT0IT00000H HTCON:
7、定时定时/计数器控制寄存器,字节地址计数器控制寄存器,字节地址88H。OIExINTx ITx01.5/58单片机应用技术SCONSCON:串行口控制寄存器,字节地址为串行口控制寄存器,字节地址为9898H H。SCONSCON的低二位锁存串行口的接收中断和发送中断标志,其格式如下。的低二位锁存串行口的接收中断和发送中断标志,其格式如下。TITI:80518051串行口的发送中断标志。串行口的发送中断标志。TI=1TI=1表示串行口发送器正在表示串行口发送器正在向向CPUCPU申请中断。申请中断。CPUCPU响应发送器中断请求,转向执行中断服务程序响应发送器中断请求,转向执行中断服务程序时时并
8、不清并不清“0”“0”TITI,TITI必须由用户在中断服务程序中清必须由用户在中断服务程序中清“0”“0”,即中,即中断服务程序中必须有断服务程序中必须有CLR TICLR TI或或ANL SCONANL SCON,#0FDH#0FDH等清等清“0”“0”TITI的指令。的指令。RI RI:串行口接收中断标志。串行口接收中断标志。RIRI为为1 1表示串行口接收器正向表示串行口接收器正向CPUCPU申申请中断,同样请中断,同样RIRI必须由用户的中断服务程序清必须由用户的中断服务程序清“0”“0”。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0复位值复位值-TITIRIRI
9、0000H H TF0 TF0:片内定时片内定时/计数器计数器0 0溢出中断申请标志,在启动溢出中断申请标志,在启动T0T0计数后,计数后,定时定时/计数器计数器0 0从初值开始加从初值开始加1 1计数,当最高位产生溢出时,由硬件置计数,当最高位产生溢出时,由硬件置“1”“1”TF0TF0,向向CPUCPU申请中断,申请中断,CPUCPU响应响应TF0TF0中断时清中断时清“0”“0”该标志位,该标志位,TF0TF0也可用软件清也可用软件清“0”“0”(查询方式)。(查询方式)。TF1 TF1:片内的定时片内的定时/计数器计数器1 1的溢出中断申请标志,功能和的溢出中断申请标志,功能和TF0T
10、F0类似。类似。.6/58单片机应用技术2.2.中断的开放、禁止及优先级中断的开放、禁止及优先级 对于每个中断源,其开放与禁止由专用寄存器对于每个中断源,其开放与禁止由专用寄存器IEIE中的某一位中的某一位控制。控制。中断次序(优先级)可由专用寄存器中断次序(优先级)可由专用寄存器IPIP中相应位是置中相应位是置1 1还是清还是清0 0决定其为高优先级还是低优先级,这在硬件上有相应的优先级触决定其为高优先级还是低优先级,这在硬件上有相应的优先级触发器予以保证。发器予以保证。.7/58单片机应用技术IEIE:中断允许寄存器中断允许寄存器 EAEA:开放或禁止所有中断。如开放或禁止所有中断。如EA
11、=0EA=0,则不响应中断。如则不响应中断。如EA=1EA=1,每个中每个中断源分别由各自的允许位的置位或清除确定开放或禁止。断源分别由各自的允许位的置位或清除确定开放或禁止。ESES:开放或禁止串行通道中断。如开放或禁止串行通道中断。如ES=0ES=0,则禁止串行通道中断。则禁止串行通道中断。ET1ET1:开放或禁止定时器开放或禁止定时器1 1溢出中断。如溢出中断。如ET1=0ET1=0,则禁止定时器则禁止定时器1 1中断。中断。EXlEXl:开放或禁止外部中断源开放或禁止外部中断源1 1。如果。如果EXl=0EXl=0,则禁止外部中断则禁止外部中断1 1。ET0ET0:开放或禁止定时器开放
12、或禁止定时器0 0溢出中断。如果溢出中断。如果ET0=0ET0=0,则禁止定时器则禁止定时器0 0中断。中断。EX0EX0:开放或禁止外部中断源开放或禁止外部中断源0 0。如果。如果EX0=0EX0=0,则禁止外部中断则禁止外部中断0 0。用户可据需要置用户可据需要置“1”“1”或清或清“0”“0”IEIE相应的位,来允许或禁止各中相应的位,来允许或禁止各中断源的中断申请。断源的中断申请。欲使某中断源允许中断,必须同时使欲使某中断源允许中断,必须同时使EA=1EA=1,首先使首先使CPUCPU开放中断。所以开放中断。所以EAEA相当于中断允许的相当于中断允许的“总开关总开关”。D7D6D5D4
13、D3D2D1D0复位值复位值EA-ESET1EX1ET0EX000H.8/58单片机应用技术IPIP:中断优先级寄存器中断优先级寄存器 PSPS:决定串行通道中断优先级。决定串行通道中断优先级。PS=1PS=1,则编程为高优先级。则编程为高优先级。PT1PT1:决定定时器决定定时器1 1中断优先级。中断优先级。PT1=1PT1=1,则编程为高优先级。则编程为高优先级。PX1PX1:决定外中断决定外中断1 1优先级。优先级。PX1=1PX1=1,则编程为高优先级。则编程为高优先级。PT0PT0:决定定时器决定定时器0 0中断优先级。中断优先级。PT0=1PT0=1,则编程为高优先级。则编程为高优
14、先级。PX0PX0:决定外中断决定外中断0 0优先级。优先级。PX0=1PX0=1,则编程为高优先级。则编程为高优先级。D7D6D5D4D3D2D1D0复位值复位值-PSPT1PX1PT0PX000h.9/58单片机应用技术8051单片机的中断系统单片机的中断系统外部中断请求1内部定时器0外部中断请求0内部定时器1内部串行口TRINT0INT1中断源标识符中断源标识符高优先级中断请求中断矢量低优先级中断请求中断矢量查询硬件中断优先级寄存器总允许源允许允许中断寄存器中断请求标志寄存器.10/58单片机应用技术80518051单片机对中断优先级的处理原则:单片机对中断优先级的处理原则:不同级的中断
15、源同时申请中断时:先高后低;不同级的中断源同时申请中断时:先高后低;处理低级中断又收到高级中断请求时:停低转高;处理低级中断又收到高级中断请求时:停低转高;处理高级中断却收到低级中断请求时:高不睬低;处理高级中断却收到低级中断请求时:高不睬低;同一级的中断源同时申请中断时:事先规定。同一级的中断源同时申请中断时:事先规定。对于同对于同优先级,单片机对其中断次序安排如下:优先级,单片机对其中断次序安排如下:中断源中断源 同一级的中断优先级同一级的中断优先级外部中断外部中断0 0 最高最高定时计数器定时计数器T0T0溢出中断溢出中断外部中断外部中断1 1定时定时/计数器计数器T1T1溢出中断溢出中
16、断串行口中断串行口中断 最低最低 .11/58单片机应用技术1 1响应条件响应条件 单片机响应中断的条件首先是:单片机响应中断的条件首先是:中断源有请求,中断允许寄存中断源有请求,中断允许寄存器器IEIE相应位置相应位置“1”“1”,CPUCPU中断开放(中断开放(EA=1EA=1)。)。这样,在每个机器周这样,在每个机器周期内,单片机对所有中断源都进行顺序检测,并可在任一个周期的期内,单片机对所有中断源都进行顺序检测,并可在任一个周期的S6S6期间,找到所有有效的中断请求并对其优先级进行排队,满足下期间,找到所有有效的中断请求并对其优先级进行排队,满足下列条件:列条件:无同级或高级中断正在服
17、务;无同级或高级中断正在服务;现行指令执行到最后一个机器周期且已结束;现行指令执行到最后一个机器周期且已结束;若现行指令为若现行指令为RETIRETI或需访问特殊功能寄存器或需访问特殊功能寄存器IEIE或或IPIP的指令时,的指令时,执行完该指令且其紧接着的另一条指令也已执行完。执行完该指令且其紧接着的另一条指令也已执行完。单片机便在接着的下一个机器周期的单片机便在接着的下一个机器周期的S1S1期间响应中断。否则,期间响应中断。否则,将丢弃中断查询的结果。将丢弃中断查询的结果。.12/58单片机应用技术2 2中断的响应过程中断的响应过程 单片机一旦响应中断,首先单片机一旦响应中断,首先置位相应
18、的优先级有效触发器置位相应的优先级有效触发器(中断(中断系统包含了两个不可编程的系统包含了两个不可编程的“优先等级生效优先等级生效”触发器,一个用于指明触发器,一个用于指明已进行高优先级的中断服务,以阻止其他的中断请求,另一个用于指已进行高优先级的中断服务,以阻止其他的中断请求,另一个用于指明已进入低优先级的中断服务,阻止除高优先级以外的全部其他中断明已进入低优先级的中断服务,阻止除高优先级以外的全部其他中断请求),然后请求),然后执行一个硬件子程序调用执行一个硬件子程序调用,把断点地址压人堆栈,再把,把断点地址压人堆栈,再把与各中断源对应的中断服务程序的首地址送程序计数器与各中断源对应的中断
19、服务程序的首地址送程序计数器PCPC,同时清除同时清除中断请求标志(中断请求标志(TITI和和RIRI除外),从而控制程序转移到中断服务程序。除外),从而控制程序转移到中断服务程序。以上过程均由中断系统以上过程均由中断系统自动自动完成。完成。由上述过程可知,单片机响应中断后,只保护断点而不保护现场由上述过程可知,单片机响应中断后,只保护断点而不保护现场(如标志位寄存器(如标志位寄存器PSWPSW的内容的内容),且不能清除串行口中断请求标志,且不能清除串行口中断请求标志TITI和和RIRI,也无法清除外中断输入电平申请信号,所有这些应在用户编制中也无法清除外中断输入电平申请信号,所有这些应在用户
20、编制中断处理程序时予以考虑。断处理程序时予以考虑。.13/58单片机应用技术各中断源所对应的中断服务程序首地址如下:各中断源所对应的中断服务程序首地址如下:中断源中断源 入口地址入口地址 外部中断外部中断0 0 00030003H H 定时器计数器定时器计数器T0 T0 000BH000BH 外部中断外部中断1 1 00130013H H 定时器计数器定时器计数器T1 T1 001BH001BH 串行口中断串行口中断 00230023H H CPU CPU从此地址开始执行中断服务程序直至遇到一条从此地址开始执行中断服务程序直至遇到一条RETIRETI指令指令为止。为止。RETIRETI指令表示
21、中断服务程序的结束,指令表示中断服务程序的结束,CPUCPU执行该指令,执行该指令,一方面一方面清除中断响应时所置位的优先级有效触发器清除中断响应时所置位的优先级有效触发器,一方面由,一方面由栈顶弹出断点地址送程序计数器栈顶弹出断点地址送程序计数器PCPC,从而返回主程序。若用户从而返回主程序。若用户在中断服务程序开始安排了保护现场指令(相应寄存器内容入在中断服务程序开始安排了保护现场指令(相应寄存器内容入栈),则在栈),则在RETIRETI指令前应有恢复现场(相应寄存器内容出栈)指令前应有恢复现场(相应寄存器内容出栈)指令。这在编程时也应注意。指令。这在编程时也应注意。.14/58单片机应用
22、技术一个典型的中断服务程序:一个典型的中断服务程序:ORG ORG0003H;0003H;外部中断外部中断0 0入口地址入口地址 LJMP LJMPINT0_ISRINT0_ISR ;其他程序代码其他程序代码INT0_ISR:;INT0_ISR:;外部中断外部中断0 0服务程序服务程序 RETI RETI.15/58单片机应用技术1 1外部中断的触发方式外部中断的触发方式 由由TCONTCON寄存器中的寄存器中的IT1IT1和和IT0IT0位的位的“0”“1”“0”“1”状态可决定外中断状态可决定外中断源是源是电平触发电平触发方式还是方式还是边沿触发边沿触发方式。方式。若若ITx=0ITx=0
23、,外中断为外中断为电平触发电平触发方式。单片机在每一个机器周期的方式。单片机在每一个机器周期的S5P2S5P2期间采样中断输入信号的状态,期间采样中断输入信号的状态,若为低电平,即可直接触发外若为低电平,即可直接触发外部中断部中断。在这一触发方式中,中断源必须持续请求,。在这一触发方式中,中断源必须持续请求,直到中断实直到中断实际上产生为止。然后,在中断服务程序返回之前,必须撤消中断请际上产生为止。然后,在中断服务程序返回之前,必须撤消中断请求信号,否则机器将以为又发生另一次中断请求。求信号,否则机器将以为又发生另一次中断请求。所以电平触发方所以电平触发方式适合于外部中断输入为低电平,且在中断
24、服务程序中能清除该中式适合于外部中断输入为低电平,且在中断服务程序中能清除该中断源申请信号的情况。断源申请信号的情况。若若ITx=1ITx=1,外部中断为外部中断为边沿触发边沿触发方式。在这种方式中如果在端方式。在这种方式中如果在端连续采样到一个周期的高电平和紧接着一个周期的低电平,则在连续采样到一个周期的高电平和紧接着一个周期的低电平,则在TCONTCON寄存器中的中断请求标志位寄存器中的中断请求标志位IExIEx就被置位,就被置位,由由IExIEx标志位请求中标志位请求中断断。显然,这种方式的中断请求即使。显然,这种方式的中断请求即使CPUCPU暂时不能响应,中断申请标暂时不能响应,中断申
25、请标志由于被保存也不会丢失,而一旦志由于被保存也不会丢失,而一旦CPUCPU响应中断,进人中断服务程序响应中断,进人中断服务程序时,时,IExIEx会被会被CPUCPU自动清除。自动清除。由于外中断源在每个机器周期被采样一次,所以输入的高电平由于外中断源在每个机器周期被采样一次,所以输入的高电平或低电平至少必须保持或低电平至少必须保持十二个振荡周期十二个振荡周期,以保证能被可靠采样到。,以保证能被可靠采样到。.16/58单片机应用技术2 2外部中断的响应时间外部中断的响应时间 外中断申请信号,在每个机器周期的外中断申请信号,在每个机器周期的S5P2S5P2期间被采样并锁存,但须期间被采样并锁存
26、,但须等到下等到下个机器周期才被查询并被确定是否有效,若中断被激活,并且个机器周期才被查询并被确定是否有效,若中断被激活,并且满足响应条件,则转去执行中断服务程序。这样,产生外部中断申请到满足响应条件,则转去执行中断服务程序。这样,产生外部中断申请到得到得到CPUCPU确认,需一个机器周期,而确认,需一个机器周期,而CPUCPU保护断点,自动转入中断处理程保护断点,自动转入中断处理程序需序需2 2个机器周期,所以个机器周期,所以外部中断响应时间至少需要三个机器周期外部中断响应时间至少需要三个机器周期。若中断请求被前述三个条件之一所阻止,则将需更长的响应时间。若中断请求被前述三个条件之一所阻止,
27、则将需更长的响应时间。如果已经在执行另一个同级或更高级的中断,附加的等待时间显然取决如果已经在执行另一个同级或更高级的中断,附加的等待时间显然取决于该正执行中断服务程序的长短,以及是否还有更高级的中断源存在。于该正执行中断服务程序的长短,以及是否还有更高级的中断源存在。若正处理指令未执行到最后的机器周期,所需的额外等待时间不会超过若正处理指令未执行到最后的机器周期,所需的额外等待时间不会超过三个周期(由于需时最长的指令三个周期(由于需时最长的指令MULMUL和和DIVDIV也仅为也仅为4 4个机器周期)。考虑个机器周期)。考虑极限情况,所执行指令为极限情况,所执行指令为RETIRETI或者存取
28、或者存取IEIE或或IPIP的指令,其下相邻指令为的指令,其下相邻指令为MULMUL或或DIVDIV,则前者需一个机器周期后者需则前者需一个机器周期后者需4 4个机器周期,这时额外的等个机器周期,这时额外的等待时间不会多于待时间不会多于5 5个机器周期。个机器周期。所以,在一个单所以,在一个单中断源情况中,中断源情况中,中断响应时间总是在中断响应时间总是在3-83-8个机器个机器周期之间周期之间。.17/58单片机应用技术例例1 1利用利用80518051的外部中断,实现单步操作。的外部中断,实现单步操作。该电路的工作原理是:该电路的工作原理是:80518051响应中断后,执行完响应中断后,执
29、行完RETIRETI须返回主须返回主程序执行一条指令,然后才能响应新的中断。这样,只要程序执行一条指令,然后才能响应新的中断。这样,只要/INT0INT0引引脚平时为低电平,且编程为电平触发,则主机响应中断,进入中断脚平时为低电平,且编程为电平触发,则主机响应中断,进入中断服务程序,并在该服务程序中停留,直到服务程序,并在该服务程序中停留,直到/INT0INT0引脚上接收到一个引脚上接收到一个脉冲脉冲(从低从低高高低低),才返回主程序执行一条指令,然后又立即进,才返回主程序执行一条指令,然后又立即进入中断服务程序,等待下一个脉冲的到来,又返回主程序执行一条入中断服务程序,等待下一个脉冲的到来,
30、又返回主程序执行一条指令,如此反复,可单步执行完整个程序,该种单步操作用以调试指令,如此反复,可单步执行完整个程序,该种单步操作用以调试检查程序。检查程序。INT080511K+5V 单脉冲电路.18/58单片机应用技术其初始化程序如下:其初始化程序如下:CLRCLRIT0IT0 SETB SETB EAEA SETB SETB PX0PX0 SETB SETB EX0EX0外部中断外部中断0 0的中断服务程序如下:的中断服务程序如下:HERE0HERE0:JNBJNBP3.2,HERE0P3.2,HERE0HERE1HERE1:JBJBP3.2,HERE1P3.2,HERE1 RETI RE
31、TI.19/58单片机应用技术例例2 2多个外部中断源扩展多个外部中断源扩展 硬件连接如图,各中断输入端为高电平有效硬件连接如图,各中断输入端为高电平有效,当某中断有效时当某中断有效时点亮对应点亮对应LEDLED指示灯。指示灯。当外部中断源多于当外部中断源多于2 2个时,可采用硬件申请与软件查询的方法,个时,可采用硬件申请与软件查询的方法,把多个中断源通过硬件把多个中断源通过硬件“线或线或”或经或非门引入外中断源输入端,或经或非门引入外中断源输入端,同时又连到某同时又连到某I/OI/O口。这样,每个源都可能引起中断,在中断服务口。这样,每个源都可能引起中断,在中断服务程序中通过软件查询便可确定
32、哪一个是正在申请的中断源,其查询程序中通过软件查询便可确定哪一个是正在申请的中断源,其查询的次序则由中断源优先级决定,这就可实现多个外部中断源的扩展。的次序则由中断源优先级决定,这就可实现多个外部中断源的扩展。8051INT0P1.0P1.2P1.3P1.4P1.6P1.5P1.7P1.1LED2LED3R0R1R2R3 故障信号输入端+5VLED0LED1.20/58单片机应用技术汇编语言程序如下:汇编语言程序如下:ORG ORG0000H0000H LJMP LJMPMAINMAIN;转主程序转主程序 ORG ORG0003H0003H LJMP LJMPINT_0INT_0;转中断服务程
33、序转中断服务程序 ORG ORG0100H0100HMAINMAIN:MOVMOVSP,#60HSP,#60H SETB SETBIT0 IT0 ;为沿触发中断方式为沿触发中断方式 SETB SETBEX0EX0;允许中断允许中断 SETB SETBEAEA;CPU;CPU开中断开中断LOOP1LOOP1:MOV MOVA,P1A,P1 ANL ANLA,#55HA,#55H JNZ JNZLOOP1LOOP1;有外部中断请求去有外部中断请求去LOOP1LOOP1 ORL ORLP1,#0FFHP1,#0FFH;无外部中断请求输出置无外部中断请求输出置1 1(灯全灭)(灯全灭)LJMP LJM
34、PLOOP1LOOP1;去去LOOP1LOOP1等待中断等待中断.21/58单片机应用技术INT_0INT_0:JNB JNBP1.0,L1P1.0,L1;中断服务程序中断服务程序 CLR CLRP1.1 ;P1.1 ;查询中断源,查询中断源,P1.0P1.0为为0 0转转L1L1,P1.0P1.0 LJMP LJMPL2 ;L2 ;为为1 1,P1.1P1.1送出送出“0”0”使对应的灯亮。使对应的灯亮。L1L1:SETBSETBP1.1P1.1L2L2:JNBJNBP1.2,L3P1.2,L3 CLR CLRP1.3P1.3 LJMP LJMPL4L4L3L3:SETBSETBP1.3P1
35、.3L4L4:JNBJNBP1.4,L5P1.4,L5 CLR CLRP1.5P1.5 LJMP LJMPL6L6L5L5:SETBSETBP1.5P1.5L6L6:JNBJNBP1.6,L7P1.6,L7 CLR CLRP1.7P1.7 LJMP LJMPL8L8L7L7:SETBSETBP1.7P1.7L8L8:RETIRETI END END .22/58单片机应用技术对应的对应的C C语言版程序:语言版程序:#include“REG51.H”/#include“REG51.H”/包含寄存器定义头文件包含寄存器定义头文件sbitsbitP10=P10;/P10=P10;/定义相关的位定义
36、相关的位sbitsbitP11=P11;P11=P11;sbitsbitP12=P12;P12=P12;sbitsbitP13=P13;P13=P13;sbitsbitP14=P14;P14=P14;sbitsbitP15=P15;P15=P15;sbitsbitP16=P16;P16=P16;sbitsbitP17=P17;P17=P17;void extern0_ISR(void)interrupt 0/void extern0_ISR(void)interrupt 0/外部中断函数外部中断函数 P11=P10;P11=P10;P13=P12;P13=P12;P15=P14;P15=P14
37、;P17=P16;P17=P16;.23/58单片机应用技术/主程序主程序void main(void)void main(void)unsigned char i;unsigned char i;IT0=1;IT0=1;/外部中断外部中断0 0为边沿触发方式为边沿触发方式 EX0=1;/EX0=1;/允许外部中断允许外部中断0 0 EA=1;EA=1;/允许总的中断允许总的中断 while(1)while(1)i=P1;i=P1;if(!(i&=0 x55)if(!(i&=0 x55)P1|=0 xff;P1|=0 xff;.24/58单片机应用技术 例例3 3利用利用/INT1/INT1引
38、入单脉冲,每来一个负脉冲,将引入单脉冲,每来一个负脉冲,将P1P1口的发光口的发光二极管循环点亮。二极管循环点亮。ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ORG 0013H ORG 0013H LJMP INT_X1 LJMP INT_X1 ORG 0100H ORG 0100HMAIN:MAIN:MOV SP,#60H MOV SP,#60H MOV A,#01H MOV A,#01H MOV P1,#00H MOV P1,#00H SETB IT1 SETB IT1 SETB EX1 SETB EX1 SETB EA SETB EA SJMP$SJM
39、P$INT_X1:INT_X1:MOV P1,A MOV P1,A RL A RL A RETI RETI END END.25/58单片机应用技术#include reg51.h#include reg51.hunsigned char i=0 x01;unsigned char i=0 x01;void intx1_isr()interrupt 2void intx1_isr()interrupt 2 i=1;i=1;if(i=0)i=1;if(i=0)i=1;P1=i;P1=i;void main(void main(voidvoid)P1=0;P1=0;IT1=1;IT1=1;EX1=
40、1;EX1=1;EA=1;EA=1;while(1);while(1);/for(;);/for(;);.26/58单片机应用技术 MSC1211 MSC1211提供提供2121个中断源。除了具有标准个中断源。除了具有标准80528052的中断外,的中断外,MSC1211MSC1211还有一些优先级更高还有一些优先级更高的辅助中断。辅助中断包括的辅助中断。辅助中断包括2 2个系统定时器中个系统定时器中断,断,1 1个求和寄存器中断,个求和寄存器中断,1 1个个ADCADC中断,中断,2 2个个SPISPI或者或者I I2 2C C中断,中断,2 2个低电压检测中断和个低电压检测中断和1 1个硬
41、个硬件断点中断。件断点中断。如下表所示如下表所示.高低 中断号中断入口地址中断源优先级60 x33DVDD低电压检测中断060 x33硬件断点中断060 x33AVDD低电压检测中断060 x33SPI/I2C接收中断060 x33SPI/I2C发送中断060 x33毫秒定时器中断060 x33秒定时器中断060 x33求和中断060 x33A/D转换中断000 x03外部中断0110 x0B定时器0溢出中断220 x13外部中断1330 x1B定时器1溢出中断440 x23串口0中断550 x2B定时器2溢出中断670 x3B串口1中断780 x43外部中断2890 x4B外部中端39100
42、 x53外部中端410110 x5B外部中断511120 x63看门狗溢出中断12.28/58单片机应用技术 OIE0IE1TF0TF1RI_0TI_0TF2 RI_1TI_1IE2IE3IE4IE5WDTIINT0INT1TCON.1IT1中断TCON.5TCON.3TCON.7SCON0.0SCON0.1SCON1.0SCON1.1TCON1.7EXIF.4EXIF.5EXIF.6EXIF.7EICON.3INT2INT3INT4INT5EX0ET0EX1ET1ES0ET2EX2EX3EX4EX5EWDIEA OIT0ES1中断允许寄存器中断优先级寄存器辅助中断最高优先级外部中断允许寄存器
43、外部中断优先级寄存器最低优先级 低优先级中断高优先级中断01高低10.29/58单片机应用技术12EIP.40063HEIE.4EICON.3WDTI看门狗中断11EIP.3PX5005BHEIE.3EX5EXIF.7IE5外部中断510EIP.2PX40053HEIE.2EX4EXIF.6IE4外部中断49EIP.1PX3004BHEIE.1EX3EXIF.5IE3外部中断38EIP.0PX20043HEIE.0EX2EXIF.4IE2外部中断2SCON1.1TI_1串口1发送中断7IP.6PS1003BHIE.6ES1SCON1.0RI_1串口1接收中断6IP.5PT2002BHIE.5E
44、T2T2CON.7TF2T2溢出中断SCON0.1TI_0串口0发送中断5IP.4PS00023HIE.4ES0SCON0.0RI_0串口0接收中断4IP.3PT0001BHIE.3ET1TCON.7TF1T1溢出中断3IP.2PX10013HIE.2EX1TCON.3IE1外部中断12IP.1PT1000BHIE.1ET0TCON.5TF0T0溢出中断1IP.0PX00003HIE.0EX0TCON.1IE0外部中断0位名称位名称位名称相对优先级优先级控制中断服务程序入口地址中断使能中断标志中断源标准中断及外部扩展中断标准中断及外部扩展中断.30/58单片机应用技术 MSC1211 MSC1
45、211有有6 6个外部中断,分别为外部中断个外部中断,分别为外部中断0505。/INT0INT0和和/INT1INT1的中断允许和屏蔽分别通过的中断允许和屏蔽分别通过EX0EX0(IE.2IE.2)和和EX1EX1(IE.0IE.0)来实现。触发类型(边沿触发或电平触发)通过来实现。触发类型(边沿触发或电平触发)通过IT0IT0(TCON.0TCON.0)和和IT1IT1(TCON.2TCON.2)的设置来决定。的设置来决定。IE0IE0(TCON.1TCON.1)和和IE1IE1(TCON.3TCON.3)分别为两个分别为两个外部中断的中断标志。外部中断的中断标志。MSC1211MSC121
46、1的外部中断的外部中断2525可以通过可以通过EX2EX5EX2EX5(EIE.0EIE.3EIE.0EIE.3)设置为允设置为允许或禁止状态。这四个外部中断本质是一样的,只是许或禁止状态。这四个外部中断本质是一样的,只是INT2INT2和和INT4INT4是上升是上升沿触发,而沿触发,而/INT3INT3和和/INT5INT5是下降沿触发,这些中断没有电平触发模式。是下降沿触发,这些中断没有电平触发模式。应该注意的是,应该注意的是,外部中断外部中断2525的中断标志不是在响应相应中断时由硬件的中断标志不是在响应相应中断时由硬件自动清除的,用户需要在中断服务程序返回前,使用软件将标志位清零自动
47、清除的,用户需要在中断服务程序返回前,使用软件将标志位清零,否则,中断返回后,还将产生一次新的中断。否则,中断返回后,还将产生一次新的中断。当处理器工作在低功耗的空闲模式时,外部中断(当处理器工作在低功耗的空闲模式时,外部中断(/NT0 NT0 和和/INT1INT1)和看门狗中断可以唤醒处理器。为了实现唤醒功能,必须将看门狗唤醒和看门狗中断可以唤醒处理器。为了实现唤醒功能,必须将看门狗唤醒允许位允许位EWUWDEWUWD(EWU.2EWU.2)、)、外部中断外部中断1 1唤醒允许位唤醒允许位TEWUEX1TEWUEX1(EWU.1EWU.1)、)、外外部中断部中断0 0唤醒允许位唤醒允许位W
48、EUEX0WEUEX0(EWU.0EWU.0)置置1 1。.31/58单片机应用技术【例【例7-37-3】外部中断】外部中断2 2的使用。利用的使用。利用INT2INT2引入单脉冲,每来一个正脉冲,将引入单脉冲,每来一个正脉冲,将P2P2口的口的发光二极管循环点亮。发光二极管循环点亮。解:利用解:利用INT2INT2的上升沿触发中断。汇编语言程序如下:的上升沿触发中断。汇编语言程序如下:$INCLUDE(reg1211.inc)$INCLUDE(reg1211.inc);包含包含MSC1210MSC1210单片机的寄存器定义文件单片机的寄存器定义文件 ORG 0000HORG 0000H LJ
49、MP MAINLJMP MAIN ORG 0043HORG 0043H LJMP INT_X2LJMP INT_X2 ORG 0100HORG 0100HMAIN:MAIN:MOV SP,#60HMOV SP,#60H MOV A,#01HMOV A,#01H MOV P2,#01HMOV P2,#01H MOV P1DDRH,#0FFHMOV P1DDRH,#0FFH ;使用使用P1P1口的复用功能,设置口的复用功能,设置P1.7-P1.4P1.7-P1.4为输入方式为输入方式 SETB EX2SETB EX2 ;开放外部中断开放外部中断2 2 SETB EASETB EA ;开放总中断开放
50、总中断 SJMP$SJMP$INT_X2:INT_X2:ANL EXIF,#0EFHANL EXIF,#0EFH ;将将IE2IE2清零清零 RL ARL A MOV P2,AMOV P2,A RETIRETI ENDEND.32/58单片机应用技术对应的对应的C C语言版本如下:语言版本如下:#include“reg1211.h”#include“reg1211.h”unsigned char i=1;unsigned char i=1;void int_x2()interrupt 8void int_x2()interrupt 8 i=1;i=1;if(i=0)i=1;if(i=0)i=1