标题: 关于单片机定时器的计算-baud 不理解 [打印本页]

作者: 哈兰德    时间: 2023-6-4 18:02
标题: 关于单片机定时器的计算-baud 不理解
void ConfigUART(unsigned int baud)
{

   TMOD &= 0XF0;
         TMOD |= 0X02; //模式2 ,自动重装模式
         TH0 = 256 - 11059200 / 12 / baud ;
         
}

不理解为什么 TH0 要求 256 - 11059200 /12 /baud  而不用 65536 - 11059200 /12/baud;


作者: 哈兰德    时间: 2023-6-4 18:03
定时器0模式2配置波特率,计算TH0值。
作者: 哈兰德    时间: 2023-6-4 20:50
理解:
发送的数据都是8位计算的,2的8次方 = 256,因此按照256计算溢出值
作者: Hephaestus    时间: 2023-6-4 21:10
TH0是个8位计数器,你用65536装不下!
作者: joyb    时间: 2023-6-5 10:41
11059200 /12 /baud
1.11059200 /12 /9600=96
2.11059200 /12 /4800=192
3.11059200 /12 /2400=384>256
作者: yzwzfyz    时间: 2023-6-5 10:58
只要是自动重装必然会遇到一个问题:
假设你算出来的重装时常数的X,那么重装时,这个X从哪进能取到呢?

你要看书,知道这个X需要事先放在何处,这样你就明白了。

定时模式2,是8位计数方式,只用TL进行计数,而TH这时干什么呢,就是用来放X的。
当TL计数计满后,从TH中取出X,装入TL进行再次计数。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1