波特率与定时器初值关系

    首先,说一下啊波特率与定时器初值关系。

     波特率:即单片机或者计算机在串口通信时的速率用波特率,它定义为每秒传输二进制代码的位数。

    1波特率=1位/秒

    串行口有4种工作方式,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定的。串行口的4种工作方式对应3种波特率。由于输入的时钟来源不同,所以各种工作方式也不同。

    4种方式波特率的计算公式:

    方式0的波特率=fosc/12

   方式1的波特率=(2SMOD/32)*(T1溢出率)

   方式0的波特率=(2SMOD/64)*fosc

   方式0的波特率=(2SMOD/32)*(T1溢出率)

fosc为系统晶振频率,通常为12MHz或者11.0592MHz。SMOD是PCON寄存器最高位;T1溢出率就是定时器T1溢出频率。

电源管理寄存器PCON:

    电源管理寄存器在特殊功能寄存器中,字节地址为87H,不能位寻址。它用来管理单片机的电源部分,包括上电复位检测,掉电模式,空闲模式。单片机复位时PCON全部被清0.

    T1溢出率就是定时器T1溢出的频率,如果计算出T1定时器每溢出一次所需要的时间T,那么1/T就是它的溢出率。

在这里,如果我们用定时器1的工作方式1在中断中装初值的方法来求T1溢出率的话,在进入中断,装值,出中断这个过程中很容易产生微小误差,当多次 操作时,误差曾度,就会产生错误。所以 我们就用了T1定时器的工作方式2,8位初值自动重装8位定时器/计数器。当定时器记满溢出后单片机会自动为其装初值,并且不需要进入中断服务程序进行任何处理,这样定时器的溢出的速率就会绝对稳定。

方式2的工作过程是:先设定M1M0悬着定时器方式2,在TLX和THX装入计算好的初值,启动定时器,然后TLX寄存器便在时钟的作用下开始加一计数,当TLX计满溢出后,CPU会自动将THX中的数装入TLX中继续计数。


猜你喜欢

转载自blog.csdn.net/xhl1123456789/article/details/80653727