日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀] 1 引 言  這里的倒計(jì)時(shí)就是計(jì)算出從當(dāng)前時(shí)間點(diǎn)需要經(jīng)過(guò)多長(zhǎng)時(shí)間才能到達(dá)目標(biāo)時(shí)間點(diǎn)。從另一個(gè)角度講, 就是計(jì)算出兩個(gè)時(shí)間點(diǎn)之間的時(shí)間差。  目前, 倒計(jì)時(shí)系統(tǒng)正得到越來(lái)越廣泛的應(yīng)用。  在體育比賽、公交

  1  引  言

  這里的倒計(jì)時(shí)就是計(jì)算出從當(dāng)前時(shí)間點(diǎn)需要經(jīng)過(guò)多長(zhǎng)時(shí)間才能到達(dá)目標(biāo)時(shí)間點(diǎn)。從另一個(gè)角度講, 就是計(jì)算出兩個(gè)時(shí)間點(diǎn)之間的時(shí)間差。

  目前, 倒計(jì)時(shí)系統(tǒng)正得到越來(lái)越廣泛的應(yīng)用。

  在體育比賽、公交系統(tǒng)乃至鐵路系統(tǒng)中出現(xiàn)了很多倒計(jì)時(shí)的時(shí)間顯示。就在前不久, 關(guān)于上海世博會(huì)的倒計(jì)時(shí)正式啟動(dòng), 其精度精確到天。

  在類似的應(yīng)用中, 大多數(shù)情況下, 倒計(jì)時(shí)功能(包括顯示功能)是由微控制器實(shí)現(xiàn)的。微控制器不同于桌面電腦或筆記本電腦, 其系統(tǒng)資源非常有限, 也不能安裝復(fù)雜的操作系統(tǒng), 沒(méi)有現(xiàn)成的倒計(jì)時(shí)系統(tǒng)可以應(yīng)用。下面將討論適合在微控制器中運(yùn)行的倒計(jì)時(shí)算法。

  2  倒計(jì)時(shí)算法的兩種常用思路

  關(guān)于倒計(jì)時(shí)的計(jì)算主要有兩種思路: 一是針對(duì)時(shí)間段倒計(jì)時(shí), 二是針對(duì)目標(biāo)時(shí)間倒計(jì)時(shí)。

  ●針對(duì)時(shí)間段倒計(jì)時(shí)

  時(shí)間段的含義就是兩個(gè)時(shí)間點(diǎn)的時(shí)間差。對(duì)時(shí)間段倒計(jì)時(shí)就是先獲取兩個(gè)時(shí)間點(diǎn)之間的時(shí)間差,然后隨著運(yùn)行時(shí)間的增加對(duì)該時(shí)間差按運(yùn)行時(shí)間遞減, 直至遞減為0, 表示倒計(jì)時(shí)結(jié)束。

  例如, 微處理器對(duì)100天倒計(jì)時(shí)或者對(duì)100秒倒計(jì)時(shí), 都屬于對(duì)時(shí)間段倒計(jì)時(shí), 時(shí)間段分別是100天和100秒。當(dāng)然, 在實(shí)際計(jì)算時(shí), 最好先把天換算為秒, 再按運(yùn)行時(shí)間遞減。

  ●針對(duì)目標(biāo)時(shí)間倒計(jì)時(shí)

  該種思路與第一種思路最大的不同就是它獲取的不是時(shí)間差, 而是目標(biāo)時(shí)間, 微控制器須自行計(jì)算出當(dāng)前時(shí)間與目標(biāo)時(shí)間的時(shí)間差。在這種情況下,隨著當(dāng)前時(shí)間的改變, 微控制器必須反復(fù)計(jì)算與目標(biāo)時(shí)間的時(shí)間差, 直至差值為0。

  例如, 當(dāng)前時(shí)間是2009年5月10 日11點(diǎn)27分0秒, 微控制器獲取到目標(biāo)時(shí)間是2009年5月12日11點(diǎn)27分0秒, 則計(jì)算出當(dāng)前的時(shí)間差為2天。

  然后, 當(dāng)前時(shí)間一旦改變, 微控制器就必須重新計(jì)算時(shí)間差, 直到當(dāng)前時(shí)間到達(dá)或超過(guò)2009年5月12日11點(diǎn)27分0秒。

  ●兩種思路的比較

  ( 1)獲取的時(shí)間參數(shù)不同

  如前所述, 第一種思路獲取的是時(shí)間差, 第二種思路獲取的是目標(biāo)時(shí)間點(diǎn)。

  ( 2)采取的算法不同

  第一種思路的主要算法是按運(yùn)行時(shí)間對(duì)獲取的時(shí)間差進(jìn)行遞減運(yùn)算, 這實(shí)際是時(shí)間計(jì)時(shí)的逆運(yùn)算。

  該算法牽涉到減法運(yùn)算與天、小時(shí)、分鐘、秒的時(shí)間規(guī)則運(yùn)算。

  第二種思路的主要算法就是計(jì)算出兩個(gè)時(shí)間點(diǎn)之間的時(shí)間差。該算法不僅牽涉到時(shí)間規(guī)則運(yùn)算,還牽涉到閏年的概念與多種算術(shù)運(yùn)算, 比第一種思路的算法復(fù)雜許多。此外, 由于該算法需要微控制器能夠隨時(shí)獲取當(dāng)前的準(zhǔn)確時(shí)間, 因此要求微處理器必須具備實(shí)時(shí)時(shí)鐘功能。

  ( 3)應(yīng)用范圍與靈活性不同

  第一種思路的實(shí)現(xiàn)依靠對(duì)運(yùn)行時(shí)間的準(zhǔn)確把握。如果微控制器斷電或由于其它原因產(chǎn)生復(fù)位導(dǎo)致運(yùn)行中斷, 則從此刻起到下一次穩(wěn)定運(yùn)行時(shí)所經(jīng)過(guò)的時(shí)間無(wú)法掌控, 進(jìn)而導(dǎo)致倒計(jì)時(shí)運(yùn)算無(wú)法繼續(xù)運(yùn)行。因此, 該思路只適用于極短時(shí)間段的倒計(jì)時(shí)計(jì)算, 其可靠性與靈活性欠佳。

  第二種思路的實(shí)現(xiàn)需要兩點(diǎn): 一是斷電保護(hù)的實(shí)時(shí)時(shí)鐘功能, 這是為了微控制器能夠隨時(shí)讀取準(zhǔn)確時(shí)間; 二是非易失數(shù)據(jù)的存儲(chǔ)功能, 這是為了微控制器可以長(zhǎng)時(shí)間保存目標(biāo)時(shí)間。滿足了這兩點(diǎn)要求, 微控制器就能夠可靠地實(shí)現(xiàn)倒計(jì)時(shí)計(jì)算, 即使突然斷電或復(fù)位也不會(huì)受到影響。對(duì)于第一點(diǎn)要求,不管使用外置時(shí)鐘還是內(nèi)置時(shí)鐘, 只要配置電池就可以實(shí)現(xiàn)。對(duì)于第二點(diǎn)要求, 當(dāng)前的主流微控制器大都配置FLASH存儲(chǔ)功能, 也可以輕松滿足。

  可見(jiàn), 針對(duì)目標(biāo)時(shí)間的倒計(jì)時(shí)算法在可靠性與靈活性上極具優(yōu)勢(shì), 對(duì)微控制器的要求也不苛刻。

  下面就闡述該算法的實(shí)現(xiàn)環(huán)節(jié)。

  3  針對(duì)目標(biāo)時(shí)間點(diǎn)的倒計(jì)時(shí)算法實(shí)現(xiàn)

  如前所述, 該算法主要是計(jì)算當(dāng)前時(shí)間點(diǎn)與目標(biāo)時(shí)間點(diǎn)的時(shí)間差。具體思路就是先選擇一個(gè)參考時(shí)間點(diǎn), 然后分別計(jì)算出這兩個(gè)時(shí)間點(diǎn)與參考時(shí)間點(diǎn)之間的時(shí)間差, 再把這兩個(gè)時(shí)間差相減就得到這兩個(gè)時(shí)間點(diǎn)之間的時(shí)間差。

  下面分三部分描述該算法: 時(shí)間格式的建立; 計(jì)算時(shí)間點(diǎn)到參考時(shí)間點(diǎn)的時(shí)間差; 時(shí)間差相減算法。

  ( 1)時(shí)間格式的建立

  有兩種時(shí)間格式, 一是時(shí)間點(diǎn)的格式; 一是時(shí)間差的格式。時(shí)間點(diǎn)的格式按年月日時(shí)分秒排列, 其中年份為16位無(wú)符號(hào)整數(shù), 其余為8 位無(wú)符號(hào)整數(shù)。時(shí)間差格式按天時(shí)分秒排列, 天數(shù)為16位無(wú)符號(hào)整數(shù), 其余為8位無(wú)符號(hào)整數(shù)。

  ( 2)到參考時(shí)間點(diǎn)的時(shí)間差算法

  該算法有兩個(gè)重點(diǎn), 一是參考時(shí)間點(diǎn)的選取, 二是根據(jù)閏年規(guī)則對(duì)時(shí)間差中的天數(shù)進(jìn)行補(bǔ)償。

  關(guān)于參考時(shí)間點(diǎn)的選取, 應(yīng)符合兩個(gè)原則: 一是方便閏年的計(jì)算, 二是方便時(shí)間差的計(jì)算。在這里,選取2001年1月1日0時(shí)0分0秒為參考時(shí)間點(diǎn)。

  圖1是時(shí)間點(diǎn)到該參考時(shí)間點(diǎn)算法的示例代碼,pT mi e是指向時(shí)間點(diǎn)的數(shù)據(jù)結(jié)構(gòu)指針, pResult是指向時(shí)間差的數(shù)據(jù)結(jié)構(gòu)指針。下面對(duì)該段代碼逐條說(shuō)明。




 

 


圖1  天數(shù)時(shí)間差參考代碼

  圖1- 1定義了一個(gè)數(shù)組, 它的12個(gè)元素對(duì)應(yīng)1月份到12月份所累積的天數(shù)。請(qǐng)注意兩點(diǎn), 一是該天數(shù)不包括本月份的天數(shù), 二是二月份的天數(shù)按28天計(jì)。

  圖1- 2是計(jì)算時(shí)間點(diǎn)與參考時(shí)間點(diǎn)的年份、月份與日期的差值。

  圖1- 3 是初步計(jì)算天數(shù)差。在這里應(yīng)用到了圖1- 1定義的數(shù)組與圖1- 2的計(jì)算結(jié)果。首先,按照每年365天來(lái)計(jì)算天數(shù), 再按照閏年個(gè)數(shù)補(bǔ)償天數(shù), 最后按月份日期的差值計(jì)算本年度過(guò)的天數(shù)。

  代碼中的( Y earId /4) 就是初步的閏年補(bǔ)償計(jì)算, 補(bǔ)償規(guī)則就是把年份差被4整除的值視為經(jīng)過(guò)的閏年個(gè)數(shù), 也就是要補(bǔ)償?shù)奶鞌?shù)。

  圖1- 4是根據(jù)世紀(jì)年(也就是能被100整除的年份)的閏年判斷規(guī)則對(duì)圖1- 3的計(jì)算結(jié)果進(jìn)行校正。這是因?yàn)閳D1- 3 進(jìn)行的閏年補(bǔ)償計(jì)算所依據(jù)的是非世紀(jì)年的閏年判斷規(guī)則, 這一規(guī)則在判斷世紀(jì)年是否為閏年時(shí)可能會(huì)產(chǎn)生誤差。在這里, 對(duì)該步驟算法采用了條件編譯, 這是考慮到該計(jì)算牽涉到真正的多字節(jié)除法, 比較耗時(shí), 設(shè)計(jì)者可以根據(jù)實(shí)際需要決定是否運(yùn)行該計(jì)算。

  圖1- 5是判斷時(shí)間點(diǎn)的年份是否閏年, 進(jìn)而進(jìn)行最后的天數(shù)調(diào)整。請(qǐng)注意, 在圖1- 3與圖1- 4的計(jì)算中, 只計(jì)算了度過(guò)的年份中包含了多少個(gè)閏年, 這其中不包含時(shí)間點(diǎn)本身的年份。在本計(jì)算中,先調(diào)用函數(shù)判斷時(shí)間點(diǎn)年份是否閏年, 再根據(jù)時(shí)間點(diǎn)的月份是否超過(guò)2月決定是否對(duì)天數(shù)進(jìn)行補(bǔ)償。

  圖1 - 6是記錄時(shí)間差結(jié)果。因?yàn)閰⒖紩r(shí)間點(diǎn)的時(shí)分秒選擇的是0時(shí)0分0秒, 所以時(shí)間差的時(shí)分秒也就是時(shí)間點(diǎn)的時(shí)分秒。

  圖2是閏年判斷函數(shù)的參考代碼。該函數(shù)提供了兩種判斷計(jì)算, 一種是關(guān)于閏年規(guī)則的完整判斷,即當(dāng)年份不能被100整除時(shí), 能被4整除的是閏年;當(dāng)年份能被100整除時(shí), 必須能被400 整除才是閏年。另一種是簡(jiǎn)易判斷, 即把能被4整除的年份視為閏年(當(dāng)然, 該判斷只在年份不能被100整除時(shí)才正確)。這兩種計(jì)算的復(fù)雜程度與應(yīng)用條件不同, 設(shè)計(jì)者應(yīng)根據(jù)實(shí)際需要自行選擇。


 


圖2  閏年檢測(cè)函數(shù)參考代碼

  請(qǐng)注意, 如果參考時(shí)間點(diǎn)選擇的不是2001年1月1日0時(shí)0分0秒, 則上述算法需要進(jìn)行適當(dāng)調(diào)整。

  ( 3)時(shí)間差相減算法時(shí)間差相減算法的主要處理方法是按時(shí)間規(guī)則進(jìn)行借位相減。

  圖3 是完整的時(shí)間差借位相減的參考代碼, 其前提是時(shí)間差中的天數(shù)差不為0。代碼中pT im e0是指向目標(biāo)時(shí)間點(diǎn)與參考時(shí)間點(diǎn)的時(shí)間差數(shù)據(jù)結(jié)構(gòu)的指針, pT ime1是指向當(dāng)前時(shí)間點(diǎn)與參考時(shí)間點(diǎn)的時(shí)間差數(shù)據(jù)結(jié)構(gòu)的指針。

  下面對(duì)圖3的代碼逐條分析。

  圖3- 1 就是按時(shí)間規(guī)則進(jìn)行時(shí)間借位。其實(shí)質(zhì)是小時(shí)單位向天數(shù)單位借1天, 增加24小時(shí); 分鐘單位向小時(shí)單位借1小時(shí), 增加60分鐘; 秒單位向分鐘單位借1分鐘, 增加60秒。

  圖3- 2是時(shí)間差相減。注意, 因?yàn)樘鞌?shù)差被借走一天, 所以要減1。

  圖3- 3 是根據(jù)計(jì)算結(jié)果進(jìn)行進(jìn)位補(bǔ)償。因?yàn)榻?jīng)過(guò)借位, 相減的結(jié)果有可能超過(guò)時(shí)間單位的上限,此時(shí)就要按時(shí)間規(guī)則進(jìn)位。

  請(qǐng)注意, 圖3代碼是以天數(shù)為最高時(shí)間單位的借位計(jì)算, 可以根據(jù)實(shí)際需要把最大的時(shí)間單位設(shè)為小時(shí)或分鐘。

  在實(shí)際的時(shí)間差相減計(jì)算中, 為了避免負(fù)值的出現(xiàn), 應(yīng)先從天數(shù)開(kāi)始對(duì)兩個(gè)時(shí)間差的時(shí)間單位比較數(shù)值大小, 其結(jié)果按三種情況處理。

  ( 1)若當(dāng)前時(shí)間點(diǎn)的時(shí)間單位超過(guò)目標(biāo)時(shí)間點(diǎn)的時(shí)間單位, 表明倒計(jì)時(shí)結(jié)束。

  ( 2)若兩個(gè)時(shí)間單位相同, 當(dāng)時(shí)間單位為秒時(shí),表明倒計(jì)時(shí)結(jié)束, 否則進(jìn)入次一級(jí)時(shí)間單位的判斷。

  ( 3)若當(dāng)前時(shí)間點(diǎn)的時(shí)間單位小于目標(biāo)時(shí)間點(diǎn)的時(shí)間單位, 則視此時(shí)間單位為最高時(shí)間單位, 進(jìn)行借位相減計(jì)算。

  由此, 即可計(jì)算出兩個(gè)時(shí)間點(diǎn)的精確時(shí)間差。


 


圖3  時(shí)間差借位相減參考代碼。

  4  結(jié)束語(yǔ)

  在上面的介紹中, 先討論了倒計(jì)時(shí)的兩種算法,再擇優(yōu)對(duì)其中一種算法進(jìn)行了詳細(xì)的闡述。該算法已在實(shí)際項(xiàng)目中獲得應(yīng)用, 其計(jì)時(shí)準(zhǔn)確, 工作穩(wěn)定。

 

 

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

全球半導(dǎo)體短缺讓所有微控制器使用者的生活都變得難熬了起來(lái),如今的訂貨周期有時(shí)會(huì)長(zhǎng)達(dá)好幾年。不過(guò),售價(jià)4美元的樹(shù)莓派Pico是一個(gè)亮點(diǎn),它是一個(gè)以新型RP2040芯片為基礎(chǔ)的微控制器。RP2040不僅有強(qiáng)大的計(jì)算能力,還沒(méi)...

關(guān)鍵字: 半導(dǎo)體 微控制器 芯片

美國(guó)紐約州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)發(fā)布 2022 年第三季度業(yè)績(jī)報(bào)告。 IBM 董事長(zhǎng)兼首席執(zhí)行官 Arvind Kri...

關(guān)鍵字: IBM 軟件 BSP 云平臺(tái)

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開(kāi)幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過(guò)140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

工業(yè)控制

13704 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉