电工之家_电工基础知识学习网站
当前位置:电工之家 > 电工知识 > 单片机 > 正文

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

时间:2019-01-08 12:09 来源:电工之家

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单片机定时器不够用怎么办

看过《51单片机定时器不够用怎么办》的人还看了以下文章
如何把蓝牙模块HC-05与51单片机连接起来 如何把蓝牙模块HC-05与51单片机连接起来
单片机是可以和蓝牙连接的,通过UART串口连接。HC-05是市面上比较常见的蓝牙模组,主从是一体的,跟单片机通过UART串口连接,连接完成后,即把蓝牙当作串口来使用,使用AT指令即可操作蓝牙,从而忽略掉蓝牙协议,大大降低了产品的开发难度。 单片机和蓝牙的...
51单片机定时器初值计算 51单片机定时器初值计算
用STC89C52单片机来说,它有3个定时器,分别是T0,T1和T2。其中T2有捕捉功能。 举例如定时器配置为 16 位定时器/计数器(模式1), TL0 的 8 位和 TH0 的 8 位所构成16位计数器(就是2位数16位,转换为10进制就是0到65535),当它溢出是将置位TCON的TF0位。...
从51单片机转Stm32的开发难不难 从51单片机转Stm32的开发难不难
从51单片机转Stm32的开发,相对于对从51不熟悉就直接学习stm32的朋友来说,要容易的很多,因为在学习51和学习stm32的思路与方法,基本上差不多,如果您学习51单片机学的不错,在学习stm32的时候事半功倍。 建议最开始购买一套开发板,如果自制Stm32开发板是...
怎么做才能将STM32学会?从51单片机转STM32的经验 怎么做才能将STM32学会?从51单片机转STM32
我当时为什么想学STM32,是因为了解到这颗MCU具有强大的功能,那时候有人用这个芯片Div做过手持式示波器,我当时觉得很厉害。自己也很想用它来做些高大上的东西。所以说这个,是想表述要对于新鲜事物,要保持一颗好奇心和探究心。这是你学习的源动力。 如果...
51单片机,stm32,arduino都是用什么语言进行编程的 51单片机,stm32,arduino都是用什么语言进行
51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程。 51单片机的编程 51单片机进入中国比较早,在早前用汇编编程比较多,我在上大学时也是学习的汇编编程,但是现在我用C语言编程,汇编已经不会...