《C的中断系统及定时计数器实用.pptx》由会员分享,可在线阅读,更多相关《C的中断系统及定时计数器实用.pptx(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023/2/211 CPU进行工作A时发生了事件B,请求CPU马上处理 CPU暂时中断当前工作A,转去处理事件B 事件B处理完后,回到工作A被中断的地方继续处理A工作第1页/共67页2023/2/212 中断系统需要解决的问题 (1)中断源:中断请求信号的来源。包括中断请求信号的产生及该信号怎样被CPU有效地识别。而且要求中断请求信号产生一次,只能被CPU接收处理一次,即不能一次中断申请被CPU多次响应。这就涉及到中断请求信号的及时撤除问题。(2)中断响应与返回:CPU采集到中断请求信号后,怎样转向特定的中断服务子程序及执行完中断服务子程序怎样返回被中断的程序继续正确地执行。中断响应与返回的
2、过程中涉及到CPU响应中断的条件、现场保护等问题。第2页/共67页2023/2/213(3)(3)优先级控制:一个计算机应用系统,特别是计算机实优先级控制:一个计算机应用系统,特别是计算机实时测控应用系统,往往有多个中断源,各中断源所要求的时测控应用系统,往往有多个中断源,各中断源所要求的处理具有不同的轻重、缓急程度。与人处理问题的思路一处理具有不同的轻重、缓急程度。与人处理问题的思路一样,希望重要紧急的事件先处理,而且如果当前处于正在样,希望重要紧急的事件先处理,而且如果当前处于正在处理某个事件的过程中,有更重要、更紧急的事件到来,处理某个事件的过程中,有更重要、更紧急的事件到来,就应当暂停
3、当前事件的处理,转去处理新事件。这就是中就应当暂停当前事件的处理,转去处理新事件。这就是中断系统优先级控制所要解决的问题。中断优先级的控制形断系统优先级控制所要解决的问题。中断优先级的控制形成了中断嵌套成了中断嵌套。第3页/共67页2023/2/214MCS-51单片机的中断系统结构执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回第4页/共67页2023/2/215 随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;实时响应。CPU能够及时处理
4、应用系统的随机事件,系统的实时性大大增强;可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。第5页/共67页2023/2/2165.1.2 80C51中断系统的结构中断系统的结构中断源中断源中断标志中断标志中断允许中断允许中断优先级中断优先级第6页/共67页2023/2/217 中断源5.1.2 80C51中断系统的结构外部中断0(INT0)外部中断1(INT1)T0溢出中断(TF0)T1溢出中断(TF1)串行口中断(RI或TI)80C51的中断系统有5个中断源(8052有6个),2个优先级,可实现二级中断嵌套。第7页/共67页2023/2/2181、外部中断0(P
5、3.2),可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。2、外部中断1(P3.3),可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。第8页/共67页2023/2/219 4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当
6、定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。第9页/共67页2023/2/2110 80C5180C51的中断系统的中断系统中断标志位中断标志位中断源中断源中断标志位中断标志位CPUCPUINT0IE0T0TF0INT1IE1T1TF1串口TI/RI第10页/共67页2023/2/2111(1)TCON的中断标志IT0(TCON.0),外部中断0触发方式控制位。当IT0=0时,为电平触发方式。当IT0=1时,为边沿触发
7、方式(下降沿有效)。IE0(TCON.1),外部中断0中断请求标志位。IT1(TCON.2),外部中断1触发方式控制位。IE1(TCON.3),外部中断1中断请求标志位。TF0(TCON.5),定时/计数器T0溢出中断请求标志位。TF1(TCON.7),定时/计数器T1溢出中断请求标志位。76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0字节地字节地址:址:88H第11页/共67页2023/2/2112触发方式设置及中断标志 76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0字节地址:字节地址:88H 电平方式(ITx=0),INTx引脚低电平时IE
8、x=0,响应中断后IEx不自动清0(INTx引脚状态)。边沿方式(ITx=1),INTx引脚负跳变时IEx=1,响应中断后IEx自动清0。外部中断标志IE1、IE0(用IEx表示)第12页/共67页2023/2/2113两种触发方式比较:电平方式时,INTx低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,INTx低电平必须撤除,否则中断返回之后将再次产生中断。边沿方式时,采样到有效下降沿后,在IEx中将锁存一个1。若CPU暂时不能响应,申请标志也不会丢失,直到响应时才清0。第13页/共67页2023/2/2114 溢出中断标志TF1、TF0(用TFx表示)溢出中断请求标志TFx,Tx启
9、动后就开始由初值进行加1计数,直至最高位产生溢出使TFx=1向CPU请求中断。CPU响应中断后TFx自动清0。第14页/共67页2023/2/2115RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。TI(SCON.1),串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。(2)SCON的中断标志76543210SCONTIRI字节地址:字节地址:98H第15页/共67页2023/2/211
10、680C51的中断系统的中断系统中断允许中断允许中断源中断源中断标志位中断标志位中断允许中断允许CPUCPUINT0IE0T0TF0INT1IE1T1TF1串口TI/RI5.1.3 80C51中断的控制第16页/共67页2023/2/2117 中断允许控制器IECPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。76543210IEEAESET1EX1ET0EX0字节地址:字节地址:A8HEX0(IE.0),外部中断0允许位;ET0(IE.1),定时/计数器T0中断允许位;EX1(IE.2),外部中断1允许位;ET1(IE.3),定时/计数器T1中断允许位;ES(I
11、E.4),串行口中断允许位;EA(IE.7),CPU中断允许(总允许)位。第17页/共67页2023/2/2118中断源中断源中断标志位中断标志位中断允许中断允许优先控制优先控制CPUCPUINT0IE0PX0T0TF0PT0INT1IE1PX1T1TF1PT1串口TI/RIPSMCS-51的中断系统中断优先级第18页/共67页2023/2/2119 中断优先级控制器IP80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。76543210IPPSPT1PX1PT0PX0字节地址:字节地址:B8H同一优先级的自然顺
12、序:自高至低:INT0、TO、INT1、T1、串口。PX0(IP.0),外部中断0优先级设定位;PT0(IP.1),定时/计数器T0优先级设定位;PX1(IP.2),外部中断1优先级设定位;PT1(IP.3),定时/计数器T1优先级设定位;PS(IP.4),串行口优先级设定位;第19页/共67页2023/2/2120 同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:第20页/共67页2023/2/2121 中断优先级遵循的原则几个中断同时申请,先响应高级的中断 正进行的中断服务,同级或低级中断不能对其中断,
13、但可以被高级中断所中断。为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。状态触发器的复位由中断返回指令RETI控制。第21页/共67页2023/2/2122 80C51中断系统的结构5个中断源、2个优先级第22页/共67页2023/2/21235.2 80C51单片机中断处理过程5.2.1 中断响应条件和时间 中断响应条件有中断请求 相应的中断允许位为1CPU开中断(即EA=1)遇下面情况之一将不被响应(此间中断条件失效,中
14、断丢失)正在处理同级或高级中断 当前查询周期不是所执行指令的最后一个机器周期 正在执行RETI或访问IE或IP 的指令 第23页/共67页2023/2/2124 中断响应时间中断响应至少需要3个完整的机器周期(38个)!受阻时要附加35个机器周期(无同级或高级中断正进行)查询周期不是当前指令的最后机器周期(如MUL,+3)查询周期恰逢RETI类指令(且后跟MUL指令+5)第24页/共67页2023/2/21255.2.2 中断响应过程 CPU响应中断过程将相应优先级状态触发器置1(阻断后来同级或低级中断)执行硬件LCALL指令(PC入栈,中断服务程序入口址送PC)执行中断服务程序 编写中断服务
15、程序注意中断服务程序入口存放指令LJMP或AJMP现场保护与现场恢复第25页/共67页2023/2/2126中断服务子程序:中断服务子程序:INITT0INITT0:PUSH ACCPUSH ACC PUSH DPH PUSH DPH PUSH DPL PUSH DPL PUSH PSW PUSH PSW 中断源服务中断源服务 POP PSWPOP PSW POP DPL POP DPL POP DPH POP DPH POP ACC POP ACC RETI RETI 保护现场保护现场恢复现场恢复现场第26页/共67页2023/2/21275.2.3 中断返回 中断服务程序最后指令必须是RE
16、TI,其功能:将断点从堆栈弹送PC,CPU从原断点继续执行 将相应优先级状态触发器清0,恢复原来工作状态 注意:不能用RET代替RETI 中断服务程序中PUSH和POP必须成对使用第27页/共67页2023/2/2128中断处理过程示意图中断处理过程示意图由由硬硬件件自自动动完完成成例:允许外部中断例:允许外部中断0 0:SETB EASETB EA SETB EX0 SETB EX0或者:或者:MOV IE,#81HMOV IE,#81H第28页/共67页2023/2/21295.2.4 中断程序举例【例5-1】单外部中断源示例 ORG 0000HSTART:LJMP MAIN ORG 00
17、03H LJMP INTO ORG 0030H MAIN:CLR IT0 ;电平 SETB EA SETB EX0 MOV DPTR,#1000H 主程序:第29页/共67页2023/2/2130中断服务程序:ORG 0200HINT0:PUSH PSW PUSH ACC CLR P3.0 ;由P3.0输出0 NOP NOP SETB P3.0 MOV P1,#0FFH;置P1口为输入 MOV A,P1 ;输入数据 MOVX DPTR,A ;存入数据存储器 INC DPTR ;修改数据指针,指向下一个单元 POP ACC ;恢复现场 POP PSW RETI 第30页/共67页2023/2/2
18、131【例5-2】多外部中断源示例 中断服务程序:ORG 0003H LJMP INSE0 ORG 0013H LJMP INSE1 INSE0:PUSH PSW;XI0中断服务 PUSH ACC POP ACC POP PSW RETI (转下页)第31页/共67页2023/2/2132INSE1:PUSH PSW (接上页)PUSH ACC JB P1.0,DV1;P1.0为1,转XI1中断服务程序 JB P1.1,DV2;P1.1为1,转XI2中断服务程序 JB P1.2,DV3;P1.2为1,转XI3中断服务程序 JB P1.3,DV4;P1.3为1,转XI4中断服务程序INRET:P
19、OP ACC POP PSW RETI DV1:;XI1中断服务程序 AJMP INRET DV4:;XI4中断服务程序 AJMP INRET 第32页/共67页2023/2/2133【例例5-35-3】在在80518051单片机的单片机的INT0INT0引脚外接脉冲信号,要引脚外接脉冲信号,要求每送来一个脉冲,把求每送来一个脉冲,把30H30H单元值加单元值加1 1,若,若30H30H单元计满单元计满则进位则进位31H31H单元。试利用中断结构,编制一个脉冲计数单元。试利用中断结构,编制一个脉冲计数程序。程序。采用中断方法编制的程序,一般要包括以下几个内容:采用中断方法编制的程序,一般要包括
20、以下几个内容:1 1)主程序,必须有一个初始化部分,用于设置堆栈位)主程序,必须有一个初始化部分,用于设置堆栈位置、定义触发方式以及对优先寄存器、中断允许控制寄置、定义触发方式以及对优先寄存器、中断允许控制寄存器赋值等。存器赋值等。2 2)选择中断服务程序的入口地址。)选择中断服务程序的入口地址。3 3)编制中断服务程序)编制中断服务程序第33页/共67页2023/2/2134 ORG 0000HORG 0000H AJMP MAIN AJMP MAIN;设置主程序入口;设置主程序入口 ORG 0003H ORG 0003H;外部中断入口;外部中断入口 AJMP SUBG AJMP SUBG;
21、设置中断服务程序入口;设置中断服务程序入口 ORG 0100H ORG 0100H MAIN:MOV A,#00H MAIN:MOV A,#00H;30H,31H30H,31H清零清零 MOV 30H,A MOV 30H,A MOV 31H,A MOV 31H,A MOV SP,#70H MOV SP,#70H;设置堆栈指针;设置堆栈指针 SETB IT0 SETB IT0;设;设INTOINTO为边沿触发为边沿触发 SETB EA SETB EA;开中断;开中断 SETB EX0 SETB EX0;允许;允许INT0INT0中断中断 AJMP$AJMP$;等待中断;等待中断SUBG:PUSH
22、 ACC SUBG:PUSH ACC;保护现场;保护现场 INC 30H INC 30H MOV A,30H MOV A,30H JNZ BACK JNZ BACK INC 31H INC 31HBACK:POP ACC BACK:POP ACC;恢复现场;恢复现场 RETI RETI 第34页/共67页2023/2/21355.35.3 80C5180C51单片机的定时单片机的定时/计数器计数器 两个16位内部定时器/计数器(T/C,Timer/Counter)若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。定时器实际上也是工作在计数方式下,只不过对
23、固定频率的脉冲计数。由于脉冲周期固定,由计数值可以计算出时间,有定时功能。第35页/共67页2023/2/21365.3.1 5.3.1 定时定时/计数器的结构和工作原理计数器的结构和工作原理一、定时/计数器的结构TH1、TL1TH0、TL0TCONTMOD定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。第36页/共67页2023/2/2137二、定时/计数器的工作原理加1计数输入的计数脉冲有两个来源:一个是由系统的时钟振荡器输出脉冲经12分频后
24、送来(称为机器周期脉冲);另一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲,计数器加1.当计数器回零的同时,产生信号使TCON中TF0或TF1置1,并向CPU发出终端请求(定时/计数器中断允许时)。此“溢出事件”具有重要的含义。如果定时/计数器工作于定时模式,表示定时时间已到;如果工作于计数模式,则表示计数值已满。第37页/共67页2023/2/2138定时器模式时,是对内部机器周期计数。计数值乘以机器周期就是定时时间 计数器模式时,是对外部事件计数。脉冲由T0(P3.4)或T1(P3.5)引脚输入。注意:(若计数值为N,计数初值为X)溢出信号使TF0或TF1置1,并发出中断请求,16位时
25、有:N=65536-X,或X=65536-N12MHz晶振时,计数频率低于0.5MHz 第38页/共67页2023/2/21395.3.2 定时/计数器的控制TMOD:设置其工作方式TCON:用于控制其启动和中断申请一、工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。76543210TMODGATEC/TM1M0GATEC/TM1M0字节地址:字节地址:89H第39页/共67页2023/2/2140 1.C/T 定时器方式或计数器方式选择位 若C/T=1时,为计数器方式;C/T =0时,为定时器方式。2.GATE 定时器/计数器运行
26、门控标志位 当GATE=1时,T/C的启动受双重控制,即要求INT0(或INT1)引脚为高电平且TR0(或TR1)置 1 时,相应的T/C才被选通工作。若GATE=0,T/C的启动仅受TR0(或 TR1)控制,即置1,T/C就被选通,而不管 INT0(或 INT1)的电平是高还是低。3.M1M0:工作方式设置位。可设置四种工作方式(见下页)。第40页/共67页2023/2/2141M1M0M1M0工作方式工作方式说说 明明0000方式方式0 01313位定时位定时/计数器计数器(TH(TH的的 8 8 位和位和TLTL的低的低 5 5 位)位)0101方式方式1 11616位定时位定时/计数器
27、计数器1010方式方式2 28 8位自动重装定时位自动重装定时/计数器计数器1111方式方式3 3T0T0分成两个独立的分成两个独立的8 8位定时位定时/计数器;计数器;T1T1此方式此方式3 3停止计数停止计数注意:TMOD不能进行位寻址 第41页/共67页2023/2/2142二、控制寄存器TCON 76543210TCONTF1TR1TF0TR0字节地址:字节地址:88HTF0、TF1分别是定时器/计数器T0、T1 的溢出中断标志位,加法计数器计满溢出时置1,申请中断,在中断响应后自动复0。TF产生的中断申请是否被接受,还需要由中断是否开放来决定。TR1、TR0 分别是定时器/计数器T1
28、、T0 的运行控制位,通过软件置 1 后,定时器/计数器才开始工作,在系统复位时被清0。第42页/共67页2023/2/21435.3.3 定时/计数器的工作方式T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。方式0:13位方式 第43页/共67页2023/2/2144当TMOD中M1M0=00时,为方式0方式0为13位的T/C,由TH提供高8位,TL提供低5位,满计数值为213。计数脉冲能否加到计数器上,受启动信号的控制。当GATE=0,TR=1,则启动。当GATE=1,启动信号=TR.INT,启动受到双重控制。T/C启动后立即加1计数,当13位计数满时,TH向高位进位,进位
29、将中断溢出标志TF置1,产生中断请求,表示定时时间到,或计数次数到。T/C开中断,ET=1,且CPU开中断,EA=1,则CPU转向中断服务程序,TF自动清零。第44页/共67页2023/2/2145 C/T=1时,则为计数模式,有:X=213-N=8192-N(N为计数次数)C/T=0时,则为定时模式,有:X=213-N=8192-N,N=t/Tcy (t为定时时间,Tcy为机器周期)【例5-3】若计数个数N为2,求计数初值。公式法计算:X81922=8190=1FFEH 求补法计算:对0 0000 0000 0010B取反加1为:1 1111 1111 1110B(1FFEH)计数初值X的计
30、算:公式法 求补法:X=对N求补第45页/共67页2023/2/2146门控位作用:当GATE=0时仅由TR0控制与门的开启。与门输出1时,控制开关接通,计数开始;当GATE=1时与门的开启由INT0和TR0共同控制。这种方式可以用来测量INT0引脚上正脉冲的宽度。注意:方式0的计数初值高8位和低5位确定麻烦,实际应用中常由16位的方式1取代。第46页/共67页2023/2/2147方式1:16位方式 X=216-N=65536-N 计数范围:165536 计数初值要分成2个字节分别送入TH0、TL0第47页/共67页2023/2/2148【例5-4】若要求定时器T0工作于方式1,定时时间为1
31、ms,当晶振为6 MHz时,求送入TH0和TL0的计数初值各为多少?应怎样送入TH0和TL0?由于晶振为6 MHz,所以机器周期Tcy为2S,因此:N=t/Tcy=110-3/210-6500X216-N65536-50065036FE0CH 也可以利用以下2条指令完成:MOV TL0,#(65536-500)MOD 256;余数为计数初值的低字节 MOV TH0,#(65536-500)/256 ;商为计数初值的高字节用传送指令分别将FEH送入TH0中,0CH送入TL0中即可。第48页/共67页2023/2/2149方式2:8位自动重装方式 X=28-N=256-N 计数范围:1256适用于
32、循环定时或循环计数应用。当TMOD中M1M0=10时,为方式2电路的逻辑结构电路的逻辑结构第49页/共67页2023/2/2150方式3:(仅T0有此方式,T1的方式3将停止计数)TL0进行8位定时/计数 TH0进行8位定时(T1方式2时,可出借TR1、TF1)当当TMODTMOD中中M1M0=11M1M0=11时,为时,为方式方式3 3第50页/共67页2023/2/2151方式3只适合于T/C0,TH0和TL0成为两个独立的计数器。TL0可作定时器/计数器,占用T/C0在TCON和TMOD寄存器的控制位和标志位;而TH0只能作定时器,占用T/C1的资源TR1和TF1。在这种情况下,T/C1
33、还可以用于方式0,1,2,但不能使用中断方式。第51页/共67页2023/2/2152定时器定时器/计数器的初始化计数器的初始化1)初始化步骤在使用51系列单片机的T/C前,应对它进行编程初始化,主要是对TCON和TMOD编程,还需要计算和装载T/C的计数初值。一般完成以下几个步骤:1、确定T/C的工作方式编程TMOD寄存 2、计算T/C中的计数初值,并装载到TH和TL;3、T/C在中断方式工作时,必须开CPU中断和源中断编程IE寄存器;4、启动定时器/计数器编程TCON中TR1或TR0位。第52页/共67页2023/2/21532)计数初值的计算 定时器的计数初值:在定时器方式下,在定时器方
34、式下,T/CT/C是对机器周期脉冲计数的,是对机器周期脉冲计数的,f fOSCOSC=6MHZ=6MHZ,一个机器周期为,一个机器周期为12/f12/fOSCOSC=2us=2us,则,则方式方式0 130 13位定时器最大定时间隔位定时器最大定时间隔=2=21313*2us=16.384ms*2us=16.384ms方式方式1 161 16位定时器最大定时间隔位定时器最大定时间隔=2=21616*2us=131.072ms*2us=131.072ms 方式2 8位定时器最大定时间隔=28*2us=512us 若T/C工作在定时器方式1时,要求定时1ms,求计数值。如设计数初值为x,则有:(2
35、16-x)*2us=1000us 推出x=216-500 因此,TH,TL可置65 536-500第53页/共67页2023/2/2154计数器的计数初值在计数器方式下:方式0 13位计数器的满计数值=213=8192方式方式1 161 16位计数器的满计数值位计数器的满计数值=2=21616=65536=65536 方式2 8位计数器的满计数值=28=256 若T/C工作在计数器方式2时,则要求计数10个脉冲的计数初值,如设计数初值为x。则有 28-x=10 即 x=28-10因此,TH=TL=256-10第54页/共67页2023/2/21555.3.4 定时/计数器用于外部中断扩展例:用
36、T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。其初始化程序如下:MOV TMOD,#06H ;置T0为计数器方式2 MOV TL0,#0FFH ;置计数初值 MOV TH0,#0FFH SETB TR0 ;启动T0工作 SETB EA ;CPU开中断 SETB ET0 ;允许T0中断 T0外部引脚上出现一个下降沿信号时,TL0计数加1;产生溢出时,TF0硬件置1,向CPU发出中断请求 第55页/共67页2023/2/21565.3.5 定时/计数器应用举例初始化程序应完成:对TMOD赋值,以确定T0和T1的工作方式
37、;求初值,并写入TH0、TL0或TH1、TL1;中断方式时,要对IE赋值,开放中断;使TR0或TR1置位,启动定时/计数器工作。第56页/共67页2023/2/2157计数应用【例5-5】有一包装流水线,产品每计数24瓶时发出一个包装控制信号。试编写程序完成这一计数任务。用T0完成计数,用P1.0发出控制信号。确定方式字:T0在计数的方式2时:M1M0=10,GATE=0,C/T=1方式控制字为06H 求计数初值X:N=24X=256-24=232=E8H应将E8H送入TH0和TL0中 第57页/共67页2023/2/2158 ORG 0000H LJMP MAIN ORG 000BH LJM
38、P DVT0 ORG 0100HMAIN:MOV TMOD,#06H ;置T0计数方式2 MOV TH0,#0E8H;装入计数初值 MOV TL0,#0E8H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP$;等待中断DVT0:SETB P1.0 NOP NOP CLR P1.0 RETI END主程序 中断服务程序 第58页/共67页2023/2/2159【例例5-65-6】设单片机晶振频率为设单片机晶振频率为6MHZ6MHZ,使用定时器,使用定时器1 1以方式以方式0 0产生周期为产生周期为500us500us的等宽方波连续脉冲,并由
39、的等宽方波连续脉冲,并由P1.0P1.0输出。输出。确定方式字确定方式字:T1T1定时在方式定时在方式0 0时时:M1M0=00;C/T=0;GATE=0M1M0=00;C/T=0;GATE=0控制方式字为控制方式字为00H00H求计数初值:求计数初值:Tcy=2usTcy=2usN=250us/2us=125N=250us/2us=125X=2X=21313-N=8067-N=8067用二进制表示为用二进制表示为11111100 0001111111100 00011故故TH1=0FCH;TL1=03HTH1=0FCH;TL1=03H MOV TMOD,#00H MOV TMOD,#00H
40、MOV TH1 MOV TH1,#0FCH#0FCH MOV TL1 MOV TL1,#03H#03H MOV IE,#00H MOV IE,#00H SETB TR1 ;SETB TR1 ;启动定时启动定时LOOP:JBC TF1LOOP:JBC TF1,LOOP1LOOP1 AJMP LOOP AJMP LOOPLOOP1LOOP1:MOV TH1MOV TH1,#0FCH#0FCH MOV TL1 MOV TL1,#03H#03H CPL P1.0 CPL P1.0 AJMP LOOP AJMP LOOP第59页/共67页2023/2/2160定时应用 定时时间较小时(小于65ms)。晶
41、振为12 MHz时,Tcy为1S。可直接采用方式1完成定时任务。【例5-7】利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为12 MHz。确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H 求计数初值X:Tcy为1S N=10ms/1S=10 000X=65536-10000=D8F0H应将D8送TH0,F0H送TL0 第60页/共67页2023/2/2161 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100HMAIN:MOV
42、TMOD,#01H ;置T0方式1 MOV TH0,#0D8H;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP$;等待中断DVT0:CPL P1.0 MOV TH0,#0D8H MOV TL0,#0F0H RETI END主程序 中断服务程序 第61页/共67页2023/2/2162 定时时间较大时(大于65ms)。实现方法:一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数;二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个计数器的
43、外部脉冲输入端进行脉冲计数。【例5-8】编写程序,实现用定时/计数器T0定时,使P1.7引脚输出周期为2s的方波。设系统的晶振频率为12MHz。确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H 求计数初值X:Tcy为1S N=20ms/1S=20 000X=65536-20000=4E20H应将4E送TH0,20H送TL0 采用定时20ms,然后再计数50次的方法实现 第62页/共67页2023/2/2163 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0030HMAIN:MOV TMOD,#01H;置T0
44、方式1 MOV TH0,#4EH;装入计数初值 MOV TL0,#20H;首次计数值 MOV R7,#50 ;计数50次 SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP$;等待中断DVT0:DJNZ R7,NT0 MOV R7,#50 CPL P1.7 NT0:MOV TH0,#4EH MOV TL0,#20H SETB TR0 RETI END主程序 中断服务程序 第63页/共67页2023/2/2164本章小结本章小结中断技术是实时控制中的常用技术,中断技术是实时控制中的常用技术,5151系列单片机有系列单片机有三个三个内部中断,二个
45、外部中断内部中断,二个外部中断。所谓外部中断就是在外部引脚上。所谓外部中断就是在外部引脚上有产生中断所需要的信号。有产生中断所需要的信号。每个中断源有固定的中断服务程序的每个中断源有固定的中断服务程序的入口地址入口地址(称矢量地址称矢量地址或向量地址或向量地址)。当。当CPUCPU响应中断以后,单片机内部硬件保证它响应中断以后,单片机内部硬件保证它能自动的跳转到该地址。因此,此地址是应该熟记的,在汇能自动的跳转到该地址。因此,此地址是应该熟记的,在汇编程序编程序 中,中断服务程序应存放在正确的入口地址内。中,中断服务程序应存放在正确的入口地址内。单片机的中断是靠内部的单片机的中断是靠内部的寄存
46、器寄存器管理的。管理的。重点理解重点理解5151单片机的单片机的中断结构中断结构、中断响应过程中断响应过程及及中断程序中断程序的编制方法的编制方法。第64页/共67页2023/2/21655151系列单片机既有系列单片机既有两个两个1616位的定时位的定时/计数器计数器,有,有四种四种不不同的工作方式。同的工作方式。定时和计数实质都是对定时和计数实质都是对脉冲的计数脉冲的计数,只是被计脉冲的来,只是被计脉冲的来源不同。源不同。无论定时还是计数,当计满规定的脉冲个数产生无论定时还是计数,当计满规定的脉冲个数产生溢出溢出(计数初值寄存器回零),(计数初值寄存器回零),置位置位TFxTFx,可以通过程序查询,可以通过程序查询,如果允许中断,会产生中断。如果允许中断,会产生中断。应重点掌握定时计数器的应重点掌握定时计数器的应用设计应用设计.第65页/共67页第66页/共67页2023/2/2167感谢您的欣赏!第67页/共67页