技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新品推广

提供新的芯片及解决方案,提升客户产品竞争力

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

MICROCHIP单片机的定时器精准计算

更新时间: 2019-01-05
阅读量:2740

在此用了16C711单片机的TMR0做定时中断,希望实现精准计时,在程序中,TMR0用了晶振的32分频,初值#0FCH,因此POPBEAR兄弟计算出每个定时中断的计时时间为(256-X)324/32768=0.015625秒。注意,问题就在这里!实际上这个时间是TMR0的初值被置入后两个指令周期后(见PIC单片机定时器/计数器资料)到下一次中断发生时的时间。如果要用到定时器的精准定时,必须理解这一概念!

如采用32768Hz的晶振,每个指令周期为122us,在中断处理程序中,到TMR0的初值被置入,共有7条指令,加上TMR0的初值被置入后两个指令周期,如果中断处理程序不直接放在0004H地址而采用GOTO指令的两个周期,一共为11个指令周期。也就是说,每个定时中断发生的间隔为0.015625秒+11122us。程序中64次中断为1秒,那么1秒误差为6411*122us=85.9375ms,1分钟的误差为5.156s。

那么怎样得到精准计时呢?这就要在对定时器的初值赋值上和中断处理程序中做文章