第五讲定时计数器.pptVIP

  • 3
  • 0
  • 约7.17千字
  • 约 44页
  • 2019-09-12 发布于浙江
  • 举报
可编写1 s延时子程序如下( C程序) : void Delay( ) { unsigned int i; TMOD=0x00; //设定时器1为方式0 TH1=0x63; //置定时器初值 TL1=0x18; TR1=1; //启动T1 for(i=0; i=200 ; ) { if ( TF1 == 1) //查询计数溢出 { i++; TF1=0; TH1=0x63; //重新置定时器初值 TL1=0x18;} } return ; } 可编写1 s延时子程序如下(C程序): void Delay( ) { unsigned int i; TMOD=0x20; //设定时器1为方式2 TH1=0x06; //置定时器初值 TL1=0x06; TR1=1; //启动T1 for(i=0; i=4000; ) { if ( TF1==1) //查询计数溢出 {i++ ; TF1=0; continue; } } return ; } 图5.5 定时器0在方式3时的逻辑结构   四.方式3   定时/计数器工作于方式3时,其逻辑结构图如图5.5所示。   由图可知,方式3下,定时器0被分解成两个独立的8位计数器TL0和TH0。其中,TL0占用原定时器0的控制位、引脚和中断源,即C/ 、GATE、TR0、TF0和T0(P3.4)引脚、  (P3.2)引脚,除计数位数不同于方式0、方式1外,其功能、操作与方式0、方式1完全相同,可定时亦可计数。TH0不仅占用了原定时器1的控制位TF1和TR1,同时还占用了定时器1的中断源,其启动和关闭仅受TR1置1或清0控制。TH0只能对机器周期进行计数,因此,它只能用于简单的内部定时,不能用于对外部脉冲进行计数,是定时器0附加的一个8位定时器。TL0和TH0的定时时间分别为   TL0:(M-TL0初值)?×?时钟周期?×?12?=?(256-TL0初值)?×?时钟周期?×?12   * 5.1 单片机定时/计数器的结构 一.定时/计数器组成框图   1 . 8051单片机内部有两个16位的可编程定时/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用,其逻辑结构如图5.1所示。   2 . 定时/计数器的组成:T0、T1、定时器方式寄存器TMOD和定时器控制寄存器TCON。 (1)T0、T1是由两个8位专用寄存器组成的16位加法计数器:T0由TH0和TL0组成,T1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问地址依次为8AH~8DH,每个寄存器均可被单独访问,用于存放定时初值或计数初值。   (2)T0或T1用作计数器时,对引脚T0(P3.4)或T1(P3.5)上输入的脉冲进行计数,每输入一个脉冲,加法计数器加1;用作定时器时,对内部机器周期脉冲进行计数。  (3)TMOD、TCON与T0、T1间通过内部总线及逻辑电路连接,定时器/计数器的工作方式、定时时间和启停控制通过由指令来确定这些寄存器的状态来实现。 TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止,并保存T0、T1的溢出和中断标志。 图5.1 8051定时/计数器逻辑结构图 二.定时/计数器工作原理 16位的定时器/计数器实质上是一个加1计数器,可实现定时和计数两种功能,其功能由软件控制和切换。定时器属硬件定时和计数,是单片机中效率高而且工作灵活的部件。 在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时器/计数器。将控制字写入定时器/计数器的过程叫定时器/计数器的初始化。 在初始化程序中,要将工作方式控制字写入定时器方式寄存器(TMOD),工作状态控制字(或相关位)写入定时器控制寄存器(TCON),赋定时/计数初值给TH0(TH1)和TL0(TL1)。  1 . 定时工作方式:计数器对内部机器周期进行计数,每过一个机器周期,计数器增1,

文档评论(0)

1亿VIP精品文档

相关文档