【蓝桥杯—单片机学习笔记(九)】定时/计数器基本原理

一、定时/计数器的结构原理

MCS-51单片机中有2个可编程的16位定时/计数器T0和T1,他们内部都是由“加1”计数寄存器、工作方式寄存器TMOD和控制寄存器TCON三个部分组成。

其中,

(1)“加1”计数器分为高8位和低8位;

(2)TMOD寄存器主要用于控制定时或者计数功能选择、工作方式设置以及启动方式的控制等;

(3)TCON寄存器主要用于控制T0或T1的启动/暂停、溢出标志的设置等。

定时/计数器工作时,每来一个脉冲(即过1个机器周期),“加1”计数寄存器会加1,当其为全1的时候,在输入一个脉冲,这时计数寄存器产生溢出。与此同时,计数寄存器值会被清零,同时TCON寄存器的溢出标志位被置为1,并向单片机CPU发出定时中断信号。

若此时工作在定时模式,则代表设定的时间到;若工作于计数模式,则表示计数值已满。

1.工作于定时模式

定时/计数器工作于定时模式时,“加1”计数寄存器是对单片机内部产生的机器周期进行计数,其频率为系统晶振频率的1/12,此时定时时间T = Tp * N(Tp是每个机器周期的时间,N为累计的机器周期脉冲个数)

2.工作于计数模式

定时/计数器工作于计数模式时,它用于对外部事件的计数,其值由单片机T0或T1引脚输入,脉冲的下降沿计数。输入值从一个高电平到低电平,至少需要2个机器周期,(1个机器周期 = 12晶振周期),因此计数频率最大为

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
9.51系列单片机内部有两个定时计数器,分别为定时器0和定时器1。 10.定时计数器的工作原理:定时器和计数器都是通过内部振荡器提供的时钟信号进行计数,计数器可以在外部输入的脉冲信号上计数,而定时器则可以在内部时钟信号上进行定时。当计数或定时达到预设的值时,会触发相应的中断或输出控制信号。 11.判断下列的说法是否正确:(1)特殊功能寄存器SCON与定时计数器的控制无关——错误。(2)特殊功能寄存器TCON与定时计数器的控制无关——错误。(3)特殊功能寄存器IE与定时计数器的控制无关——错误。(4)特殊功能寄存器TMOD与定时计数器的控制无关——错误。 12.定时计数器的工作方式有四种,分别为方式0、方式1、方式2和方式3。方式0为定时器模式,方式1为16位定时器模式,方式2为8位自动定时器模式,方式3为双定时器模式。它们的区别在于计数/定时的位数和工作方式。 13.当晶振采用6MHz时,定时计数器工作在方式0、1、2下,其最大的定时时间分别为65536/6MHz=10.92ms、131072/6MHz=21.84ms和256/6MHz=42.67us。 14.定时计数器定时用时,定时时间与晶振频率、计数/定时的位数以及工作模式有关。作为计数用时,对外界计数频率有一的限制,不能超过定时器/计数器的最大计数值。 15.以下是一份使用方式2定时器,在P1.0口输出周期为400us,占空比为10:1的矩形脉冲的程序: ``` #include <reg51.h> void main() { TMOD = 0x02; // 定时器使用方式2 TH0 = 0x4C; // 设置定时器初值 TL0 = 0x00; TR0 = 1; // 启动定时器 while(1) { if(TF0) // 定时时间到达 { TF0 = 0; // 清除标志位 P1_0 = 1; // 输出高电平 TH0 = 0x4C; // 新设置初值 TL0 = 0x00; } if(TL0 == 40) // 计数到40,输出低电平 { P1_0 = 0; } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻萌的路飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值