前几天使用STC8H1K08,想着自己写个波特率设置函数,结果出现下面的问题:使用公式 65536-(sysclk/(4*baud))计算T2H、T2L,的出来的结果是0。
然后经过我的一轮试验,发现STC8H1K08最高能保存的位数是15位,0x7FFF。试验图片如下:
因为这时猜想单片机的最大位数的15位,所以把65536拆开了,输入buad是1152。
结果:这时temp2=32833-temp1, temp1是65
再把32833改为32768
结果:说明保存的最大数值只能是32767,即0xFFF
然后再一顿优化
结果如下:对应波特率115200,时钟频率30MHz时的T2H、T2L正确
再把波特率设置为460800:通信成功
结论:STC8H1K08保存的最高位数为15位,就不知道是硬件问题还是出厂程序问题还是BUG了。