STC89C52单片机有3个定时器,分别是T0,T1和T2。一般够用,一个串口波特率发生,2个计时。其中T2有捕捉功能。由于定时器较少,一般用法都是在一个定时器中,设置不同的时间位,如1ms定时,在中断中进行计数,通过计数周期不同来产生不同的时间位,设置10ms定时时间位flag10ms,设置100ms定时时间位flag100ms,设置1s定时时间位flag1s。但这也有缺点,当计数周期为倍数关系时,软件就要额外处理,该怎么协调时间位的处理,如1s定时到,其实10ms和100ms的标志位都会置位。

51单片机定时器不够用怎么办

确实定时器资源少,会影响使用,软件处理也会复杂,建议还是更换升级的单片机,如STC12系列,有2个定时器,2路PCA可以作为定时器,还有独立的波特率发生器,不占用定时器。

51单片机定时器不够用怎么办

或者更高一级,STC15系列,有5个定时器,2路PCA,共有7个定时器,足够使用。这些定时器的应用基本一致,配置好寄存器,就可以工作了。而且中断等级分了四等,方便处理多中断任务。

51单片机定时器不够用怎么办

附图一,89C52的内部结构。附图二,STC12的配置。附图三,STC15的配置。附图四,STC15中断结构。

51单片机定时器不够用怎么办

两路定时器用在三个任务,理论上是没问题的。但是如果用C写代码,按个人经验,出来的效果比较差,特别是中断时间较短的时候。强烈建议用汇编来完成中断内的程序,基本上我在写这类代码时需要计算各个状态的代码时长,很多地方是要用nop指令去平衡的。如果时序达到微秒级,就不要用51单片机了,建议用时钟较高的ARM芯片或者用CPLD解决。

51单片机定时器不够用怎么办

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