定时器 计数器(第19课)_第1页
定时器 计数器(第19课)_第2页
定时器 计数器(第19课)_第3页
定时器 计数器(第19课)_第4页
定时器 计数器(第19课)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目四项目四 电子钟设计电子钟设计 任务任务1 认识单片机的定时器认识单片机的定时器/计数器计数器 学习内容学习内容1.了解定时器/计数器的结构与工作原理2.理解定时器/计数器的控制寄存器。3.理解定时/计数器的工作模式。4.掌握定时/计数器的使用方法。6.3 6.3 定时定时/ /计数器计数器定时方法:定时方法:1 1、硬件定时:硬件定时:较长时间;不够灵活、方便;较长时间;不够灵活、方便;计数器有计数器有加加1计数计数或或减减1计数计数两种形式。两种形式。加加1计数:计满回计数:计满回0溢出;溢出;减减1计数:计满回计数:计满回0。2 2、软件定时:软件定时:编循环程序,时间精确;占用编循

2、环程序,时间精确;占用CPUCPU;3 3、可编程定时器定时:可编程定时器定时:对系统时钟脉冲记数,功能对系统时钟脉冲记数,功能强,灵活、方便。强,灵活、方便。1 1、MCS-51MCS-51系列中:系列中: 5151子系列有子系列有2 2个个1616位的可编程定时位的可编程定时/ /计数器:定时器计数器:定时器/ /计数器计数器T0T0和定时器和定时器/ /计数器计数器T1T1; 5252子系列有子系列有3 3个:还有一个定时个:还有一个定时/ /计数器计数器T2T2。2 2、每个定时、每个定时/ /计数器通过编程设定来实现:计数器通过编程设定来实现: 对系统时钟(对系统时钟(foscfos

3、c)计数实现)计数实现定时定时; 对外部信号(对外部信号(T0/T1T0/T1引脚)计数实现引脚)计数实现计数计数功能。功能。3 3、每个定时、每个定时/ /计数器都有多种工作方式,通过编程可设定工计数器都有多种工作方式,通过编程可设定工作于某种方式。作于某种方式。T0T0有有4 4种工作方式;种工作方式;T1T1有有3 3种工作方式;种工作方式;T2T2有有3 3种工作方式。种工作方式。4 4、每一个定时、每一个定时/ /计数器定时计数时间到时产生溢出,使相应计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过的溢出位置位,溢出可通过查询查询或或中断中断方式处理。方式处理。6.3

4、6.3 定时定时/ /计数器计数器6.3.1 定时定时/计数器计数器T0、T1的结构及工作原理的结构及工作原理TH1TL1TH0TL0TCONTMOD启动启动启动启动溢出溢出溢出溢出工工作作方方式式工工作作方方式式中断请求中断请求内部总线内部总线TcyT1T01、由于它是、由于它是加法计数器加法计数器,每来一个计数脉冲,加法器中的内容,每来一个计数脉冲,加法器中的内容加加1个单位,当由计满回到个单位,当由计满回到0时计满溢出,因而,如果要计时计满溢出,因而,如果要计N个单位,个单位,则首先应向计数器置初值为则首先应向计数器置初值为X,且有:,且有:初值初值X=最大计数值(满值)最大计数值(满值

5、)M计数值计数值N 在不同的计数方式下,最大计数值(满值)不一样,一般来说,在不同的计数方式下,最大计数值(满值)不一样,一般来说,当定时器当定时器/计数器工作于计数器工作于n位计数方式时,它的最大计数值(满值)位计数方式时,它的最大计数值(满值)为为M=2n。2、当定时、当定时/计数器工作于计数方式时,对芯片引脚计数器工作于计数方式时,对芯片引脚T0(P3.4)或)或T1(P3.5)上的输入脉冲计数,计数过程如下:在每一个机器周期)上的输入脉冲计数,计数过程如下:在每一个机器周期的的S5P2时刻对时刻对T0(P3.4)或)或T1(P3.5)上信号采样一次,如果上)上信号采样一次,如果上一个机

6、器周期采样到高电平,下一个机器周期采样到低电平,则计一个机器周期采样到高电平,下一个机器周期采样到低电平,则计数器在下一个机器周期的数器在下一个机器周期的S3P2时刻加时刻加1计数一次。因而需要两个机计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以器周期才能识别一个计数脉冲,所以。6.3.1 定时定时/计数器计数器T0、T1的结构及工作原理的结构及工作原理6.3.2 定时器定时器/计数器的方式和控制寄存器计数器的方式和控制寄存器一定时一定时/计数器的方式寄存器计数器的方式寄存器TMODTMODD7D6D5D4D3D2D1D0(89H)GATEC/TM1M0GATEC/TM1M0定时器1

7、 定时器0其中:其中:C/T:定时或计数方式选择位:定时或计数方式选择位: 当当C/T=1时工作于计数方式:计数引脚时工作于计数方式:计数引脚T0(T1)输入的负脉冲;输入的负脉冲; 当当C/T=0时工作于定时方式:计数内部机器周期脉冲。时工作于定时方式:计数内部机器周期脉冲。 GATE:门控位,用于控制定时门控位,用于控制定时/计数器的启动是否受外部中断计数器的启动是否受外部中断请求信号的影响。请求信号的影响。 M1、M0为工作方式选择位为工作方式选择位 ,用于对,用于对T0的的4种工作方式,种工作方式,T1的的3种工作方式进行选择,选择情况如下:种工作方式进行选择,选择情况如下: M1M0

8、工作方式工作方式方式说明方式说明00013位定时/计数器01116位定时/计数器1028位重置定时/计数器1132个8位定时/计数器(只有T0有)二定时二定时/ /计数器的控制寄存器计数器的控制寄存器TCONTCONTCOND7D6D5D4D3D2D1D0(88H)TF1TR1TF0TR0IE1IT1IE0IT0其中:其中:TF1:定时:定时/计数器计数器T1的溢出标志位,当定时的溢出标志位,当定时/计数器计数器T1计满时,由计满时,由使它置位,如中断允许则触发使它置位,如中断允许则触发T1中断。中断。进入中断处理后由内部硬件电路进入中断处理后由内部硬件电路。TR1:定时:定时/计数器计数器T

9、1的启动位,可由的启动位,可由: 当当TR1=1时启动;时启动;TR1=0时停止。时停止。TF0:定时:定时/计数器计数器T0的溢出标志位,当定时的溢出标志位,当定时/计数器计数器T0计满时,由计满时,由使它置位,如中断允许则触发使它置位,如中断允许则触发T0中断。中断。进入中断处理后由内部硬件电路进入中断处理后由内部硬件电路。TR0:定时:定时/计数器计数器T0的启动位,可由的启动位,可由: 当当TR0=1时启动;时启动;TR0=0时停止。时停止。6.3.3 定时定时/计数器的工作方式计数器的工作方式一、方式一、方式0 方式方式0是是13位的定时位的定时/计数方式,因而最大计数值(满值)为计

10、数方式,因而最大计数值(满值)为M=213=8192。如计数值为。如计数值为N,则置入的初值,则置入的初值X为:为:X=8192-N 如定时如定时/计数器计数器T0的计数值为的计数值为1000,则初值为,则初值为7192,转换成,转换成二进制数为二进制数为1110000011000B,则,则TH0=11100000B=E0H,TL0=00011000B=18H。foscfosc 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。6.3.3 定时定时/计数器的工作方式计数器的工作

11、方式一、方式一、方式0 0二、方式二、方式1 1 方式方式1的结构与方式的结构与方式0结构相同,只是把结构相同,只是把13位变成位变成16位,位,16位的加法计数器被全部用上。位的加法计数器被全部用上。 由于是由于是16位的定时位的定时/计数方式,因而最大计数值(满值)为计数方式,因而最大计数值(满值)为M=216=65536。如计数值为。如计数值为N,则置入的初值,则置入的初值X为:为:X=65536-N 如定时如定时/计数器计数器T0的计数值为的计数值为1000,则初值为,则初值为65536-1000=64536,转换成二进制数为,转换成二进制数为1111110000011000B,则,则

12、TH0=11111100B=FCH,TL0=00011000B=18 H。 16X=2 -N 方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器 。计数个数与计数初值的关系为: 二、方式二、方式1 1三、方式三、方式2 2 方式方式2下,下,16位的计数器只用了位的计数器只用了8位来计数,用的是位来计数,用的是TL0(或(或TL1)的)的8位来进位来进行计数,而行计数,而TH0(或(或TH1)用于)用于保存初值保存初值。当。当TL0(或(或TL1)计满时则溢出,一方)计满时则溢出,一方面使面使TF0(或(或TF1)置位,另一方面溢出信号又会触发上图中的三态门

13、,使三态门)置位,另一方面溢出信号又会触发上图中的三态门,使三态门导通,导通,TH0(或(或TH1)的值就自动装入)的值就自动装入TL0(或(或TL1)。)。 由于是由于是8位的定时位的定时/计数方式,因而最大计数值(满值)为计数方式,因而最大计数值(满值)为M=28=256。如计数值。如计数值为为N,则置入的初值,则置入的初值X为:为:X=256-N 如定时如定时/计数器计数器T0的计数值为的计数值为100,则初值为,则初值为256-100=156,转换成二进制数为,转换成二进制数为10011100B,则,则TH0=TL0=10011100B。 注意:由于方式注意:由于方式2计满后,溢出信号

14、会触发三态门自动地把计满后,溢出信号会触发三态门自动地把TH0(或(或TH1)的值)的值装入装入TL0(或(或TL1)中,因而如果要重新实现)中,因而如果要重新实现N个单位的计数,个单位的计数,不用重新置入初值不用重新置入初值。 8X=2 -N方式2为自动重装初值的8位计数方式。 工作方式2特别适合于用作较精确的脉冲信号发生器。 计数个数与计数初值的关系为: 四、方式四、方式3 3 方式方式3只有只有定时定时/计数器计数器T0才有,当才有,当M1M0两位为两位为11时,定时,定时时/计数器计数器T0工作于方式工作于方式3,方式,方式3的结构如下图。的结构如下图。 方式方式3下,定时下,定时/计

15、数器计数器T0被分为被分为两个部分两个部分TL0和和TH0,其,其中,中,TL0可作为定时可作为定时/计数器使用计数器使用,占用,占用T0的全部控制位:的全部控制位:GATE、C/T、TR0和和TF0;而;而TH0固定只能作定时器使用固定只能作定时器使用,对机器周期进行计数,这时它占用定时对机器周期进行计数,这时它占用定时/计数器计数器T1的的TR1位、位、TF1位和位和T1的中断资源。的中断资源。 fosfosc c振荡振荡器器INT0T0 方式方式3 3只适用于定时只适用于定时/ /计数器计数器T0T0,定时器定时器T1T1处于方式处于方式3 3时时相当于相当于TR1=0TR1=0,停止计

16、数。,停止计数。 工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。 6.3.4 定时定时/计数器的初始化编程计数器的初始化编程MCS-51单片机定时器单片机定时器/计数器初始化步骤计数器初始化步骤1对写入方式控制寄存器对写入方式控制寄存器TMOD赋值赋值,以确定,以确定T0或或T1工作方式。工作方式。2计算定时器计算定时器/计数器的计数器的计数值计数值,再由计数值求得,再由计数值求得初值初值,将初值装入寄存器(将初值装入寄存器(TL/TH)。)。3中断方式工作时,则对中断方式工作时,则对IE赋值,开放中断赋值,开放中断(后面须(后面须编写中断服务程序)。编写中断服务程序)。4启动定

17、时器启动定时器/计数器开始工作,控制寄存器计数器开始工作,控制寄存器TCON中中TR0或或TR1置位。置位。 5等待定时等待定时/计数时间到,定时计数时间到,定时/计数到则执行计数到则执行中断中断服务服务程序;如用程序;如用查询查询处理则编写查询程序判断溢出标志,溢出处理则编写查询程序判断溢出标志,溢出标志等于标志等于1,则进行相应处理。,则进行相应处理。 例1:T0运行于定时器状态,时钟振荡周期为12MHz,要求定时100s。求不同工作方式时的定时初值C。解:fosc=12MHz、T=1s 、X=100s/1s=(100)D= 64H方式0(13位方式): C=213- 64H=1F9CH方

18、式1(16位方式): C=216- 64H=FF9CH方式2、3(8位方式):C=28 - 64H=9CH注意:工作方式0的初值装入方法:1F9CH=1 1111 1001 1100 B 可见,TH0=0FCH,TL0=1CHTL0TL0的低的低5 5位位TH0TH0的的8 8位位6.3.5 定时定时/计数器的应用计数器的应用 通常利用定时通常利用定时/计数器来产生周期性的波形。利用定计数器来产生周期性的波形。利用定时时/计数器产生周期性波形的基本思想是:利用定时计数器产生周期性波形的基本思想是:利用定时/计数计数器产生周期性的定时,定时时间到则对输出端进行相应器产生周期性的定时,定时时间到则

19、对输出端进行相应的处理。如产生周期性的方波只须定时时间到对输出端的处理。如产生周期性的方波只须定时时间到对输出端取反一次即可。取反一次即可。例例2. 设系统时钟频率为设系统时钟频率为12MHz,用定时,用定时/计数器计数器T0编程实现从编程实现从P1.0输出周期为输出周期为500s的方波。的方波。 分析:从分析:从P1.0输出周期为输出周期为500s的方波,只须的方波,只须P1.0每每250s取取反一次则可。当系统时钟为反一次则可。当系统时钟为12MHz,定时,定时/计数器计数器T0工作于方式工作于方式2时,最大的定时时间为时,最大的定时时间为256s,满足,满足250s的定时要求,方式控的定

20、时要求,方式控制字应设定为制字应设定为00000010B(02H)。系统时钟为)。系统时钟为12MHz,定时,定时250s,计数值,计数值N为为250,初值,初值X=256-250=6,则,则TH0=TL0=06H。500sT1T06.3.5 定时定时/计数器的应用计数器的应用(1)采用)采用查询查询方式处理的程序:方式处理的程序:# include sbit P1_0=P10;void main( )char i;TMOD=0 x02;TH0=0 x06;TL0=0 x06;TR0=1;While(1) if (TF0) TF0=0;P1_0=! P1_0; /查询计数溢出查询计数溢出 #

21、include /包含特殊功能寄存器库包含特殊功能寄存器库sbit P1_0=P10;void main( )TMOD=0 x02;TH0=0 x06;TL0=0 x06;EA=1;ET0=1;TR0=1;while(1); void time0_int(void) interrupt 1 /中断服务程序中断服务程序 P1_0=!P1_0; (2)采用)采用中断中断处理方式的程序:处理方式的程序: 如果定时时间大于如果定时时间大于65536s,这时用一个定时,这时用一个定时/计数器直接处理不能实现,这时可用:计数器直接处理不能实现,这时可用:1、2个定时个定时/计数器共同处理;计数器共同处理;

22、2、1个定时个定时/计数器配合软件计数方式处理。计数器配合软件计数方式处理。 例例3.设系统时钟频率为设系统时钟频率为12MHz,编程实现,编程实现从从P1.1输出周期为输出周期为1s的方波。的方波。 根据例根据例5-2的处理过程,这时应产生的处理过程,这时应产生500ms的周期性的定时,的周期性的定时,定时到则对定时到则对P1.1取反就可实现。由于定时时间较长,一个定时取反就可实现。由于定时时间较长,一个定时/计计数器不能直接实现,可用定时数器不能直接实现,可用定时/计数器计数器T0产生周期性为产生周期性为10ms的定的定时,然后用一个寄存器时,然后用一个寄存器R2对对10ms计数计数50次

23、或用定时次或用定时/计数器计数器T1对对10ms计数计数25次实现。次实现。 系统时钟为系统时钟为12MHz,定时定时/计数器计数器T0定时定时10ms,计数值计数值N为为10000,只能选,只能选方式方式1,方式控制字为,方式控制字为00000001B(01H),),求初值求初值X:X=65536-10000=55536 =1101100011110000B则则TH0=11011000B=D8H,TL0=11110000B=F0H。每每20ms输出输出1次次计计25次次(1)用寄存器)用寄存器R2作计数器软件计数,中断处理方式。作计数器软件计数,中断处理方式。 # include /包含特殊

24、功能寄存器库包含特殊功能寄存器库sbit P1_1=P11;char i;void main( )TMOD=0 x01;TH0=0 xD8;TL0=0 xF0;EA=1;ET0=1;i=0;TR0=1;while(1);void time0_int(void) interrupt 1 /中断服务程序中断服务程序TH0=0 xD8;TL0=0 xF0;i+;if (i= =50) P1_1=! P1_1;i=0; 定时定时/计数器计数器T1工作于计数方式时,计数脉冲工作于计数方式时,计数脉冲通过通过T1(P3.5)输入,设定时)输入,设定时/计数器计数器T0定时时间定时时间到对到对T1(P3.5

25、)取反一次,则)取反一次,则T1(P3.5)每)每20ms产生一个计数脉冲,那么定时产生一个计数脉冲,那么定时500ms只须计数只须计数25次。次。 设设定时定时/计数器计数器T1工作于方式工作于方式2,初值,初值X=256-25=231= 11100111B=E7H,TH1=TL1=E7H。 定时定时/计数器计数器T0工作于方式工作于方式1,定时,则这时方,定时,则这时方式控制字为式控制字为01100001B(61H)。)。 定时定时/计数器计数器T0和和T1都采用中断方式工作。都采用中断方式工作。(2) 用定时用定时/计数器计数器T1计数实现计数实现C语言程序如下:语言程序如下:# inc

26、lude sbit P1_1=P11;sbit P3_5=P35;void main( )TMOD=0 x61;TH0=0 xD8;TL0=0 xF0;TH1=0 xE7; TL1=0 xE7;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1);void time0_int(void) interrupt 1 /T0中断服务程序中断服务程序 TH0=0 xD8;TL0=0 xF0;P3_5=!P3_5;void time1_int(void) interrupt 3 /T1中断服务程序中断服务程序 P1_1=! P1_1;长定时方法:增加一个软件计数器或一个硬件计数器。本题采用硬件方式:T0定时,定时10ms; T1计数T0的定时跳变信号P1.0的负跳变次数,计满50个跳变为1秒。(查询方法)START: MOV TMOD,#61H MOV TL1,#0CDH MOV TH1,#0CDH CLR P1.0 SETB TR1LOOP1: CPL P1.7LOOP2: MOV TL0 ,#78H MOV TH0,#0ECH SETB TR0LOOP3: J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论