C51 UART专题
1. 为什么选择T1, 方式2
选择定时器1是因为芯片内部硬件设计如此:

方式2,是自动重装,由硬件确保波特率的时钟稳定,如果采取在中断中重置定时器初值,容易导致波特率产生偏差;
2. 波特率如何计算
波特率的计算参考如下公式:

3. 硬件连线

调试问题与解决
开发板上串口发送接收异常,但是烧录电路可以正常工作,同时该芯片放到最小系统板上可以正常工作,因此初步排除芯片不良,电压测量后也是5V, 排除供电问题;
目前可以稳定复现,单片机中发送0x41, 接收端接收的是0xA1; 还剩一个怀疑点,可能是引脚虚焊导致,重新焊接一下试试看还是不行;无奈,只能继续从软件上想方案,
突然发现定时器的初值设置的是F4,而单片机小精灵算出来的误差最小的波特率应该是F3, 我一开始觉得F4只差了一位,应该也是ok的,谁知道带入公式才发现,虽然只差
了1,但是波特率却从4807(误差0.16%)变成了5208,误差达到了8.5%, 真的是差之毫厘,谬以千里啊。改了这个值之后,程序果然就正常了
浙公网安备 33010602011771号