C51单片机的中断[1].ppt
中断系统中断系统:包含中断源、中断方式、中:包含中断源、中断方式、中断控制寄存器、中断响应和中断请求的断控制寄存器、中断响应和中断请求的撤除。撤除。 本章主要内容本章主要内容定时定时/ /计数器计数器:包含定时:包含定时/ /计数器的定时计数器的定时和计数功能和计数功能 、定时、定时/ /计数器的控制寄存计数器的控制寄存器、工作方式及其应用。器、工作方式及其应用。 单片机在某一时刻只能处理一个任单片机在某一时刻只能处理一个任务,当多个任务同时要求单片机处理时,务,当多个任务同时要求单片机处理时,这一要求应该怎么实现呢?通过中断可这一要求应该怎么实现呢?通过中断可以实现多个任务的资源共享。以实现多个任务的资源共享。 MCS-51MCS-51的的中断中断系统系统看书看书电话电话铃响铃响接电话接电话继续继续看书看书中断响应中断响应中断返回中断返回中断请求中断请求中断的基本概念中断的基本概念主程序主程序断点断点执行中断服务执行中断服务(或处理)子程(或处理)子程序序继续执继续执行程序行程序 中断响应中断响应中断返回中断返回中断请求中断请求中断的基本概念中断的基本概念 所谓的中断就是,当所谓的中断就是,当CPUCPU正在处理正在处理某项事务的时候,如果外界或者内部发某项事务的时候,如果外界或者内部发生了紧急事件,要求生了紧急事件,要求CPUCPU暂停正在处理暂停正在处理工作而去处理这个紧急事件,待处理完工作而去处理这个紧急事件,待处理完后,再回到原来中断的地方,继续执行后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。原来被中断的程序,这个过程称作中断。 中断的中断的定义定义u 实现这种功能的部件称为实现这种功能的部件称为中断系统中断系统(中断机构)。(中断机构)。u 产生中断的请求源称为产生中断的请求源称为中断源中断源。u 中断过程中又有中断发生称为中断过程中又有中断发生称为中断中断嵌套。嵌套。u中断执行的程序称为中断执行的程序称为中断服务子程序。中断服务子程序。 n中断功能强弱是计算机性能优劣的重要中断功能强弱是计算机性能优劣的重要标志标志n提高提高CPUCPU效率效率 解决速度矛盾解决速度矛盾 实现并行工作实现并行工作 实时处理实时处理 应付突发事件应付突发事件 中断源是指在计算机系统中向中断源是指在计算机系统中向CPUCPU发出中断请求的来源。发出中断请求的来源。 MCS-51MCS-51的中断系统的中断系统中断源中断源80518051单片机有单片机有5 5个中断源:个中断源:外部中断源:外部中断源:外部中断外部中断0(INT0 ) 外部中断外部中断1(INT1 )内部中断源:内部中断源:定时定时/计数中断计数中断0(T0) 定时定时/计数中断计数中断1(T1)串行中断串行中断 1. 外部中断源外部中断源 外部中断外部中断0 0(INTINT0 0 ):):来自引脚来自引脚P P3.23.2 外部中断外部中断1 1(INTINT1 1 ):):来自引脚来自引脚P P3.33.3外部中断请求两种方式:外部中断请求两种方式:u 电平触发方式(低电平有效)电平触发方式(低电平有效)u 下降沿触发方式(脉冲的下降沿有下降沿触发方式(脉冲的下降沿有效,至少要维持一个机器周期)效,至少要维持一个机器周期) 2. 内部中断源内部中断源定时定时/ /计数中断计数中断0 0(T T0 0):):定时定时/ /计数计数发生溢出时,产生中断请求。发生溢出时,产生中断请求。定时定时/ /计数中断计数中断1 1(T1T1):):定时定时/ /计数计数发生溢出时,产生中断请求。发生溢出时,产生中断请求。 串行中断:串行中断:为完成串行数据传送而设为完成串行数据传送而设置。单片机完成接受或发送一组数据时,置。单片机完成接受或发送一组数据时,产生中断请求。产生中断请求。说明:说明:外部中断源中断请求外部中断源中断请求需设置需设置,而,而 内部中断源中断请求不需设置,内部中断源中断请求不需设置, 自动产生自动产生。 MCS-51MCS-51的中断系统的中断系统中断标志中断标志CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断源中断标志位中断标志位 每一个中断源都有相应的中断标志位;每一个中断源都有相应的中断标志位; 某一个中断源申请中断,相应中断标志位置某一个中断源申请中断,相应中断标志位置1 1。 MCS-51MCS-51的中断系统的中断系统中断允许中断允许CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TIRI中断源中断源中断标志位中断标志位 EA总中断允许位,总中断允许位,EA=1开放所有中断,开放所有中断,EA=0,禁止所有中断;,禁止所有中断; 某一个中断源还有相应的中断允许位,某一个中断源还有相应的中断允许位,1允许相应中断源的中断,允许相应中断源的中断,0禁禁止相应中断源的中断。止相应中断源的中断。中断允许中断允许ESET0EX0EX1ET1EA MCS-51MCS-51的中断系统的中断系统中断优先级中断优先级CPU主程序INT0INT1T0T1串口IE0TF0IE1TF1TISI中断源中断源中断标志位中断标志位 单片机中有两个中断优先级,即高优先级中断和低优先级中断,前单片机中有两个中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(在程序中设置,相应位者优先权高于后者(在程序中设置,相应位=1=1,为高优先级);,为高优先级); 同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。形成,无法改变)。中断允许中断允许ESET0EX0EX1ET1EA自然优先级自然优先级高低优先控制优先控制PSPT0PX0PX1PT1 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级自然优先级矢量地址高级中断请求高级中断请求自然优先级自然优先级矢量地址低级中断请求低级中断请求PX0PT0PX1PT1PSIEIP MCS-51 MCS-51的中断系统结构图的中断系统结构图中断标志位中断源允许总允许中断优先级表表 5.1 8051 中中 断断 源源定时器控制寄存器(定时器控制寄存器(TCONTCON)串行口控制寄存器(串行口控制寄存器(SCONSCON)中断允许控制寄存器(中断允许控制寄存器(IEIE)中断优先级控制寄存器(中断优先级控制寄存器(IPIP)中断控制寄存器(中断控制寄存器(4个):个): TF1 TF0 IE1 IT1 IE0 IT0TCONT1溢出中断标志溢出中断标志(TCON.7): T1启动计数后,计满溢出由硬件启动计数后,计满溢出由硬件置位置位TF1=1,向,向CPU请求中断,此标志请求中断,此标志一直保持到一直保持到CPU响应中断后,响应中断后,才由硬才由硬件自动清件自动清0。也可用软件查询该标志,。也可用软件查询该标志,并由软件清并由软件清0。765432101.1.定时器控制寄存器(定时器控制寄存器(TCONTCON) 计数溢出标志位的使用有两种情况:计数溢出标志位的使用有两种情况:u采用中断方式时,作中断请求标志位采用中断方式时,作中断请求标志位来使用;来使用;u采用查询方式时,作查询状态位来使采用查询方式时,作查询状态位来使用。用。 TF1 TF0 IE1 IT1 IE0 IT0TCON 88H外部中断外部中断INT1中断标志中断标志位位(TCON.3) : IE11,外部中断1向CPU申请中断 外部中断外部中断INT1触发方触发方式控制位式控制位(TCON.2): IT1=0,电平触发方式 IT1=1, 下降沿触发方式76543210IEIE0 0和和IEIE1 1外中断请求标志位外中断请求标志位 当当CPUCPU采样到采样到INT0(或(或INT1 )端)端出现出现有效中断请求时有效中断请求时,IE0 IE0 (或(或IE1IE1)位由硬件位由硬件置置“1 1”。当。当中断响应完成中断响应完成转转向中断服务程序时,由硬件把向中断服务程序时,由硬件把IE0IE0(或(或IE1IE1)清零清零。 TI (SCON.1)串行发送中断标志。 RI (SCON.0)串行接收中断标志。 TI RISCON 98H76543210注意:该寄存器可以位寻址。2.SCON寄存器寄存器 TITI串行口发送中断请求标志位串行口发送中断请求标志位 当发送完一帧串行数据后,由硬件置当发送完一帧串行数据后,由硬件置“1 1”;在转向中断服务程序后,用在转向中断服务程序后,用软件软件清清“0 0”。 RIRI串行口接收中断请求标志位串行口接收中断请求标志位 当接收完一帧串行数据后,由硬件置当接收完一帧串行数据后,由硬件置“1 1”;在转向中断服务程序后,用在转向中断服务程序后,用软件软件清清“0 0”。 串行中断请求由串行中断请求由TITI和和RIRI的的逻辑或逻辑或得到。得到。其中与中断有关的控制位共其中与中断有关的控制位共2 2位:位: IE A8H EA ESET1EX1 ET0EX0例:允许定时器例:允许定时器T0中断:中断: SETB EA SETB ET0 或或 MOV IE,#82H76543210(3 3)中断允许寄存器)中断允许寄存器IEIE(4 4)中断优先级控制寄存器()中断优先级控制寄存器(IPIP)nMCS-51MCS-51有两个优先级有两个优先级,1,1为高为高,0,0为低为低n字节地址字节地址: :B8HB8Hn位地址:位地址: 0BFH0BFH0B8H0B8H 51 51单片机有两个中断优先级单片机有两个中断优先级高级和低级高级和低级 专用寄存器专用寄存器IPIP为中断优先级寄存器,用户可为中断优先级寄存器,用户可用软件设定用软件设定 相应位为相应位为1 1,对应的中断源被设置为,对应的中断源被设置为高优先级高优先级,相应位为相应位为0 0,对应的中断源被设置为低优先级,对应的中断源被设置为低优先级 系统复位时,均为低优先级系统复位时,均为低优先级 PSPT1PX1PT0PX0 IP B8H 76543210对同时发生多个中断申请时:对同时发生多个中断申请时:不同优先级的中断同时申请不同优先级的中断同时申请( (很难遇到很难遇到) ) 先高后低先高后低相同优先级的中断同时申请相同优先级的中断同时申请( (很难遇到很难遇到) ) 按序执行按序执行正处理低优先级中断又接到高级别中断正处理低优先级中断又接到高级别中断 高打断低高打断低正处理高优先级中断又接到低级别中断正处理高优先级中断又接到低级别中断 高不理低高不理低中断优先级处理原则中断优先级处理原则自然优先级自然优先级:nINT0 高高nT0nINT1nT1nRI/TI 低低CPU正在执行正在执行低中断源低中断源高中断源高中断源RETIRETI寄存器名称D7D6D5D4D3D2D1D0TCON(88H) TF1TF0IE1IT1IE0IT0定时器控制寄存器位地址8FH8EH8DH8CH8BH8AH89H88HSCON(98H)TIRI串行口控制寄存器位地址9FH9EH9DH9CH9BH9AH99H98HIE(A8H)EAESET1 EX1 ET0 EX0中断允许寄存器位地址AFHACHABHAAHA9HA8HIP(B8H)PSPT1 PX1 PT0 PX0中断优先级寄存器位地址BCHBBHBAHB9HB8H中断控制寄存器汇总中断控制寄存器汇总 例如例如, , 某软件中对寄存器某软件中对寄存器IEIE、 IPIP设置设置如下如下: :MOV IE,#00HMOV IE,#00H MOV IE, MOV IE, 8FH8FH(10001111B)(10001111B) MOV IP, MOV IP, 06H06H(00000110B)(00000110B) SETB EA; SETB EX0;SETB ET0;SETB SETB EA; SETB EX0;SETB ET0;SETB EX1;SETB ET1;CLR ESEX1;SETB ET1;CLR ES中断设计举例中断设计举例则此时该系统中则此时该系统中: : uCPUCPU中断允许中断允许; ; u允许外部中断允许外部中断0 0、外部中断、外部中断1 1、定时器、定时器 / /计数器计数器0 0、定时器、定时器/ /计数器计数器1 1提出的中断提出的中断申请申请; ; u允许中断源的中断优先次序为允许中断源的中断优先次序为: : 定时器定时器/ /计数器计数器00外部中断外部中断11外部中断外部中断00定时器定时器/ /计数器计数器1 1。 n在中断服务程序编程时在中断服务程序编程时, ,首先要对中断首先要对中断系统进行初始化系统进行初始化, ,也就是对几个特殊功也就是对几个特殊功能寄存器的有关控制位进行赋值。能寄存器的有关控制位进行赋值。n初始化的内容包括:初始化的内容包括: (1)(1)开总中断和相应中断源的中断开总中断和相应中断源的中断 (2)(2)设置所用中断源的优先级设置所用中断源的优先级; ; (3) (3)若是外部中断若是外部中断, ,则应规定是低电平触则应规定是低电平触发还是下降沿触发。发还是下降沿触发。 中断初始化中断初始化例例1:若规定外部中断:若规定外部中断1为电平触发方式为电平触发方式,高优先级高优先级,试写出有关的初始化程序。试写出有关的初始化程序。 SETB EA ;开中断开中断 SETB EX1 ;允许外中断允许外中断1中断中断 SETB PX1 ;外中断外中断1定为高优先级定为高优先级 CLR IT1 ;电平触发电平触发例例2:使用外部中断:使用外部中断0(INT0)和外部)和外部中断中断1(INT1),), INT1为高优先级,为高优先级,电平触发方式,电平触发方式, INT0为低优先级,下为低优先级,下降沿触发方式。降沿触发方式。 则初始化程序如下:则初始化程序如下:MOV IP, #04HMOV TCON, #01HMOV IE, #85H MOV IP, #04HMOV TCON, #01HSETB EASETB EX0SETB EX1 或使用位操作指令如下:或使用位操作指令如下:中断处理过程中断处理过程中断处理过程分为三个阶段:中断处理过程分为三个阶段:中断响应、中中断响应、中断处理和中断返回。断处理和中断返回。v 中断响应中断响应v 中断处理中断处理( (又称中断服务又称中断服务) )v 中断返回中断返回v 中断请求的撤除中断请求的撤除 中断响应中断返回中断响应条件中断响应条件: : 有中断源发出中断请求。有中断源发出中断请求。 中断总允许位中断总允许位EA = 1。 申请中断的中断源允许。申请中断的中断源允许。满足以上基本条件,满足以上基本条件,CPU一般会响应中断。一般会响应中断。a aCPUCPU正在响应同级或高优先级的中断。正在响应同级或高优先级的中断。b b当前指令未执行完。当前指令未执行完。c c正在执行正在执行RETIRETI中断返回指令或访问专用寄中断返回指令或访问专用寄存器存器IEIE和和IPIP的指令。的指令。 但若有下列任何一种情况存在,则中断响应会受但若有下列任何一种情况存在,则中断响应会受到阻断。到阻断。一、中断响应过程一、中断响应过程 CPU CPU在每个机器周期的在每个机器周期的S5P2S5P2期间期间采样中断请求信号。采样中断请求信号。1.1.采样:采样: 如果有中断请求,将中断请求信如果有中断请求,将中断请求信号锁定到相应的请求标志位(号锁定到相应的请求标志位(TCONTCON中)。中)。2.2.锁定:锁定: TF1 TF0 IE1 IT1 IE0 IT0 在在S6P2S6P2状态按一定的顺序(状态按一定的顺序(INT0INT0、T0T0、 INT1INT1、 T1T1、 RI/TIRI/TI)查询请求)查询请求标志,并将有效的中断请求按优先级标志,并将有效的中断请求按优先级次序排好。次序排好。3.3.查询:查询: 如果查询到某标志位为如果查询到某标志位为“1 1” (在(在TCONTCON中),硬件自动产生一条中),硬件自动产生一条LCALLLCALL指令,转到相应的中断入口地指令,转到相应的中断入口地址(也称中断向量或中断矢量)。址(也称中断向量或中断矢量)。4.4.产生产生LCALLLCALL指令:指令:程序存储器程序存储器ROMROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安排的中断服务子程序起始地址上去!中断源中断源 入口地址入口地址nINT0 0003HnT0 000BHnINT1 0013HnT1 001BHnRI/TI 0023H特别注意:特别注意:这些工作是硬件自动完成的!这些工作是硬件自动完成的! 如:如:ORG 0003HLJMPINTT0INTT0: 中断服务子程序中断服务子程序 RETI5.5.中断入口地址安排跳转指令:中断入口地址安排跳转指令:二、中断处理二、中断处理中断服务程序从中断子程序中断服务程序从中断子程序入入口地址口地址开始执行,直到返回指开始执行,直到返回指令令RETI为止,这个过程称为为止,这个过程称为中中断处理断处理(或中断服务或中断服务)。中断服务子程序一般包括两部中断服务子程序一般包括两部分内容,分内容,一是一是保护和恢复现场保护和恢复现场,二是二是处理中断源的请求处理中断源的请求。中断响应入口地址入口地址RETI中断处理中断处理INTT0: PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务 POP PSW POP DPL POP DPH POP ACC RETI保护现场恢复现场三、中断返回三、中断返回 中断返回是指中断服中断返回是指中断服务完后,计算机返回到务完后,计算机返回到原来暂停的位置原来暂停的位置( (即断即断点点) ),继续执行原来的程,继续执行原来的程序。序。 中断返回由专门的中中断返回由专门的中断返回指令断返回指令RETIRETI来实现。来实现。中断响应中断返回 RETI RETI指令功能:把断指令功能:把断点地址取出,送回到程点地址取出,送回到程序计数器序计数器PCPC中去。另外,中去。另外,它还通知中断系统已完它还通知中断系统已完成中断处理,将清除优成中断处理,将清除优先级状态触发器。先级状态触发器。 特别注意:特别注意:不能用不能用RETRET指令代替指令代替RETIRETI指令指令!中断响应中断返回程序存储器程序存储器ROMROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH包含T0中断服务子程序的程序结构:ORG 0000HORG 0000HAJMP MAINORG 000BHORG 000BHAJMP INTT0ORG 0100HORG 0100HMAIN: . . .INTT0:. . . RETI ENDAJMP MAINAJMP INTT0 中断请求的撤销中断请求的撤销外中断包括:外中断包括:边沿触发方式边沿触发方式 和电平触发方式和电平触发方式 一、外部中断的撤销一、外部中断的撤销1.边沿触发方式边沿触发方式 (自动撤销)自动撤销)中断响应完由硬件自动将中断标志位(中断响应完由硬件自动将中断标志位(IE0或或IE1 )清)清0。电平触发外部中断电平触发外部中断撤除方法较复杂。撤除方法较复杂。 因为在电平触发方式中,因为在电平触发方式中,CPUCPU响应中断时不会响应中断时不会自动清除自动清除IE1IE1或或IE0IE0标志,所以在响应中断后应立标志,所以在响应中断后应立即撤除即撤除INT0INT0或或INT1INT1引脚上的低电平。引脚上的低电平。 在硬件上,在硬件上,CPUCPU对对INT0INT0和和INT1INT1引脚的信号不能控引脚的信号不能控制,所以这个问题要通过硬件,再配合软件来解制,所以这个问题要通过硬件,再配合软件来解决。决。2.电平触发方式电平触发方式图 撤除外部中断请求的电路DSDCLK外中断0请求信号8031P1.0INT0Q当当CPU响应中断后,可在中断服务程序中采用响应中断后,可在中断服务程序中采用两条指令:两条指令: CLR P1.0 SETB P1.0(或(或 ANL P1,#0FEH ORLP1,#01H )来撤除外部中断请求。来撤除外部中断请求。即:即:定时中断标志位(定时中断标志位(TFTF0 0或或TFTF1 1 )清)清0 0 (中断响应完由硬件自动清中断响应完由硬件自动清0 0。)二、定时中断的撤销(自动撤销)二、定时中断的撤销(自动撤销)即:即:串行中断标志位(串行中断标志位(TITI或或RI RI )清)清0 0。 三、串行中断的撤销三、串行中断的撤销 中断响应后,还需测试这两个标志位的状中断响应后,还需测试这两个标志位的状态,以判定是接收操作还是发送操作,然后态,以判定是接收操作还是发送操作,然后才能清除。才能清除。 串行中断请求的撤销串行中断请求的撤销使用使用软件软件方法方法,在中,在中断服务子程序中进行。断服务子程序中进行。 n在中断服务程序编程时在中断服务程序编程时, ,首先要对首先要对中断系统进行初始化中断系统进行初始化, ,也就是对几个特也就是对几个特殊功能寄存器的有关控制位进行赋值。殊功能寄存器的有关控制位进行赋值。具体来说具体来说, ,就是要完成下列工作:就是要完成下列工作:n (1)(1)开中断和允许中断源中断开中断和允许中断源中断n (2)(2)确定各中断源的优先级确定各中断源的优先级; ;n (3) (3)若是外部中断若是外部中断, ,则应规定是电平触则应规定是电平触发还是边沿触发。发还是边沿触发。中断程序举例中断程序举例 例例1:若规定外部中断:若规定外部中断1为边沿触发方式为边沿触发方式, 在中在中断服务程序中将寄存器断服务程序中将寄存器B的内容左环移一位。的内容左环移一位。试编写主程序与中断服务程序。试编写主程序与中断服务程序。ORG 0000H LJMP MAIN ORG 0013HLJMP INTT1 ;中断服务程序转至中断服务程序转至INTT1处处 MAIN:SETB EA ;开中断开中断 SETB EX1 ;允许外中断允许外中断1中断中断 SETB IT1 ;边沿触发边沿触发 MOV B,0FEH ;设设B的初值的初值 SJMP $ ;暂停等待中断暂停等待中断INTT1: MOV A,B ;AB RL A ;左环移一位左环移一位 MOV B,A ;回送回送 (MOV P1,A) ;输出到输出到P1口口 RETI ;中断返回中断返回此例的实际意义:在此例的实际意义:在INT1INT1引脚接一个脉引脚接一个脉冲按钮,每按一下按钮就申请一次中断冲按钮,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的,中断服务则是:依次点亮八盏灯中的一盏。一盏。P1.0P1.0P1.7P1.7INT1INT1300 ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1 例例2:2:当外中断当外中断0 0响应时,由响应时,由P1.2P1.2口输出口输出点亮灯点亮灯, ,当外中断当外中断1 1响应时,由响应时,由P1.2P1.2口输口输出熄灭灯。出熄灭灯。ORG0030HMAIN: SETBEASETBEX0 SETB EX1SETBIT0SETB IT1 SJMP$INTT0: CLR P1.2 RETIINTT1: SETB P1.2 RETI END ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1 例例3:3:无中断时,灯全亮,当外中断无中断时,灯全亮,当外中断0 0响响应时,低四位灯亮应时,低四位灯亮, ,当外中断当外中断1 1响应时,响应时,高四位灯亮。高四位灯亮。ORG 0030HMAIN:MOVSP,#60H MOVP1,#00HSETBEASETBEX0 SETB EX1SETBIT0SETB IT1 SJMP $INTT0: PUSH P1MOV P1,#0F0HPOP P1 RETIINTT1: PUSH P1 MOV P1,#0FH POP P1 RETI END1.1.无中断时,灯循环亮,当外中断无中断时,灯循环亮,当外中断0 0响响应时,低四位灯亮应时,低四位灯亮, ,当外中断当外中断1 1响应时,响应时,高四位灯亮。高四位灯亮。思考思考: ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1 ORG0100HMAIN: MOVP1,#FEHMOVR7,#07HMOVSP,#60HLOOP: MOV A,P1 RL A MOV P1,ADJNZ R7,LOOPSETBIT0SETBEASETBEX0 SETB EX1SJMP$ORG 1000HINTT0: PUSH P1MOV P1,#0F0HACALL DELAY POP P1 RETIINTT1: PUSH P1 MOV P1,#0FH ACALL DELAYPOP P1 RETI END注明注明:DELAY:DELAY为延时程序。为延时程序。2.2.无中断时,奇偶灯每隔无中断时,奇偶灯每隔1S1S交替闪烁亮,交替闪烁亮,当外中断当外中断0 0响应时,低四位灯亮响应时,低四位灯亮, ,当外中当外中断断1 1响应时,高四位灯亮。响应时,高四位灯亮。思考思考:3.3.无中断时,灯全亮,当外中断无中断时,灯全亮,当外中断0 0响应响应时,灯左移亮时,灯左移亮, ,当外中断当外中断1 1响应时,灯右响应时,灯右移亮。(设初值为移亮。(设初值为7FH7FH)思考思考: ORG0000H AJMP MAINORG 0003H LJMP INTT0ORG 0013H LJMP INTT1 ORG 0100HMAIN:MOVSP,#60H MOV R7,#7FHMOVR6,#7FHSETBIT0SETBEASETBEX0 SETB EX1LP: MOVP1,#00HSJMPLPORG 1000HINTT0: PUSH P1LOOP: MOV A,R6 RL A MOV R6,A MOV P1,R6 POP P1 RETIORG 2000HINTT1: PUSH P1LOOP: MOV A,R7 RR A MOV R7,A MOV P1,R7 POP P1 RETI END1.1.无中断时,灯全亮,当外中断无中断时,灯全亮,当外中断0 0响应响应时,灯每隔时,灯每隔1S1S左移循环亮左移循环亮, ,当外中断当外中断1 1响响应时,灯每隔应时,灯每隔1S1S右移循环亮。右移循环亮。实验实验:补充:外部中断源扩展补充:外部中断源扩展INTOINTOINT1INT1P1.0P1.0P1.1P1.1P1.2P1.2A AB BC CD D+5V+5VINT1服务程序服务程序:INT1:PUSH PSW PUSH ACC JNB P1.0,PIT0 JNB P1.1,PIT1 JNB P1.2,PIT2INTR:POP ACC POP PSW RETIPIT0: AJMP INTRPIT1: AJMP INTRPIT2: AJMP INTR