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条回答
godjohsn
1楼-- · 2019-03-25 22:14
原帖由 ddllxxrr 于 2011-7-19 13:07 发表 2的13次方才是8192也就是说楼主要定的数超了,应用十六位装载模式,即模式一来操作


为什么超了呢?

算出来的7424<8192

应该可以吧?


chunyang
2楼-- · 2019-03-25 23:06
 精彩回答 2  元偷偷看……
tiankai001
3楼-- · 2019-03-26 00:20
没有考虑其它指令占用的时间,。应该加个时间补偿的
wwq123030627
4楼-- · 2019-03-26 01:55
你用keil软件调试看时间,代码运行也要时间的
gz475514589
5楼-- · 2019-03-26 06:53
辛昕
6楼-- · 2019-03-26 09:28
程序拿来瞧瞧.....
C还是汇编?

一周热门 更多>