《定时器与中断优秀PPT.ppt》由会员分享,可在线阅读,更多相关《定时器与中断优秀PPT.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、定时器与中断你现在浏览的是第一页,共50页 中断的基本概念中断的基本概念 80C5180C51中断源中断源 中断控制寄存器中断控制寄存器 中断处理过程中断处理过程 中断优先控制和中断嵌套中断优先控制和中断嵌套 中断系统的应用中断系统的应用 80C5180C51定时定时/计数器计数器 定时定时/计数器控制寄存器计数器控制寄存器 定时定时/计数器工作方式计数器工作方式 定时定时/计数器的应用计数器的应用第第5 5章章 中断系统和定时中断系统和定时/计数器计数器 本章要点:本章要点:你现在浏览的是第二页,共50页5-1 80C515-1 80C51中断系统中断系统CPUCPU暂时暂时中止其正在中止其
2、正在执执行的程序,行的程序,转转去去执执行行请请求中断的求中断的那个外那个外设设或事件的服或事件的服务务程序,等程序,等处处理完理完毕毕后再返回后再返回执执行行原来中止的程序原来中止的程序,叫做中断。叫做中断。为什么要设置中断?为什么要设置中断?提高提高CPUCPU工作效率工作效率 具有实时处理功能具有实时处理功能 具有故障处理功能具有故障处理功能 实现分时操作实现分时操作一一.中断概述中断概述 什么叫中断?什么叫中断?你现在浏览的是第三页,共50页 INT0INT0:外部中断外部中断0 0,中断请求信号由,中断请求信号由P3.2P3.2输入。输入。INT1INT1:外部中断外部中断1 1,中
3、断请求信号由,中断请求信号由P3.3P3.3输入。输入。T0T0:定时定时/计数器计数器0 0溢出中断溢出中断,对外部脉冲计数由,对外部脉冲计数由P3.4P3.4输入。输入。T1T1:定时定时/计数器计数器1 1溢出中断溢出中断,对外部脉冲计数由,对外部脉冲计数由P3.5P3.5输入。输入。串行中断串行中断:包括包括串行接收中断串行接收中断RIRI和和串行发送中断串行发送中断TITI。二二.中断源和中断控制寄存器中断源和中断控制寄存器 中断源中断源 中断源是指能发出中断请求,引起中断的装中断源是指能发出中断请求,引起中断的装置或事件。置或事件。80C5180C51单片机的中断源共有单片机的中断
4、源共有5 5个,其中个,其中2 2个为个为外部中断源,外部中断源,3 3个为内部中断源:个为内部中断源:你现在浏览的是第四页,共50页 中断请求:定时和外中断控制寄存器中断请求:定时和外中断控制寄存器TCONTCON;串行控制寄存器串行控制寄存器SCONSCON;中断允许控制寄存器中断允许控制寄存器IEIE;中断优先级控制寄存器中断优先级控制寄存器IPIP。中断控制寄存器中断控制寄存器 80C5180C51单片机中涉及中断控制的有单片机中涉及中断控制的有3 3个方面个方面4 4个特殊个特殊功能寄存器功能寄存器:你现在浏览的是第五页,共50页INT0INT0、INT1INT1、T0T0、T1T1
5、中断请求标志放在中断请求标志放在TCONTCON中中串行中断请求标志放在串行中断请求标志放在SCONSCON中。中。中断请求控制寄存器中断请求控制寄存器(88H)(88H)TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称TF1TF1TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H功能功能 T1T1 中断中断标志标志T0T0中断中断标志标志 中断中断标志标志 触发触发方式方式 中断中断标志标志触发触发方式方式TCONTCON的结构、位
6、名称、位地址和功能如下:的结构、位名称、位地址和功能如下:你现在浏览的是第六页,共50页 TCONTCON位功能位功能:TF1 TF1 T1T1溢出中断请求标志溢出中断请求标志 T1T1计数溢出后,计数溢出后,TF1=1TF1=1 TF0TF0 T0T0溢出中断请求标志溢出中断请求标志 T0T0计数溢出后,计数溢出后,TF0=1TF0=1 IE1IE1 外中断中断请求标志外中断中断请求标志 当当P3.3P3.3引脚信号有效时,引脚信号有效时,IE1=1IE1=1 IE0IE0 外中断中断请求标志外中断中断请求标志 当当P3.2P3.2引脚信号有效时,引脚信号有效时,IE0=1IE0=1 IT1
7、IT1 外中断触发方式控制位外中断触发方式控制位 IT1=1IT1=1,边沿触发方式;,边沿触发方式;IT1=0IT1=0,电平触发方式。,电平触发方式。IT0IT0 外中断触发方式控制位外中断触发方式控制位 其意义和功能与其意义和功能与IT1IT1相似。相似。你现在浏览的是第七页,共50页串行控制寄存器串行控制寄存器SCON(98H)SCON(98H)TCONTCOND7D7 D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称 TITIRIRI位地址位地址 99H99H98H98H功能功能 串行发送串行发送中断标志中断标志串行接收串行接收中断标志中断标志 TITI 串行口发
8、送中断请求标志串行口发送中断请求标志 RIRI 串行口接收中断请求标志串行口接收中断请求标志你现在浏览的是第八页,共50页 80C5180C51对中断源的开放或关闭由中断允许控制对中断源的开放或关闭由中断允许控制寄存器寄存器IEIE控制。控制。IE在特殊功能寄存器中,字节地在特殊功能寄存器中,字节地址址A8H,位地址分别是,位地址分别是A8HAFH。IE控制控制CPU对中断源总的开放或禁止以及每个中断源是否允对中断源总的开放或禁止以及每个中断源是否允许中断。许中断。中断允许控制寄存器中断允许控制寄存器IEIE(A8H)A8H)IEIE的结构、位名称和位地址如下:的结构、位名称和位地址如下:IE
9、IED7D7D6D6 D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称EAEA ESESET1ET1EX1EX1ET0ET0EX0EX0位地址位地址AFHAFH ACHACHABHABHAAHAAHA9HA9HA8HA8H中断源中断源CPUCPU 串行口串行口T1T1T0T0你现在浏览的是第九页,共50页 EAEA CPUCPU中断允许控制位中断允许控制位 EA=1EA=1,CPUCPU开中;开中;EA=0EA=0,CPUCPU关中,且屏蔽所有关中,且屏蔽所有5 5个中断源。个中断源。EX0EX0 外中断外中断INT0INT0中断允许控制位中断允许控制位 EX0=1EX0=1,IN
10、T0INT0开中;开中;EX0=0EX0=0,INT0INT0关中。关中。EX1EX1 外中断外中断INT1INT1中断允许控制位中断允许控制位 EX1=1EX1=1,INT1INT1开中;开中;EX1=0EX1=0,INT1INT1关中。关中。ET0ET0 定时定时/计数器计数器T0T0中断允许控制位中断允许控制位 ET0=1ET0=1,T0T0开中;开中;ET0=0ET0=0,T0T0关中。关中。ET1ET1 定时定时/计数器计数器T1T1中断允许控制位中断允许控制位 ET1=1ET1=1,T1T1开中;开中;ET1=0ET1=0,T1T1关中。关中。ESES 串行口中断串行口中断(包括串
11、发、串收包括串发、串收)允许控制位允许控制位 ES=1ES=1,串行口开中;,串行口开中;ES=0ES=0,串行口关中。,串行口关中。说明说明:80C51 80C51对中断实行两级控制,总控制位是对中断实行两级控制,总控制位是EAEA,每一,每一中断源还有各自的控制位。首先要中断源还有各自的控制位。首先要EA=1EA=1,其次还要自身,其次还要自身的控制位置的控制位置“1”1”。你现在浏览的是第十页,共50页(3)中断优先寄存器中断优先寄存器IP(B8H)IP在特殊功能寄存器中,字节地址为在特殊功能寄存器中,字节地址为B8H,位地址分,位地址分别是别是B8HBFH,IP用来锁存各中断源优先级的
12、控制位,用来锁存各中断源优先级的控制位,其格式如图所示。其格式如图所示。你现在浏览的是第十一页,共50页三三.中断处理过程中断处理过程 中断处理过程大致可分为四步:中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回中断请求、中断响应、中断服务、中断返回 中断请求中断请求 中断源发出中断请求信号,相应的中断请求标志位中断源发出中断请求信号,相应的中断请求标志位(在中断控制在中断控制寄存器寄存器TCONTCON和和SCONSCON中中)置置“1”1”。中断响应中断响应 CPUCPU查询(检测)到某中断标志为查询(检测)到某中断标志为“1”1”,在满足中断响应条件,在满足中断响应条件
13、下,响应中断。下,响应中断。中断响应条件中断响应条件:该中断已经该中断已经“开中开中”;CPUCPU此时没有响应同级或更高级的中断;此时没有响应同级或更高级的中断;当前正处于所执行指令的最后一个机器周期;当前正处于所执行指令的最后一个机器周期;正在执行的指令不是正在执行的指令不是RETIRETI或者是访向或者是访向IEIE、IPIP的指令,的指令,否则必须再另外执行一条指令后才能响应。否则必须再另外执行一条指令后才能响应。你现在浏览的是第十二页,共50页 中断响应操作中断响应操作 CPUCPU响应中断后响应中断后,进行下列操作:进行下列操作:保护断点地址;保护断点地址;撤除该中断源的中断请求标
14、志;撤除该中断源的中断请求标志;关闭同级中断;关闭同级中断;将相应中断的入口地址送入将相应中断的入口地址送入PCPC;80C5180C51五个中断入口地址五个中断入口地址:INT0INT0:0003H0003H;T0T0:000BH000BH;INT1INT1:0013H0013H T1 T1:001BH001BH;串行口:;串行口:0023H0023H 执行中断服务程序执行中断服务程序 中断服务程序应包含以下几部分:中断服务程序应包含以下几部分:保护现场保护现场 执行中断服务程序主体,完成相应操作执行中断服务程序主体,完成相应操作 恢复现场恢复现场 中断返回中断返回 在中断服务程序最后,必须
15、安排一条中断返回指令在中断服务程序最后,必须安排一条中断返回指令RETIRETI,当,当CPUCPU执行执行RETIRETI指令后,自动完成下列操作:指令后,自动完成下列操作:恢复断点地址。恢复断点地址。开放同级中断,以便允许同级中断源请求中断。开放同级中断,以便允许同级中断源请求中断。你现在浏览的是第十三页,共50页 四四.中断响应等待时间中断响应等待时间 若排除若排除CPUCPU正在响应同级或更高级的中断情况,中断响应等正在响应同级或更高级的中断情况,中断响应等待时间为待时间为:3 38 8个机器周期个机器周期五五.中断请求的撤除中断请求的撤除 中断源发出中断请求,相应中断请求标志置中断源
16、发出中断请求,相应中断请求标志置“1”1”。CPUCPU响应中断响应中断后,必须清除中断请求后,必须清除中断请求“1”1”标志。否则中断响应返回后,将再次进入该标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。中断,引起死循环出错。对定时对定时/计数器计数器T0T0、T1T1中断,外中断边沿触发方式,中断,外中断边沿触发方式,CPUCPU响应响应中断时就用硬件自动清除了相应的中断请求标志。中断时就用硬件自动清除了相应的中断请求标志。对外中断电平触发方式,需要采取软硬结合的方法消除后果。对外中断电平触发方式,需要采取软硬结合的方法消除后果。对串行口中断,用户应在串行中断服务程序中用软件
17、清除对串行口中断,用户应在串行中断服务程序中用软件清除TITI或或RIRI。你现在浏览的是第十四页,共50页六六.中断优先控制和中断嵌套中断优先控制和中断嵌套 中断优先控制中断优先控制 80C5180C51中断优先控制首先根据中断优先级,此外还规定了同一中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之间的中断优先权。中断优先级之间的中断优先权。其从高到低的顺序其从高到低的顺序为:为:INT0INT0、T0T0、INT1INT1、T1T1、串行口。、串行口。中断优先级是可编程的中断优先级是可编程的,而,而中断优先权是固定的中断优先权是固定的,不能设置,不能设置,仅用于同级中断源同时请
18、求中断时的优先次序。仅用于同级中断源同时请求中断时的优先次序。80C5180C51中断优先控制的基本原则:中断优先控制的基本原则:高优先级中断可以中断正在响应的低优先级中断,反之则不高优先级中断可以中断正在响应的低优先级中断,反之则不能。能。同优先级中断不能互相中断。同优先级中断不能互相中断。同一中断优先级中,若有多个中断源同时请求中断,同一中断优先级中,若有多个中断源同时请求中断,CPUCPU将先响应将先响应优先权高的中断,后响应优先权低的中断。优先权高的中断,后响应优先权低的中断。你现在浏览的是第十五页,共50页你现在浏览的是第十六页,共50页 中断嵌套中断嵌套 当当CPUCPU正在执行某
19、个中断服务程序时,如果发生更高一级的中正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,断源请求中断,CPUCPU可以可以“中断中断”正在执行的低优先级中断正在执行的低优先级中断,转转而响应更高一级的中断,这就是中断嵌套。而响应更高一级的中断,这就是中断嵌套。中断嵌套只能高优先级中断嵌套只能高优先级“中断中断”低优先级,低优先级不能低优先级,低优先级不能“中中断断”高优先级,同一优先级也不能相互高优先级,同一优先级也不能相互“中断中断”。中断嵌套结构类似与中断嵌套结构类似与调用子程序嵌套,调用子程序嵌套,不同的不同的是是:子程序嵌套是在程序中子程序嵌套是在程序中事先按排好的;中断嵌
20、套事先按排好的;中断嵌套是随机发生的。是随机发生的。子程序嵌套无次序限制,子程序嵌套无次序限制,中断嵌套只允许高优先级中断嵌套只允许高优先级“中断中断”低优先级。低优先级。你现在浏览的是第十七页,共50页七七.中断系统的应用中断系统的应用 中断初始化中断初始化 设置堆栈指针设置堆栈指针SPSP 定义中断优先级定义中断优先级 定义外中断触发方式定义外中断触发方式 开放中断开放中断 安排好等待中断或中断发生前主程序应完成的操作内容。安排好等待中断或中断发生前主程序应完成的操作内容。中断服务主程序中断服务主程序 中断服务子程序内容要求:中断服务子程序内容要求:在中断服务入口地址设置一条跳转指令,转移
21、到中断服务程序的实在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。际入口处。根据需要保护现场。根据需要保护现场。中断源请求中断服务要求的操作。中断源请求中断服务要求的操作。恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。中断返回,最后一条指令必须是中断返回,最后一条指令必须是RETIRETI。你现在浏览的是第十八页,共50页【例例】出租车计价器计程方法是车轮每运转一圈出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(产生一个负脉冲,从外中断(P3.2P3.2)引脚输入,)引脚输入,行驶里程为
22、轮胎周长行驶里程为轮胎周长运转圈数,设轮胎周长运转圈数,设轮胎周长为为2m2m,试实时计算出租车行驶里程(单位米),试实时计算出租车行驶里程(单位米),数据存数据存32H32H、31H31H、30H30H。中断系统应用举例中断系统应用举例解:编程如下:解:编程如下:ORGORG 0000H 0000H;复位地址复位地址 LJMPLJMP STAT STAT;转初始化转初始化 ORGORG 0003H 0003H;中断入口地址中断入口地址 LJMPLJMP INT INT;转中断服务程序转中断服务程序你现在浏览的是第十九页,共50页 ORG 0100HORG 0100H;初始化程序首地址初始化程
23、序首地址STAT:MOV SP,#60HSTAT:MOV SP,#60H;置堆栈指针置堆栈指针 SETB ITOSETB ITO;置边沿触发方式置边沿触发方式 MOV IP,#01HMOV IP,#01H;置高优先级置高优先级 MOV IE,#81HMOV IE,#81H;开中开中 MOV 30H,#0MOV 30H,#0;里程计数器清里程计数器清0 0 MOV 31H,#0 MOV 31H,#0;MOV 32H,#0 MOV 32H,#0;LJMP MAIN LJMP MAIN;转主程序转主程序,并等待中断并等待中断 ORG 0200HORG 0200H;中断服务子程序首地址中断服务子程序首
24、地址INT:PUSH AccINT:PUSH Acc;保护现场保护现场 PUSH PSWPUSH PSW;MOV A,30H MOV A,30H;读低读低8 8位计数器位计数器 ADD A,#2ADD A,#2;低低8 8位计数器加位计数器加2m2m MOV 30H,A MOV 30H,A;回存回存 CLR ACLR A;ADDC A,31H ADDC A,31H;中中8 8位计数器加进位位计数器加进位 MOV 31H,AMOV 31H,A;回存回存 CLR ACLR A;ADDC A,32H ADDC A,32H;高高8 8位计数器加进位位计数器加进位 MOV 32H,AMOV 32H,A;
25、回存回存 POP PSWPOP PSW;恢复现场恢复现场 POP Acc POP Acc;RETI RETI;中断返回中断返回你现在浏览的是第二十页,共50页【例例】现有现有5 5个外中断源个外中断源EX1EX1、EX20EX20、EX21EX21、EX22EX22和和EX23EX23,高电平时表示请求中断,要求执行相应中断服务程序,高电平时表示请求中断,要求执行相应中断服务程序,试编制程序。试编制程序。解:解:ORGORG0000H0000H;复位地址复位地址LJMPLJMPMAINMAIN;转主程序转主程序ORGORG0003H0003H;中断入口地址中断入口地址LJMPLJMPPINT0
26、PINT0;转中断服务程序转中断服务程序ORGORG0013H0013H;中断入口地址中断入口地址LJMPLJMPPINT1PINT1;转中断服务程序转中断服务程序你现在浏览的是第二十一页,共50页 ORGORG0100H0100H ;主程序首地址主程序首地址MAIN:MOVMAIN:MOVSP,#60HSP,#60H;置堆栈指针置堆栈指针 ORLORLTCON,#05HTCON,#05H;置置INT0INT0、INT1INT1为边沿触发方式为边沿触发方式 SETBSETBPX0 PX0 ;置为高优先级置为高优先级 MOVMOVIE,#0FFHIE,#0FFH;全部开中全部开中 ;主程序内容主
27、程序内容 ORG 1000HORG 1000H;中断服务程序首地址中断服务程序首地址 PINT0:PUSHPINT0:PUSH AccAcc;中断中断,保护现场保护现场 LCALL WORK1LCALL WORK1;调用调用EX1EX1服务子程序服务子程序 POPPOPAccAcc;恢复现场恢复现场 RETIRETI;中断返回中断返回 ORGORG 2000H 2000H ;中断服务程序首地址中断服务程序首地址PINT1:CLRPINT1:CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ;中断保护现场中断保护现场 PUSHPUSH DPH DPH ;PUSH P
28、USH DPL DPL ;SETB SETB EA EA ;CPU;CPU开中开中你现在浏览的是第二十二页,共50页 JB P1.0,JB P1.0,LWK20LWK20;P1.0=1,EX20;P1.0=1,EX20请求中断请求中断 JB P1.1,JB P1.1,LWK21LWK21;P1.1=1,EX21;P1.1=1,EX21请求中断请求中断 JB P1.2,JB P1.2,LWK22LWK22;P1.2=1,EX22;P1.2=1,EX22请求中断请求中断 LCALL WORK23 LCALL WORK23 ;P1.3=1,;P1.3=1,调用调用EX23EX23服务子服务子LRET
29、:LRET:CLR CLR EA EA;CPU;CPU禁中禁中 POPPOP DPL DPL;恢复现场恢复现场 POPPOP DPH DPH;POP POP Acc Acc;SETB SETB EA EA;CPU;CPU开中开中 RETIRETI;中断返回中断返回LWK20LWK20:LCALL WORK20:LCALL WORK20;P1.0=1,;P1.0=1,调用调用EX20EX20服务子程序服务子程序 SJMP LRET SJMP LRET ;转中断返回转中断返回LWK21LWK21:LCALL WORK21:LCALL WORK21;P1.1=1,;P1.1=1,调用调用EX21EX
30、21服务子程序服务子程序 SJMP LRETSJMP LRET;转中断返回转中断返回LWK22LWK22:LCALL WORK22 :LCALL WORK22 ;P1.2=1,;P1.2=1,调用调用EX22EX22服务子程序服务子程序 SJMP LRETSJMP LRET;转中断返回转中断返回你现在浏览的是第二十三页,共50页 定时定时/计数器是单片机系统一个重要的部件,计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来其工作方式灵活、编程简单、使用方便,可用来实现实现定时控制定时控制、延时延时、频率测量频率测量、脉宽测量脉宽测量、信信号发生号发生、信号检测信号检测
31、等。此外,定时等。此外,定时/计数器还可作计数器还可作为串行通信中波特率发生器。为串行通信中波特率发生器。5-25-2 80C5180C51定时定时/计数器计数器你现在浏览的是第二十四页,共50页80C5180C51单片机内部有两个定时单片机内部有两个定时/计数器计数器T0T0和和T1T1,其核,其核心是计数器,基本功能是加心是计数器,基本功能是加1 1。对外部事件脉冲(下降沿)计数,是计数器;对片对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。内机周脉冲计数,是定时器。计数器由二个计数器由二个8 8位计数器组成。位计数器组成。定时时间和计数值可以编程设定,其方法是在计数
32、定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加器内设置一个初值,然后加1 1计满后溢出。调整计计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。调整了定时时间和计数值。定时定时/计数器作为计数器时,外部事件脉冲必须从计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超过规定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的时钟频率的1/241/24。一一.定时定时/计数器概述计数器概述你现在浏览的是第二十五页,共50页TCONTCON低低4 4位与外中断位与外中断 、有
33、关,已在有关,已在中断中叙述。中断中叙述。高高4 4位与定时位与定时/计数器计数器T0T0、T1T1有关。有关。TF1:TF1:定时定时/计数器计数器T1T1溢出标志。溢出标志。TF0:TF0:定时定时/计数器计数器T0T0溢出标志。溢出标志。TR1:TR1:定时定时/计数器计数器T1T1运行控制位。运行控制位。TR1=1,T1TR1=1,T1运行运行;TR1=0,T1;TR1=0,T1停。停。TR0:TR0:定时定时/计数器计数器T0T0运行控制位。运行控制位。TR0=1,T0TR0=1,T0运行运行;TR0=0,T0;TR0=0,T0停。停。TCONTCON的字节地址为的字节地址为88H8
34、8H,每一位有位地址,均可位操作。,每一位有位地址,均可位操作。定时定时/计数器控制寄存器计数器控制寄存器TCONTCON二二.定时定时/计数器的控制寄存器计数器的控制寄存器TCONTCONT1T1中断中断标志标志T1T1运行运行标志标志T0T0中断中断标志标志T0T0运行运行标志标志INT1INT1中断中断标志标志INT1INT1触发触发方式方式INT0INT0中断中断标志标志INT0INT0触发触发方式方式位名称位名称TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH
35、8AH89H89H88H88H你现在浏览的是第二十六页,共50页高高4 4位控制位控制T1T1低低4 4位控制位控制T0T0门控门控位位计数计数/定时定时方式选择方式选择工作方式工作方式选择选择门控门控位位计数计数/定时定时方式选择方式选择工作方式工作方式选择选择G GC/TC/TM1M1M0M0G GC/TC/TM1M1M0M0TMODTMOD用于设定定时用于设定定时/计数器的工作方式计数器的工作方式低低4 4位用于控制位用于控制T0T0,高高4 4位用于控制位用于控制T1T1。定时定时/计数器工作方式控制寄存器计数器工作方式控制寄存器TMODTMOD(89H)89H)M1M0 M1M0 工
36、作方式选择位工作方式选择位M1M0M1M0工作方式工作方式功能功能0000方式方式0 01313位计数器位计数器0101方式方式1 11616位计数器位计数器1010方式方式2 2两个两个8 8位计数器,初值自动装入位计数器,初值自动装入1111方式方式3 3两个两个8 8位计数器,仅适用位计数器,仅适用T0T0你现在浏览的是第二十七页,共50页 C/T C/T 计数计数/定时方式选择位定时方式选择位 C/T=1,C/T=1,计数工作方式计数工作方式,对外部事件脉冲计数对外部事件脉冲计数,用作计数器。用作计数器。C/T=0,C/T=0,定时工作方式定时工作方式,对片内机周脉冲计数对片内机周脉冲
37、计数,用作定时器。用作定时器。GATE GATE 门控位门控位 GATE=0GATE=0,运行只受,运行只受TCONTCON中运行控制位中运行控制位TR0/TR1TR0/TR1的控制。的控制。GATE=1GATE=1,运行同时受,运行同时受TR0/TR1TR0/TR1和外中断输入信号和外中断输入信号的双重控制。的双重控制。只有当只有当INT0/INT1=1INT0/INT1=1且且TR0/TR1=1,T0/T1TR0/TR1=1,T0/T1才能运行。才能运行。注意:注意:TMOD字节地址字节地址89H,不能位操作不能位操作,设置设置TMOD须用字节操作须用字节操作指令。指令。你现在浏览的是第二
38、十八页,共50页三三.定时定时/计数器工作方式计数器工作方式 工作方式工作方式0 0 1313位位计数器,由计数器,由TL0TL0低低5 5位和位和TH0 8TH0 8位组成,位组成,TL0TL0低低5 5位计数满时位计数满时不向不向TL0TL0第第6 6位进位,而是向位进位,而是向TH0TH0进位,进位,1313位计满溢出,位计满溢出,TF0TF0置置“1”1”。最大计数值最大计数值2 21313=8192=8192。工作方式工作方式1 1 1616位位计数器,计数器,最大计数值为最大计数值为2 21616=65536=65536。工作方式工作方式2 2 8 8位位计数器,仅用计数器,仅用T
39、L0TL0计数,计数,最大计数值为最大计数值为2 28 8=256=256,计满溢,计满溢出后,一方面进位出后,一方面进位TF0TF0,使溢出标志,使溢出标志TF0=1TF0=1;另一方面,使原来;另一方面,使原来装在装在TH0TH0中的初值装入中的初值装入TL0TL0。优点:定时初值可自动恢复优点:定时初值可自动恢复;缺点:计数范围小。缺点:计数范围小。适用于需要重复定时,而定时范围不大的应用场合。适用于需要重复定时,而定时范围不大的应用场合。你现在浏览的是第二十九页,共50页 工作方式工作方式3 3 方式方式3 3仅适用于仅适用于T0T0,T1T1无方式无方式3 3。T0T0方式方式3 3
40、 在方式在方式3 3情况下情况下,T0T0被拆成二个独立的被拆成二个独立的8 8位计数器位计数器TH0TH0、TL0TL0。TL0TL0使用使用T0T0原有的控制寄存器资源原有的控制寄存器资源:TF0,TR0,GATE,C/T,INT0,TF0,TR0,GATE,C/T,INT0,组成一个组成一个8 8位的定时位的定时/计数器;计数器;TH0TH0借用借用T1T1的中断溢出标志的中断溢出标志TF1,TF1,运行控制开关运行控制开关TR1,TR1,只能对片只能对片内机周脉冲计数内机周脉冲计数,组成另一个组成另一个8 8位定时器位定时器(不能用作计数器不能用作计数器)。T0T0方式方式3 3情况下
41、的情况下的T1T1 T1 T1由于其由于其TF1TF1、TR1TR1被被T0T0的的TH0TH0占用,计数器溢出时,只能将占用,计数器溢出时,只能将输出信号送至串行口,即输出信号送至串行口,即用作串行口波特率发生器用作串行口波特率发生器。你现在浏览的是第三十页,共50页其中其中:N:N与工作方式有关与工作方式有关:方式方式0 0时时,N=N=1313;方式方式1 1时时,N=N=1616;方式方式2 2、3 3时时,N=N=8 8。机周时间与主振频率有关机周时间与主振频率有关:机周时间机周时间=12/fosc=12/fosc fosc=fosc=12MHZ12MHZ时时,1 1机周机周=1 1
42、 S S;fosc=fosc=6MHZ6MHZ 时时,1 1机周机周=2 2 S S。四四.定时定时/计数器的应用计数器的应用 计算定时计算定时/计数初值计数初值80C5180C51定时定时/计数初值计算公式:计数初值计算公式:你现在浏览的是第三十一页,共50页解:解:工作方式工作方式0 0:2 21313500500 S/2S/2 S=8192-250=7942=1F06HS=8192-250=7942=1F06H 1F06H 1F06H化成二进制:化成二进制:1F06H=0001 1111 0000 0110B1F06H=0001 1111 0000 0110B=000 =000 1111
43、100011111000 0011000110 B B其中:其中:低低5 5位位0011000110前添加前添加3 3位位000000送入送入TL0TL0 TL0=000 TL0=000 0011000110B=06HB=06H;高高8 8位位11111000B11111000B送入送入TH0TH0 TH0=TH0=1111100011111000B=F8HB=F8H。【例例】已知晶振已知晶振6MHz6MHz,要求定时,要求定时0.5mS0.5mS,试分别求出,试分别求出T0T0工作于方式工作于方式0 0、方式、方式1 1、方式、方式2 2、方式、方式3 3时的定时初值。时的定时初值。你现在浏
44、览的是第三十二页,共50页 工作方式工作方式1 1:T0T0初值初值 =2=21616-500-500 s s/2/2 s s=65536250=65286=FF06H=65536250=65286=FF06H TH0=FFH TH0=FFH;TL0=06HTL0=06H。工作方式工作方式2 2:T0T0初值初值 =2=28 8-500-500 s s/2/2 s s=256-250=6=256-250=6 TH0=06H TH0=06H;TL0=06HTL0=06H。工作方式工作方式3 3:T0T0方式方式3 3时,被拆成两个时,被拆成两个8 8位定时器,定时初值可分别计算,位定时器,定时初
45、值可分别计算,计算方法同方式计算方法同方式2 2。两个定时初值一个装入。两个定时初值一个装入TL0TL0,另一个装入,另一个装入TH0TH0。因此:因此:TH0=06HTH0=06H;TL0=06HTL0=06H。从上例中看到,方式从上例中看到,方式0 0时计算定时初值比较麻烦,根据公式计时计算定时初值比较麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式算出数值后,还要变换一下,容易出错,不如直接用方式1 1,且方式,且方式0 0计数范围比方式计数范围比方式1 1小,小,方式方式0 0完全可以用方式完全可以用方式1 1代替,方式代替,方式0 0与与方式方式1 1相比,无任何优
46、点相比,无任何优点。你现在浏览的是第三十三页,共50页 定时定时/计数器应用步骤计数器应用步骤 合理选择定时合理选择定时/计数器工作方式计数器工作方式 计算定时计算定时/计数器定时初值计数器定时初值(按上述公式计算按上述公式计算)编制应用程序编制应用程序 定时定时/计数器的初始化计数器的初始化 包括定义包括定义TMODTMOD、写入定时初值、设置中断系统、启动定时、写入定时初值、设置中断系统、启动定时/计数器运行等。计数器运行等。正确编制定时正确编制定时/计数器中断服务程序计数器中断服务程序 注意是否需要重装定时初值,若需要连续反复使用原定时注意是否需要重装定时初值,若需要连续反复使用原定时时
47、间,且未工作在方式时间,且未工作在方式2 2,则应在中断服务程序中重装定时初,则应在中断服务程序中重装定时初值。值。你现在浏览的是第三十四页,共50页【例例】试试用用T1T1方方式式2 2编编制制程程序序,在在P1.0P1.0引引脚脚输输出出周周期期为为400400 S S的脉冲方波,已知的脉冲方波,已知fosc=12MHZfosc=12MHZ。解:解:计算定时初值计算定时初值 T1T1初值初值=2=28 8-200-200 s s/1/1 s s=256200=56=38H=256200=56=38H TH1=38H TH1=38H;TL1=38HTL1=38H 设置设置TMODTMOD:0
48、 0 0 0 1010 00000000 B=20H B=20H T0 T0控制位,与控制位,与T1T1无关无关 T1T1方式方式2 2 T1 T1定时器定时器 T1T1启动与启动与 无关无关你现在浏览的是第三十五页,共50页 编制程序编制程序如下:如下:ORGORG0000H0000H ;复位地址复位地址LJMPLJMPMAINMAIN ;转主程序转主程序ORGORG001BH001BH ;T1;T1中断入口地址中断入口地址LJMPLJMPIT1IT1 ;转转T1T1中断服务程序中断服务程序 ORGORG0100H0100H ;主程序首地址主程序首地址MAIN:MAIN:MOVMOVTMOD
49、,#20HTMOD,#20H ;置置T1T1定时器方式定时器方式2 2MOVMOVTL1,#38HTL1,#38H ;置定时初值置定时初值MOVMOVTH1,#38HTH1,#38H ;置定时初值备份置定时初值备份MOVMOVIP,#00001000BIP,#00001000B;置置T1T1高优先级高优先级MOVMOVIE,#0FFHIE,#0FFH ;全部开中全部开中SETBSETBTR1TR1 ;T1;T1运行运行SJMPSJMP$;等待等待T1T1中断中断 ORG 0200H ORG 0200H ;T1;T1中断服务程序首地址中断服务程序首地址IT1:IT1:CPL P1.0 CPL P
50、1.0 ;输出波形取反首地址输出波形取反首地址RETI RETI ;中断返回中断返回你现在浏览的是第三十六页,共50页【课堂练习题课堂练习题】参参照照以以上上例例题题工工作作方方式式2 2,按按下下列列要要求求分分别别修改程序:修改程序:脉冲方波从脉冲方波从P3.0P3.0输出;输出;fosc=6MHzfosc=6MHz;脉冲方波脉宽为脉冲方波脉宽为100100 s s;用定时用定时/计数器计数器T0T0;你现在浏览的是第三十七页,共50页【例例】设设MCS-51单单片片机机系系统统时时钟钟频频率率CLK为为6MHZ,请请编编出出利利用用定定时时/计计数数器器T0在在P1.0引引脚脚上上产产生