(初学者提问)下面是串行通信的程序的一部分,主要是设置定时/计数器:
void init(void)
{
SCON = 0x50; // 设定串行口工作方式
PCON &= 0x00; // 波特率不倍增
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = (uchar)(256 - (XTAL / (32L * 12L * baudrate)));
TL1 = (uchar)(256 - (XTAL / (32L * 12L * baudrate))); // T1赋初值
TR1 = 1; // 启动定时器1
}
补充一下,其中
uchar是:#define uchar unsigned char
XTAL是:晶振频率
baudrate是:波特率
请问:TL1和TH1是设置的初值,但我不懂TH1 = (uchar)(256 - (XTAL / (32L * 12L * baudrate)));和TL1 = (uchar)(256 - (XTAL / (32L * 12L * baudrate)));这两句话的意思,为什么前面有个(uchar),还有32L和12L分别指什么,我在书上看了一下,设置初值的分式是:X=256-(t*Fosc)/12或是X=256-(t*Fosc)/6,本人初学,谢谢各位大虾帮助。