系统频率是24.5Mhz,使用的是UART的模式1进行串口通讯,源程序如下:
main()
{
SCON = 0x50; //Set UART as mode1 and enable reception.
TMOD = 0x20; //Initialize Timer1 as mode2.
PCON = 0x80; //Set SMOD =1
TL1 = 0x96; //Set Boud rate as 1200bit/s
TH1 = 0x96;
//TL1 = 0xEF; //Set Boud rate as 1200bit/s
//TH1 = 0xEF;
ES = 0; //Disable Uart Interrupt(Optional)
TR1 = 1; //Start Timer1 Counter
while(1)
{
SBUF = temp; //Send 0xaa to TX.
while(~TI); //Wait uart finishs transfer data
TI=0; //Clear TX Flag.
}
}
现在有2个问题:
(1) 按照波特率计算公式: X=256-(fosc*(SMOD+1)/(12*32*bps)) 计算出来的TH1装入值是0x96,可是例程的TH1装入值是0xEF。不知道是我计算错了,还是例程计算错了。
(2)我分别用两个TH1装入值烧录程序,但是在串口都没有得到想要的0xaa这个值,串口读出“樻”这个字符,后者串口读出“((++”这样的字符。
知道的说下问题在哪儿啊 |