发明名称 |
一种51单片机高精度计时方法 |
摘要 |
本发明涉及一种51单片机高精度计时方法,采用了连续读取定时器和适当屏蔽定时器的方法,其中:一、连续两次读取定时器的数值,解决了定时器低8位溢出进位造成的计时误差;二、适当屏蔽定时器并配合读取定时器溢出标志位,解决了定时器低16位溢出进位造成的计时误差,实现了51单片机的高精度计时,且本发明方法仅需要51单片中的定时器即可实现,不需要外围复杂的计时电路,具有相对较低的成本,且方法简单,易于实现,具有较强的实用性。 |
申请公布号 |
CN103605279A |
申请公布日期 |
2014.02.26 |
申请号 |
CN201310487916.X |
申请日期 |
2013.10.17 |
申请人 |
北京控制工程研究所 |
发明人 |
牛和明;陈朝晖;刘端;杨俊春;王晶;李昊然;刘建军 |
分类号 |
G04F10/00(2006.01)I |
主分类号 |
G04F10/00(2006.01)I |
代理机构 |
中国航天科技专利中心 11009 |
代理人 |
范晓毅 |
主权项 |
一种51单片机高精度计时方法,其特征在于:包括如下步骤:(1)、屏蔽51单片机的定时器0;(2)、读取定时器0中的低8位和高8位数值,得到定时器0中寄存器的值Count1,第二次读取定时器0中的低8位和高8位数值,得到定时器0中寄存器的值Count2;(3)、判断当前定时器0是否有溢出,如果没有溢出,进入步骤(4),如果有溢出,重复步骤(2)后直接进入步骤(4);(4)、如果Count1<Count2,则Count1没有发生反转,进入步骤(5);如果Count1≥Count2,则Count1发生了反转,将Count1减去低8位的最大值,再进入步骤(5);(5)、如果在步骤(3)时没有发生定时器0溢出,则最终51单片机的时间计数=中断累加次数×低16位的最大值+Count1;如果在步骤(3)时发生定时器0溢出,则最终51单片机的时间计数=(中断累加次数+1)×低16位的最大值+Count1;(6)、允许响应定时器0中断,结束计时。 |
地址 |
100080 北京市海淀区北京2729信箱 |