基于微控制器的倒计时算法与实现
下面对图3的代码逐条分析。
图3- 1 就是按时间规则进行时间借位。其实质是小时单位向天数单位借1天, 增加24小时; 分钟单位向小时单位借1小时, 增加60分钟; 秒单位向分钟单位借1分钟, 增加60秒。
图3- 2是时间差相减。注意, 因为天数差被借走一天, 所以要减1。
图3- 3 是根据计算结果进行进位补偿。因为经过借位, 相减的结果有可能超过时间单位的上限,此时就要按时间规则进位。
请注意, 图3代码是以天数为最高时间单位的借位计算, 可以根据实际需要把最大的时间单位设为小时或分钟。
在实际的时间差相减计算中, 为了避免负值的出现, 应先从天数开始对两个时间差的时间单位比较数值大小, 其结果按三种情况处理。
( 1)若当前时间点的时间单位超过目标时间点的时间单位, 表明倒计时结束。
( 2)若两个时间单位相同, 当时间单位为秒时,表明倒计时结束, 否则进入次一级时间单位的判断。
( 3)若当前时间点的时间单位小于目标时间点的时间单位, 则视此时间单位为最高时间单位, 进行借位相减计算。
由此, 即可计算出两个时间点的精确时间差。
图3 时间差借位相减参考代码。
4 结束语
在上面的介绍中, 先讨论了倒计时的两种算法,再择优对其中一种算法进行了详细的阐述。该算法已在实际项目中获得应用, 其计时准确, 工作稳定。
评论