关于定时/计数器

定时/计数器:

51单片机有2个16位定时器/计数器:定时器0和定时器1。

这里所说的16位是指定时/计数器内部分别有16位的计数寄存器。

当工作在定时模式时,每经过一个机器周期的内部的16位计数寄存器的值就会加1,当这个寄存器装满时溢出。我们可以算出工作在定时模式时最高单次定时时间为65535×1.085μS=时间(单位μS)

当工作在技术器模式时,T0,T1每来一个脉冲计数寄存器加1。

65535: 16位的计数寄存器,最大为16个1,也就是65535。

最大定时: 65535×1.085=71105.475μS≈71.1mS

时钟周期:以11.0592MHZ为例,假如51单片机的时钟为11.0592MHZ,除以12后得到每秒执行的指令个数为条指令,取倒数将得到执行每条指令所需时间为1.085μS(一个周期)

定时器作用:

定时计数器可以用于精确事件定时,PWM脉宽调制,波形发生,信号时序测量的方面。

使用51定时/技术器步骤:
  • 启动定时/计数器(通过TCON控制器)
  • 设置定时/计数器(通过TMOD控制器)
  • 查询定时/计数器是否溢出(读TCON内TF位)

计数器:每来一个脉冲计数寄存器加1。一个高电平一个低电平形成一个脉冲。

TMOD控制器中C/T位为功能选择位:为0时为定时器,为1时为计数器。

定时器举例:

TR0 = 1;     // 定时器0工作

TMOD - 0X01;    // 16位定时器/计数器

TH0 = 0X4B;     // (65535-46082) / 256    高位赋值

TL0 = 0XFD;    // (65535-46082)% 256  低位赋值

if(TF0 == 1)     // 加满产生溢出;不用中断响应的情况下要软件清0。"置 ”1“ 为硬件置 “1” "

例如:

 定时50毫秒(mS)= 50000 微秒(μS)  //因为执行计数的加1为微秒级

 50000÷1.085≈46082;

 65535-46082 = 初值;

  • 如果同时使用定时器计数器,都需要对同一个寄存位赋值时,可以用 |=(或等于)符号,相当于两个值进行求和,这样可以同时利用定时器和计数器。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值