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