收藏 分销(赏)

定时器与中断.ppt

上传人:xrp****65 文档编号:14026881 上传时间:2026-06-09 格式:PPT 页数:50 大小:417KB 下载积分:10 金币
下载 相关
定时器与中断.ppt_第1页
第1页 / 共50页
定时器与中断.ppt_第2页
第2页 / 共50页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,5,章,单片机原理与接口技术,中断的基本概念,80C51,中断源,中断控制寄存器,中断处理过程,中断优先控制和中断嵌套,中断系统的应用,80C51,定时,/,计数器,定时,/,计数器控制寄存器,定时,/,计数器工作方式,定时,/,计数器的应用,第,5,章 中断系统和定时,/,计数器,本章要点:,5-1,80C51,中断系统,CPU,暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等处理完毕后再返回执行原来中止的程序,叫做中断。,为什么要设置中断?,提高,CPU,工作效率,具有实时处理功能,具有故障处理功能,实现分时操作,一,.,中断概述,什么叫中断?,INT0,:,外部中断,0,,中断请求信号由,P3.2,输入。,INT1,:,外部中断,1,,中断请求信号由,P3.3,输入。,T0,:,定时,/,计数器,0,溢出中断,,对外部脉冲计数由,P3.4,输入。,T1,:,定时,/,计数器,1,溢出中断,,对外部脉冲计数由,P3.5,输入。,串行中断,:,包括,串行接收中断,RI,和,串行发送中断,TI,。,二,.,中断源和中断控制寄存器,中断源,中断源是指能发出中断请求,引起中断的装置或事件。,80C51,单片机的中断源共有,5,个,其中,2,个为外部中断源,,3,个为内部中断源:,中断请求:定时和外中断控制寄存器,TCON,;,串行控制寄存器,SCON,;,中断允许控制寄存器,IE,;,中断优先级控制寄存器,IP,。,中断控制寄存器,80C51,单片机中涉及中断控制的有,3,个方面,4,个特殊功能寄存器,:,INT0,、,INT1,、,T0,、,T1,中断请求标志放在,TCON,中,串行中断请求标志放在,SCON,中。,中断请求控制寄存器,(88H),TCON,D7,D6,D5,D4,D3,D2,D1,D0,位名称,TF1,TF0,IE1,IT1,IE0,IT0,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,功能,T1,中断,标志,T0,中断,标志,中断,标志,触发,方式,中断,标志,触发,方式,TCON,的结构、位名称、位地址和功能如下:,TCON,位功能,:,TF1,T1,溢出中断请求标志,T1,计数溢出后,,TF1=1,TF0,T0,溢出中断请求标志,T0,计数溢出后,,TF0=1,IE1,外中断中断请求标志,当,P3.3,引脚信号有效时,,IE1=1,IE0,外中断中断请求标志,当,P3.2,引脚信号有效时,,IE0=1,IT1,外中断触发方式控制位,IT1=1,,,边沿触发方式;,IT1=0,,,电平触发方式。,IT0,外中断触发方式控制位,其意义和功能与,IT1,相似。,串行控制寄存器,SCON(98H),TCON,D7,D6,D5,D4,D3,D2,D1,D0,位名称,TI,RI,位地址,99H,98H,功能,串行发送,中断标志,串行接收,中断标志,TI,串行口发送中断请求标志,RI,串行口接收中断请求标志,80C51,对中断源的开放或关闭由中断允许控制寄存器,IE,控制。,IE,在特殊功能寄存器中,字节地址,A8H,,,位地址分别是,A8H,AFH,。,IE,控制,CPU,对中断源总的开放或禁止以及每个中断源是否允许中断。,中断允许控制寄存器,IE,(,A8H),IE,的结构、位名称和位地址如下:,IE,D7,D6,D5,D4,D3,D2,D1,D0,位名称,EA,ES,ET1,EX1,ET0,EX0,位地址,AFH,ACH,ABH,AAH,A9H,A8H,中断源,CPU,串行口,T1,T0,EA,CPU,中断允许控制位,EA=1,,,CPU,开中;,EA=0,,,CPU,关中,且屏蔽所有,5,个中断源。,EX0,外中断,INT0,中断允许控制位,EX0=1,,,INT0,开中;,EX0=0,,,INT0,关中。,EX1,外中断,INT1,中断允许控制位,EX1=1,,,INT1,开中;,EX1=0,,,INT1,关中。,ET0,定时,/,计数器,T0,中断允许控制位,ET0=1,,,T0,开中;,ET0=0,,,T0,关中。,ET1,定时,/,计数器,T1,中断允许控制位,ET1=1,,,T1,开中;,ET1=0,,,T1,关中。,ES,串行口中断,(,包括串发、串收,),允许控制位,ES=1,,,串行口开中;,ES=0,,,串行口关中。,说明,:,80C51,对中断实行两级控制,总控制位是,EA,,,每一中断源还有各自的控制位。首先要,EA=1,,,其次还要自身的控制位置,“,1,”,。,(,3,),中断优先寄存器,IP,(,B8H,),IP,在特殊功能寄存器中,字节地址为,B8H,,,位地址分别是,B8H,BFH,,,IP,用来锁存各中断源优先级的控制位,其格式如图所示。,三,.,中断处理过程,中断处理过程大致可分为四步:,中断请求、中断响应、中断服务、中断返回,中断请求,中断源发出中断请求信号,相应的中断请求标志位,(,在中断控制寄存器,TCON,和,SCON,中,),置,“,1,”,。,中断响应,CPU,查询(检测)到某中断标志为,“,1,”,,在满足中断响应条件下,响应中断。,中断响应条件,:,该中断已经,“,开中,”,;,CPU,此时没有响应同级或更高级的中断;,当前正处于所执行指令的最后一个机器周期;,正在执行的指令不是,RETI,或者是访向,IE,、,IP,的指令,,否则必须再另外执行一条指令后才能响应。,中断响应操作,CPU,响应中断后,进行下列操作:,保护断点地址;,撤除该中断源的中断请求标志;,关闭同级中断;,将相应中断的入口地址送入,PC,;,80C51,五个中断入口地址,:,INT0,:,0003H,;,T0,:,000BH,;,INT1,:,0013H,T1,:,001BH,;,串行口:,0023H,执行中断服务程序,中断服务程序应包含以下几部分:,保护现场,执行中断服务程序主体,完成相应操作,恢复现场,中断返回,在中断服务程序最后,必须安排一条中断返回指令,RETI,,当,CPU,执行,RETI,指令后,自动完成下列操作:,恢复断点地址。,开放同级中断,以便允许同级中断源请求中断。,四,.,中断响应等待时间,若排除,CPU,正在响应同级或更高级的中断情况,中断响应等待时间为,:,3,8,个机器周期,五,.,中断请求的撤除,中断源发出中断请求,相应中断请求标志置,“,1,”,。,CPU,响应中断后,必须清除中断请求,“,1,”,标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。,对定时,/,计数器,T0,、,T1,中断,外中断边沿触发方式,,CPU,响应中断时就用硬件自动清除了相应的中断请求标志。,对外中断电平触发方式,需要采取软硬结合的方法消除后果。,对串行口中断,用户应在串行中断服务程序中用软件清除,TI,或,RI,。,六,.,中断优先控制和中断嵌套,中断优先控制,80C51,中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之间的中断优先权。,其从高到低的顺序,为:,INT0,、,T0,、,INT1,、,T1,、,串行口。,中断优先级是可编程的,,而,中断优先权是固定的,,不能设置,仅用于同级中断源同时请求中断时的优先次序。,80C51,中断优先控制的基本原则:,高优先级中断可以中断正在响应的低优先级中断,反之则不能。,同优先级中断不能互相中断。,同一中断优先级中,若有多个中断源同时请求中断,,CPU,将先响应优先权高的中断,后响应优先权低的中断。,中断嵌套,当,CPU,正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,,CPU,可以“中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中断嵌套。,中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。,中断嵌套结构类似与调用子程序嵌套,,不同的是,:,子程序嵌套是在程序中事先按排好的;中断嵌套是随机发生的。,子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。,七,.,中断系统的应用,中断初始化,设置堆栈指针,SP,定义中断优先级,定义外中断触发方式,开放中断,安排好等待中断或中断发生前主程序应完成的操作内容。,中断服务主程序,中断服务子程序内容要求:,在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。,根据需要保护现场。,中断源请求中断服务要求的操作。,恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。,中断返回,最后一条指令必须是,RETI,。,【,例,】,出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(,P3.2,),引脚输入,行驶里程为轮胎周长,运转圈数,设轮胎周长为,2m,,,试实时计算出租车行驶里程(单位米),数据存,32H,、,31H,、,30H,。,中断系统应用举例,解:编程如下:,ORG 0000H,;,复位地址,LJMP STAT,;,转初始化,ORG 0003H,;,中断入口地址,LJMP INT,;,转中断服务程序,ORG 0100H,;,初始化程序首地址,STAT:MOV SP,#60H,;,置堆栈指针,SETB ITO,;,置边沿触发方式,MOV IP,#01H,;,置高优先级,MOV IE,#81H,;,开中,MOV 30H,#0,;,里程计数器清,0,MOV 31H,#0,;,MOV 32H,#0,;,LJMP MAIN,;,转主程序,并等待中断,ORG 0200H;,中断服务子程序首地址,INT:PUSH Acc;,保护现场,PUSH PSW;,MOV A,30H;,读低,8,位计数器,ADD A,#2;,低,8,位计数器加,2m,MOV 30H,A;,回存,CLR A;,ADDC A,31H;,中,8,位计数器加进位,MOV 31H,A;,回存,CLR A;,ADDC A,32H;,高,8,位计数器加进位,MOV 32H,A;,回存,POP PSW;,恢复现场,POP Acc;,RETI;,中断返回,【,例,】,现有,5,个外中断源,EX1,、,EX20,、,EX21,、,EX22,和,EX23,,,高电平时表示请求中断,要求执行相应中断服务程序,试编制程序。,解:,ORG0000H,;,复位地址,LJMP,MAIN,;,转主程序,ORG0003H,;,中断入口地址,LJMP,PINT0,;,转中断服务程序,ORG0013H,;,中断入口地址,LJMP,PINT1,;,转中断服务程序,ORG0100H,;,主程序首地址,MAIN:MOVSP,#60H,;,置堆栈指针,ORLTCON,#05H,;,置,INT0,、,INT1,为边沿触发方式,SETBPX0,;,置为高优先级,MOVIE,#0FFH,;,全部开中,;,主程序内容,ORG 1000H,;,中断服务程序首地址,PINT0:PUSHAcc,;,中断,保护现场,LCALL WORK1,;,调用,EX1,服务子程序,POPAcc,;,恢复现场,RETI,;,中断返回,ORG 2000H,;,中断服务程序首地址,PINT1:CLR EA,;CPU,禁中,PUSH Acc,;,中断保护现场,PUSH DPH,;,PUSH DPL,;,SETB EA,;CPU,开中,JB P1.0,LWK20,;P1.0=1,EX20,请求中断,JB P1.1,LWK21,;P1.1=1,EX21,请求中断,JB P1.2,LWK22,;P1.2=1,EX22,请求中断,LCALL WORK23,;P1.3=1,调用,EX23,服务子,LRET:CLR EA,;CPU,禁中,POP DPL,;,恢复现场,POP DPH,;,POP Acc,;,SETB EA,;CPU,开中,RETI,;,中断返回,LWK20,:LCALL WORK20,;P1.0=1,调用,EX20,服务子程序,SJMP LRET,;,转中断返回,LWK21,:LCALL WORK21,;P1.1=1,调用,EX21,服务子程序,SJMP LRET,;,转中断返回,LWK22,:LCALL WORK22,;P1.2=1,调用,EX22,服务子程序,SJMP LRET,;,转中断返回,定时,/,计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现,定时控制,、,延时,、,频率测量,、,脉宽测量,、,信号发生,、,信号检测,等。此外,定时,/,计数器还可作为串行通信中波特率发生器。,5-2,80C51,定时,/,计数器,80C51,单片机内部有两个定时,/,计数器,T0,和,T1,,,其核心是计数器,基本功能是加,1,。,对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。,计数器由二个,8,位计数器组成。,定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加,1,计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。,定时,/,计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的,1/24,。,一,.,定时,/,计数器概述,TCON,低,4,位与外中断 、,有关,已在,中断中叙述。,高,4,位与定时,/,计数器,T0,、,T1,有关。,TF1:,定时,/,计数器,T1,溢出标志。,TF0:,定时,/,计数器,T0,溢出标志。,TR1:,定时,/,计数器,T1,运行控制位。,TR1=1,T1,运行,;TR1=0,T1,停。,TR0:,定时,/,计数器,T0,运行控制位。,TR0=1,T0,运行,;TR0=0,T0,停。,TCON,的字节地址为,88H,,,每一位有位地址,均可位操作。,定时,/,计数器控制寄存器,TCON,二,.,定时,/,计数器的控制寄存器,TCON,T1,中断标志,T1,运行标志,T0,中断标志,T0,运行,标志,INT1,中断,标志,INT1,触发,方式,INT0,中断,标志,INT0,触发,方式,位名称,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,高,4,位控制,T1,低,4,位控制,T0,门控位,计数,/,定时,方式选择,工作方式,选择,门控位,计数,/,定时,方式选择,工作方式,选择,G,C/T,M1,M0,G,C/T,M1,M0,TMOD,用于设定定时,/,计数器的工作方式,低,4,位用于控制,T0,,,高,4,位用于控制,T1,。,定时,/,计数器工作方式控制寄存器,TMOD,(,89H),M1M0,工作方式选择位,M1M0,工作方式,功能,00,方式,0,13,位计数器,01,方式,1,16,位计数器,10,方式,2,两个,8,位计数器,初值自动装入,11,方式,3,两个,8,位计数器,仅适用,T0,C/T,计数,/,定时方式选择位,C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。,C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。,GATE,门控位,GATE=0,,,运行只受,TCON,中运行控制位,TR0/TR1,的控制。,GATE=1,,,运行同时受,TR0/TR1,和外中断输入信号,的双重控制。,只有当,INT0/INT1=1,且,TR0/TR1=1,T0/T1,才能运行。,注意:,TMOD,字节地址,89H,不能位操作,设置,TMOD,须用字节操作指令。,三,.,定时,/,计数器工作方式,工作方式,0,13,位,计数器,由,TL0,低,5,位和,TH0 8,位组成,,TL0,低,5,位计数满时不向,TL0,第,6,位进位,而是向,TH0,进位,,13,位计满溢出,,TF0,置,“,1,”,。,最大计数值,2,13,=8192,。,工作方式,1,16,位,计数器,,最大计数值为,2,16,=65536,。,工作方式,2,8,位,计数器,仅用,TL0,计数,,最大计数值为,2,8,=256,,计满溢出后,一方面进位,TF0,,,使溢出标志,TF0=1,;,另一方面,使原来装在,TH0,中的初值装入,TL0,。,优点:定时初值可自动恢复,;,缺点:计数范围小。,适用于需要重复定时,而定时范围不大的应用场合。,工作方式,3,方式,3,仅适用于,T0,,,T1,无方式,3,。,T0,方式,3,在方式,3,情况下,T0,被拆成二个独立的,8,位计数器,TH0,、,TL0,。,TL0,使用,T0,原有的控制寄存器资源,:,TF0,TR0,GATE,C/T,INT0,组成一个,8,位的定时,/,计数器;,TH0,借用,T1,的中断溢出标志,TF1,运行控制开关,TR1,只能对片内机周脉冲计数,组成另一个,8,位定时器,(,不能用作计数器,),。,T0,方式,3,情况下的,T1,T1,由于其,TF1,、,TR1,被,T0,的,TH0,占用,计数器溢出时,只能将输出信号送至串行口,即,用作串行口波特率发生器,。,其中,:N,与工作方式有关,:,方式,0,时,N=,13,;,方式,1,时,N=,16,;,方式,2,、,3,时,N=,8,。,机周时间与主振频率有关,:,机周时间,=12/fosc,fosc,=,12MHZ,时,,,1,机周,=,1,S,;,fosc,=,6MHZ,时,,,1,机周,=,2,S,。,四,.,定时,/,计数器的应用,计算定时,/,计数初值,80C51,定时,/,计数初值计算公式:,解:,工作方式,0,:,2,13,500,S/2,S=8192-250=7942=1F06H,1F06H,化成二进制:,1F06H=0001 1111 0000 0110B,=000,11111000,00110,B,其中:,低,5,位,00110,前添加,3,位,000,送入,TL0 TL0=000,00110,B=06H,;,高,8,位,11111000B,送入,TH0,TH0=,11111000,B=F8H,。,【,例,】,已知晶振,6MHz,,,要求定时,0.5mS,,,试分别求出,T0,工作于方式,0,、方式,1,、方式,2,、方式,3,时的定时初值。,工作方式,1,:,T0,初值,=2,16,-500,s,/2,s,=65536,250=65286=FF06H,TH0=FFH,;,TL0=06H,。,工作方式,2,:,T0,初值,=2,8,-500,s,/2,s,=256-250=6,TH0=06H,;,TL0=06H,。,工作方式,3,:,T0,方式,3,时,被拆成两个,8,位定时器,定时初值可分别计算,计算方法同方式,2,。两个定时初值一个装入,TL0,,,另一个装入,TH0,。,因此:,TH0=06H,;,TL0=06H,。,从上例中看到,方式,0,时计算定时初值比较麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式,1,,且方式,0,计数范围比方式,1,小,,方式,0,完全可以用方式,1,代替,方式,0,与方式,1,相比,无任何优点,。,定时,/,计数器应用步骤,合理选择定时,/,计数器工作方式,计算定时,/,计数器定时初值,(,按上述公式计算,),编制应用程序,定时,/,计数器的初始化,包括定义,TMOD,、,写入定时初值、设置中断系统、启动定时,/,计数器运行等。,正确编制定时,/,计数器中断服务程序,注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在方式,2,,则应在中断服务程序中重装定时初值。,【,例,】,试用,T1,方式,2,编制程序,在,P1.0,引脚输出周期为,400,S,的脉冲方波,已知,fosc=12MHZ,。,解:,计算定时初值,T1,初值,=2,8,-200,s,/1,s,=256,200=56=38H,TH1=38H,;,TL1=38H,设置,TMOD,:,0,0,10,0000,B=20H,T0,控制位,与,T1,无关,T1,方式,2,T1,定时器,T1,启动与 无关,编制程序,如下:,ORG0000H,;,复位地址,LJMPMAIN,;,转主程序,ORG001BH,;T1,中断入口地址,LJMPIT1,;,转,T1,中断服务程序,ORG0100H,;,主程序首地址,MAIN:,MOVTMOD,#20H,;,置,T1,定时器方式,2,MOVTL1,#38H,;,置定时初值,MOVTH1,#38H,;,置定时初值备份,MOVIP,#00001000B,;,置,T1,高优先级,MOVIE,#0FFH,;,全部开中,SETBTR1,;T1,运行,SJMP$,;,等待,T1,中断,ORG 0200H,;T1,中断服务程序首地址,IT1:,CPL P1.0,;,输出波形取反首地址,RETI,;,中断返回,【,课堂练习题,】,参照以上例题工作方式,2,,按下列要求分别修改程序:,脉冲方波从,P3.0,输出;,fosc=6MHz,;,脉冲方波脉宽为,100,s,;,用定时,/,计数器,T0,;,【,例,】,设,MCS-51,单片机系统时钟频率,CLK,为,6MH,Z,,,请编出利用定时,/,计数器,T0,在,P,1.0,引脚上产生周期为,2,秒,占空比为,50%,的方波信号的程序,(,1,)主程序,任务:,1,),T0,工作方式的设定:,选择方式,1,(,16,位方式),(最大定时,131ms,),2,),定时常数的设定:,TC=2,16,-100ms/2s=15536=3CB0H,即:,TH0,应装,3CH,,,TL0,应装,B0H,。,3,),中断管理:允许,T0,中断,开放总中断,即:,IE,应装,10000010B,。,4,),启动定时器,T0,:,SETBTR0,5,),设置软件计数器初值:(如使用,R7,),即,R7,应装,0AH,6,),动态停机:,SJMP$,主程序如下:,MAIN,:,MOV TMOD,,,#01H,;,设定,T0,为方式,1,MOVTH0,,,#3CH,;,装入定时常数高,8,位,MOVTL0,,,#0B0H,;,装入定时常数低,8,位,MOV IE,,,#82H,;,开放,T0,中断,SETB TR0,;,启动,T0,MOV R7,,,#0AH,;,设置软件计数器,SJMP$,(,2,)中断服务程序,任务:,1,)恢复,T0,常数;,2,)软件计数器减,1,;,3,)判断软件计数器是否为,0,。为,0,时,改变,P,1.0,状态,并恢复软件计数器初值;不为,0,时中断返回。程序如下:,TOINT,:,MOV TL0,,,#0B0H,;,恢复定时常数,MOV TH0,,,#3CH,;,DJNZ R7,,,NEXT,CPL P1.0,MOV R7,,,#0AH,NEXT,:,RETI,完整程序如下:,ORG 0000H,AJMP MAIN,ORG 000BH,AJMPTOINT,ORG 0030H,MAIN,:,MOVTMOD,,,#01H,MOV TH0,,,#3CH,MOVTL0,,,#0B0H,MOV IE,,,#82H,SETBTR0,MOV R7,,,#0AH,SJMP$,TOINT:MOV TL0,#0B0H,MOV TH0,#3CH,DJNZ R7,NEXT,CPL P1.0,MOV R7,#0AH,NEXT:RETI,END,【,例,】,已知晶振,12MHZ,,,参阅图,5-15,要求利用定时器,T0,使图中发光二极管,D,进行秒闪烁。,解:发光二极管进行秒闪烁。即一秒钟一亮一暗,亮,500ms,,暗,500 ms,。,晶振,12MHz,,,每机周,1,s,,,T0,方式,1,最大定时只能,65ms,余。,取,T0,定时,50ms,,,计数,10,次,即可实现,500ms,定时。,计算定时初值,T0,初值,=2,16,-50000,s,/1,s,=65536,50000=15536=3CB0H,TH0=3CH,;,TL0=B0H,。,设置,TMOD,:,0000,0,0,01,B=01H,T0,方式,1,T0,与 无关,T1,控制位,编制程序,如下:,ORG 0000H,;,复位地址,LJMP MAIN,;,转主程序,ORG 000BH,;T0,中断入口地址,LJMP IT0,;,转,T0,中断服务程序,ORG 0100H,;,主程序首地址,MAIN:MOV TMOD,#01H,;,置,T0,定时器方式,1,MOV TH0,#3CH,;,置,T0,初值,50mS,MOV TL0,#0B0H,;,MOV IE,#10000010B,;T0,开中,MOV R7,#0AH,;,置,50mS,计数器初值,SETB TR0,;T0,运行,SJMP$,;,等待中断,IT0:MOV TH0,#3CH,;,重置,T0,初值,50mS,MOV TL0,#0B0H,;,DJNZ R7,GORET,;,判,500mS,到否?,CPL P1.7,;500mS,到,输出取反,MOV R7,#0AH,;,恢复,50mS,计数器初值,GORET:RETI,【,例,】,已知,fosc,=6MHz,,,试编写,24,小时模拟电子钟程序,秒分时数分别存在,R1,、,R2,、,R3,中,可直接调用显示程序,DIR,。,解:,ORG 0000H,;,复位地址,LJMP,START,;,转,主程序,ORG 000BH,;T0,中断入口地址,LJMP IT0,;T0,中断,转,T0,中断服务子程序,IT0,ORG 1000H,;,主程序首地址,START:MOV R1,#0,;,秒计数器清,0,MOV R2,#0,;,分计数器清,0,MOV R3,#0,;,时计数器清,0,MOV R4,#0,;500,S,计数器清,0,MOV R5,#0,;100ms,计数器清,0,MOV TMOD,#02H,;,置,T0,定时器方式,2,MOV TL0,#06H,;,置,T0,定时初值,500,S,MOV TH0,#06H,;,用于自动恢复定时初值,SETB TR0,;,启动,T0,WAIT:LCALL DIR,;,显示时钟时分秒并等待中断,SJMP WAIT,;,循环显示,ORG2000H,;T0,中断服务子程序首地址,IT0:,INCR4,;500,S,计数器计数,CJNER4,#200,IT01,;,判,100ms,满否,?,IT01:,JCIT06,;,未满,100ms,转返回,MOV R4,#0,;,满,100ms,500,S,计数器清,0,INC R5,;100ms,计数器计数,CJNE R5,#10,IT02,;,判,1s,满否,?,IT02:,JCIT06,;,未满,1s,转返回,MOV R5,#0,;,满,1s,100ms,计数器清,0,INCR1,;,秒计数器加,1,CJNE R1,#60,IT03,;,判,60,秒满否,?,IT03:,JCIT06,;,未满,60,秒,转返回,MOVR1,#0,;,满,60,秒,秒计数器清,0,INCR2,;,分计数器加,1,CJNER2,#60,IT04,;,判,60,分满否,?,IT04:,JCIT06,;,未满,60,分,转返回,MOVR2,#0,;,满,60,分,分计数器清,0,INCR3,;,时计数器加,1,CJNER3,#24,IT05,;,判,24,小时满否,?,IT05:,JCIT06,;,未满,24,小时,转返回,MOVR3,#0,;,满,24,小时,时计数器清,0,IT06:,RETI,;,返回,解:利用定时,/,计数器,T0,扩展成外中断时须有两个条件:一是外部触发脉冲从,P3.4,输入,(,下降沿有效,),;二是将定时,/,计数器设置成计数临界状态,即定时初值为,FFH,,,再来一个脉冲即能溢出触发中断。,【,例,】,因外中断,INT0,、,INT1,已被占用,试利用定时,/,计数器,T0,扩展成外中断。,编程如下,:,ORG 0000H,;,复位地址,LJMP START,;,复位,转初始化程序,START,ORG 000BH,;T0,中断入口地址,LJMP IT0,;,转,T0,中断服务子程序,IT0,ORG 1000H,;,初始化程序首地址,START:,MOV SP,#60H,;,置堆栈,MOV TMOD,#06H,;,置,T0,计数器方式,2,MOV TH0,#0FFH,;,置,T0,初值,MOV TL0,#0FFH,;,SETB PT0,;,置,T0,为高优先级,MOV IE,#0FFH,;,全部开中,SETB TR0,;T0,启动,SJMP MAIN,;,转主程序,并等待,T0,中断,ORG 2000H,;T0,中断服务子程序首地址,IT0:,;T0,中断服务子程序,RETI,;,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服