51单片机的定时器精度为何这么差?

2019-03-24 19:41发布

我用STC89LE52RC单片机

用定时器0产生600Hz的方波

设定每隔1/1200秒产生一次定时器中断,IO口翻转一次,产生600Hz的方波

用的是定时器0,13位
计算公式如图所示:

计算得到0x1D00
根据手册“该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位补丁,可将其忽略。”
将0x1D00前八位填入TH0,后五位填入TL0的低五位,得到TH0 = 0xE8、TL0 = 0x00
可产生的方波用频率计测只有590Hz,怎么会差这么多?

可排除晶振问题,晶振(11.0592MHz)用频率计测过,误差很小。


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
仙猫
2019-03-24 20:46
 假如定时器的赋值计算没错(俺没用过51,不知定时器是咋算的),有没有利用自动重装载功能?假如不是硬件,而是每次进入中断服务程序由软件重装载的话,从中断请求到响应再到实际写定时器的时间损失就会成为误差的原因。

一周热门 更多>