关于STC8H乘除法的一点小问题

  前几天使用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了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值