单片机中0x00作为定时器的初值,在计数时0x00不计算在内,但参与了计数。为何这样说,从以下分析便可清楚。

1:51单片机的定时器/计数器是加计数器。工作时该单片机有0至3四种工作方式,每种方式的定时/计数最大值都不一样;

2:设定某种方式后,都是定时/计数到该方式最大值后才会溢出,产生中断信号给单片机中CPU。溢出启动中断后须对中断位清零,重新对定时器高低赋值。

3:假设设定定时工作方式为0方式,此时单片机定时/计数最大值为8192,若设定初值为0x00,启动定时器后,定时器便会以0x00为基数开始加1,直至数满溢出,产生中断。具体过程参看下图便明白。

51单片机定时器初值为0x00,计数时0x00计算在内吗

从上面波形图可以看出:

①:定时初值赋为0x00时,定时从0到1每加一次,都由一个由高(低)到低(高)的高低两个电平组成;

②赋初值为零(0x00)时,定时启动后,无论0x00处是高或低电平开始,都竖到1(0x01)才为加1。

故而讲,0x00计数时不计算在内,但参与了计数!

定时器从0开始,计时一次为1,计时2次为2,依次累加,工作方式2的8位定时器计到2∧8=256,工作方式1的16位定时器计到65536,假设单片机晶振为12MHz,则一个机器周期为1us,所以8位定时器最大定时为256us,16位定时器最大定时为65ms。当单片机到达最大定时时间时就会产生定时中断,在中断程序中需要清除中断标志位,并对定时器重新赋值才能再次进行定时。

12兆晶振每隔一微秒计数器加一,也就是从0x00变成0x01需要一微秒。经过65536个脉冲当计数器溢出时的总时间为65.536ms毫秒。如果0x00看成是一个时间单位,那么,第65536个脉冲可以视为0,我这样说你明白了吗?就像零点和二十四点是一个意思,看你怎么理解了。两个数字才能构成时间跨度,单纯一个数字无论是几都和时间没有半毛钱关系。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查