单片机计时器问题

单片机利用计数器模式2作为串口波特率发生器。想问一下是如何产生波特率的,例如用到T1,是不是利用TF1溢出频率来产生波特率的?但是看到程序好像不用把TF1清零的,那怎样持续产生波特率?
波特率是怎样产生的?应该和T1溢出有关吧。假如不利用TF1,系统怎样判断T1溢出?但TF1不每次清零,怎样能持续判断溢出? (据书上的例子,就算方式2,TF1也不会自动清零,所以wangtk1982 说得不太对)

不知道你说的溢出频率概念和计数倒数是不是一个概念~~~

假如是,你的理解是正确的 确实和T1溢出有关
溢出后,送到了单片机内部的波特率发生器。每收到一个溢出信号后,就会在时间上产生一个bit的发送、接收时间,直到下一个溢出信号到来。
事实上一旦TL1溢出,不管T0工作在哪个方式,不管T1是否有中断服务程序,T1都会向波特率发生器发送溢出信号!!
TF1在方式2会自动清0 '
======================================================
当计时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
========================================================
其实方式2最大的特点就是初值重装 而不需要人工干预
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-27
方式2为自动重装入初值的8位定时器/计数器模式,为什么要清零?

使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值 ,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下:

溢出速率=(计数速率)/(256-TH1)

上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。
第2个回答  2009-08-27
金毛狮王怎么什么都知道……
第3个回答  2009-08-27
方式2为自动重装入初值的8位定时器/计数器模式