HC6800-ES-V2.0 发表于 2019-2-9 21:04 咳咳,用这个必须是STC公司的单片机吧,而且还要包含STC公司自己的头文件(STC-ISP软件里有)。 |
看看这个就知道了:![]() ![]() 12M晶振下,不论加不加倍,误差都很大 ![]() 12M晶振下,4800波特率,不加倍时,误差也是很大的 ![]() 12M晶振下,4800波特率,加倍时,误差就小了 你自己或以试的,2400波特率下,加倍或不加倍,误差都一样,可以正常使用。 |
唉!你的波特率有问题。12Mhz的晶振把T作为波特率发生器,按照波特率计算公式不能整除,很难计算出合理的波特率。 但是天无绝人之路,8052内核的单片机有T2寄存器,它的溢出率计算公式为:晶振频率除以【2乘(65536-RCAP2H RCAP2L)],波特率计算公式为:2的SMOD的次方除以T2溢出率; 我把你的程序改了改: void UsartInit() { SCON=0X50; T2CON=0X34;//设置T2为波特率发生装置 PCON=0X80; RCAP2H=(65536-39)/256; RCAP2L=(65536-39)%256; ES=1; EA=1; } 对于T2寄存器的详细信息你可以去单片机的查器件手册。希望这些对你有帮助 ![]() |
晶振12MHZ,波特率9600时误差为8.51%,4800时误差为6.99%,一般超过7%时通讯质量较差,可改用晶振11.0592MHz,通讯波特率可达115200以上质量也很好。 |
使用12M的晶振,波特率不要超过4800,否则误差会很大,不能正常通讯。建议使用11.0592MHz的晶振。 |