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条回答
仙猫
1楼-- · 2019-03-24 20:46
 假如定时器的赋值计算没错(俺没用过51,不知定时器是咋算的),有没有利用自动重装载功能?假如不是硬件,而是每次进入中断服务程序由软件重装载的话,从中断请求到响应再到实际写定时器的时间损失就会成为误差的原因。
mcuPathfinder
2楼-- · 2019-03-25 02:06
 精彩回答 2  元偷偷看……
常见泽1
3楼-- · 2019-03-25 07:48
51很久不玩了  貌似指令也要占时间的把
ddllxxrr
4楼-- · 2019-03-25 13:17
2的13次方才是8192也就是说楼主要定的数超了,应用十六位装载模式,即模式一来操作
ddllxxrr
5楼-- · 2019-03-25 15:56
51定时器老准了,都像楼主差那么大,根本不能用了,还行成什么产品啊?
astwyg
6楼-- · 2019-03-25 19:16
误差在机器周期那个数量级上.不会差很多

一周热门 更多>