基于微控制器的倒計時(shí)算法與實(shí)現
下面對圖3的代碼逐條分析。
圖3- 1 就是按時(shí)間規則進(jìn)行時(shí)間借位。其實(shí)質(zhì)是小時(shí)單位向天數單位借1天, 增加24小時(shí); 分鐘單位向小時(shí)單位借1小時(shí), 增加60分鐘; 秒單位向分鐘單位借1分鐘, 增加60秒。
圖3- 2是時(shí)間差相減。注意, 因為天數差被借走一天, 所以要減1。
圖3- 3 是根據計算結果進(jìn)行進(jìn)位補償。因為經(jīng)過(guò)借位, 相減的結果有可能超過(guò)時(shí)間單位的上限,此時(shí)就要按時(shí)間規則進(jìn)位。
請注意, 圖3代碼是以天數為最高時(shí)間單位的借位計算, 可以根據實(shí)際需要把最大的時(shí)間單位設為小時(shí)或分鐘。
在實(shí)際的時(shí)間差相減計算中, 為了避免負值的出現, 應先從天數開(kāi)始對兩個(gè)時(shí)間差的時(shí)間單位比較數值大小, 其結果按三種情況處理。
( 1)若當前時(shí)間點(diǎn)的時(shí)間單位超過(guò)目標時(shí)間點(diǎn)的時(shí)間單位, 表明倒計時(shí)結束。
( 2)若兩個(gè)時(shí)間單位相同, 當時(shí)間單位為秒時(shí),表明倒計時(shí)結束, 否則進(jìn)入次一級時(shí)間單位的判斷。
( 3)若當前時(shí)間點(diǎn)的時(shí)間單位小于目標時(shí)間點(diǎn)的時(shí)間單位, 則視此時(shí)間單位為最高時(shí)間單位, 進(jìn)行借位相減計算。
由此, 即可計算出兩個(gè)時(shí)間點(diǎn)的精確時(shí)間差。
圖3 時(shí)間差借位相減參考代碼。
4 結束語(yǔ)
在上面的介紹中, 先討論了倒計時(shí)的兩種算法,再擇優(yōu)對其中一種算法進(jìn)行了詳細的闡述。該算法已在實(shí)際項目中獲得應用, 其計時(shí)準確, 工作穩定。
評論