欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于硬件計(jì)時(shí)器的延時(shí)方法

文檔序號(hào):6572285閱讀:832來(lái)源:國(guó)知局
專利名稱:基于硬件計(jì)時(shí)器的延時(shí)方法
基于硬件計(jì)時(shí)器的延時(shí)方法技術(shù)領(lǐng)域
本發(fā)明涉及一種延時(shí)方法,特別是一種基于硬件計(jì)時(shí)器的延時(shí)方法。背景技術(shù)
在對(duì)操作系統(tǒng)驅(qū)動(dòng)軟件的開發(fā)過(guò)程中,經(jīng)常需要對(duì)硬件寄存器進(jìn)行操作,比如對(duì)CPU的GPIO端口進(jìn)行設(shè)置等,而驅(qū)動(dòng)軟件對(duì)硬件的操作經(jīng)常需要硬件在 指定的時(shí)間執(zhí)行操作指令,所以在軟件開發(fā)中需要設(shè)置一延時(shí)程序來(lái)確保硬件 能夠正確及時(shí)地響應(yīng)軟件的操作指令。目前的延時(shí)方法大多通過(guò)一延時(shí)函數(shù)來(lái)完成,如圖1所示,在該延時(shí)函數(shù) 中,程序通過(guò)執(zhí)行若干次循環(huán)語(yǔ)句來(lái)達(dá)到延時(shí)的目的,包括以下步驟首先程 序判斷是否已達(dá)到預(yù)設(shè)的循環(huán)次數(shù)d,若是則結(jié)束,否則執(zhí)行步驟102 (步驟101); 程序判斷是否滿足條件A ,若滿足則執(zhí)行步驟103,否則執(zhí)行步驟104 (步驟102); 程序執(zhí)行m次循環(huán)后返回步驟101,每次循環(huán)執(zhí)行--調(diào)試指令(步驟103);程序 執(zhí)行n次循環(huán)后返回步驟101,每次循環(huán)執(zhí)行一調(diào)試指令(步驟104)。在該延時(shí)程序中,步驟101中的循環(huán)次數(shù)d及步驟103中的循環(huán)次數(shù)m和 步驟104中的循環(huán)次數(shù)n均為程序開發(fā)人員預(yù)先設(shè)定好的數(shù)值,可根據(jù)等待時(shí) 間的長(zhǎng)短分別設(shè)定其為不同的數(shù)值,而步驟102中的條件A可為一條件編譯指 令。如此即可通過(guò)程序控制來(lái)達(dá)到延時(shí)的目的。然而,采用上述延時(shí)函數(shù)的方法適用性較差,對(duì)于不同的硬件和軟件環(huán)境 均需對(duì)其中的循環(huán)次數(shù)進(jìn)行修改;以WinCE嵌入式操作系統(tǒng)為例,由于WinCE 操作系統(tǒng)為一多線程操作系統(tǒng),每個(gè)線程的優(yōu)先級(jí)將會(huì)直接影響該線程占有CPU 的時(shí)間,從而影響該延時(shí)函數(shù)的執(zhí)行時(shí)間,另外,CPU的頻率也會(huì)影響到每條軟 件指令的執(zhí)行時(shí)間;由此可知,采用如上所述的純軟件方式并不能準(zhǔn)確實(shí)現(xiàn)延 時(shí)功能,其延遲時(shí)間會(huì)出現(xiàn)一定的誤差,從而可能會(huì)導(dǎo)致硬件不能正確及時(shí)地 響應(yīng)。
發(fā)明內(nèi)容鑒于以上問(wèn)題,本發(fā)明提供一種基于硬件計(jì)時(shí)器的延時(shí)方法,采用軟件與 硬件結(jié)合的方式,以克服純軟件方式不能準(zhǔn)確延時(shí)的缺陷。為實(shí)現(xiàn)上述目的,本發(fā)明所提供的基于硬件計(jì)時(shí)器的延時(shí)方法,該方法結(jié) 合硬件計(jì)時(shí)器與存儲(chǔ)于電腦中的程序?qū)崿F(xiàn)延時(shí),該計(jì)時(shí)器為一數(shù)值遞減型計(jì)時(shí) 器,該延時(shí)方法包括以下步驟A. 程序讀取硬件計(jì)時(shí)器中數(shù)值寄存器的當(dāng)前值b;B. 程序比較數(shù)值寄存器當(dāng)前值b與需要要等待的時(shí)間a,若b大于a則執(zhí)行步理C,否則執(zhí)行步驟E:C. 程序設(shè)定一變Jtc,并初始化其值為b-a;D. 程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時(shí)完成E. 程序設(shè)定一變量c,并初始化其值為e-(b-a),其中e為該計(jì)時(shí)器的最 大計(jì)數(shù)值;F. 程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則繼續(xù)執(zhí)行步據(jù)G;G. 程序判斷數(shù)值寄存器當(dāng)前值b是否大于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時(shí)完成。另外,本發(fā)明所提供的基于硬件計(jì)時(shí)器的延時(shí)方法,該方法結(jié)合硬件計(jì)時(shí) 器與存儲(chǔ)于電腦中的程序?qū)崿F(xiàn)延時(shí),該計(jì)時(shí)器為一數(shù)值遞塌型計(jì)時(shí)器,該延時(shí) 方法包括以下步猓A. 程序讀取硬件計(jì)時(shí)器中數(shù)值寄存器的當(dāng)前值b;B. 程序比較數(shù)值寄存器當(dāng)前值b與需要要等待的時(shí)間a之和是否大于程 序最大計(jì)數(shù)值e,若是則執(zhí)行步驟E,否則執(zhí)行步驟C;C. 程序設(shè)定一變量c,并初始化其值為b+a:D. 程序判斷數(shù)值寄存器當(dāng)前值b是否不大于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時(shí)完成E. 程序設(shè)定一變量c,并初始化其值為(b+a)-e,其中e為該計(jì)時(shí)器的最 大計(jì)數(shù)值;F. 程序判斷數(shù)值寄存器當(dāng)前值b是否大于c,若是則重復(fù)執(zhí)行本步驟, 否則繼續(xù)執(zhí)行步驟G;G. 程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時(shí)完成。與現(xiàn)有技術(shù)相比,本發(fā)明所提供的延時(shí)方法采用軟件控制與硬件計(jì)時(shí)器結(jié)延時(shí)更為準(zhǔn)確,且本發(fā)明所提供的延時(shí)方法在軟件或硬件環(huán)境發(fā)性改時(shí)其延時(shí) 精度并不會(huì)戔到較大的影響,比純軟件實(shí)現(xiàn)的延時(shí)方法具有更強(qiáng)的通用性。
圖1為現(xiàn)有延時(shí)方法流程圖;圖2為本發(fā)明所提供的基于硬件計(jì)時(shí)器的延時(shí)方法第一實(shí)施例的流程圖豕 圖3為本發(fā)明所提供的基于硬件計(jì)時(shí)器的延時(shí)方法第二實(shí)施例的流程圖.具體實(shí)施方式為對(duì)本發(fā)明的工作流程有更進(jìn)一步的了解,以下結(jié)合附圖進(jìn)行詳細(xì)說(shuō)明。 請(qǐng)參閱圖2所示,為本發(fā)明所提供的基于硬件計(jì)時(shí)器的延時(shí)方法第一實(shí)施例的流程圖;在本實(shí)施例中,該硬件計(jì)時(shí)器為一數(shù)值遞減型的看門狗計(jì)時(shí)器 (Watchdog timer),該計(jì)時(shí)器可以從一個(gè)預(yù)先設(shè)置好的最大計(jì)數(shù)值開始以不變的速度遞減,每遞減一次計(jì)時(shí)器數(shù)值減l,當(dāng)減到0之后重新變回最大值循環(huán)計(jì)數(shù)。如圖2所示,該延時(shí)方法包括以下步驟程序讀取硬件計(jì)時(shí)器中數(shù)值寄存 器的當(dāng)前值b(步驟201);程序比較數(shù)值寄存器當(dāng)前值b與需要要等待的時(shí)間a, 若b大于a則執(zhí)行步驟203,否則執(zhí)行步驟205(步驟202);程序設(shè)定一變量c 并初始化其值為b與a的和(步驟203);程序判斷數(shù)值寄存器當(dāng)前值b是否不小 于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束(步驟204);計(jì)時(shí)器計(jì)時(shí)開始,到 達(dá)時(shí)間后數(shù)值寄存器的值c的大小為e-(b-a),其中e為該計(jì)時(shí)器的最大計(jì)數(shù)值 (步驟205);程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步 驟,否則繼續(xù)執(zhí)行步驟207 (步驟206);程序判斷數(shù)值寄存器當(dāng)前值b是否大于 c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束(步驟207)。請(qǐng)參閱圖3所示,為本發(fā)明所提供的基于硬件計(jì)時(shí)器的延時(shí)方法第二實(shí)施 例的流程圖;在本實(shí)施例中,該硬件計(jì)時(shí)器為一數(shù)值遞增型的看門狗計(jì)時(shí)器 (Watchdog timer),該計(jì)時(shí)器可以從0開始以不變的速度遞增,每遞增一次該 .計(jì)時(shí)器數(shù)值加1,遞增到一個(gè)預(yù)先設(shè)置好的最大計(jì)數(shù)值之后重新變回0計(jì)數(shù)。如圖3所示,該延時(shí)方法包括以下步驟程序讀取硬件計(jì)時(shí)器中數(shù)值寄存 器的當(dāng)前值b(步驟301):程序比較數(shù)值寄存器當(dāng)前值b與需要要等待的時(shí)間a 之和是否大于程序最大計(jì)數(shù)值e,若是則執(zhí)行步驟303,否則執(zhí)行步驟305(步驟 302);程序設(shè)定--變量c,并初始化其值為(b+a)-e,其中e為該計(jì)時(shí)器的最大 計(jì)數(shù)值(歩驟303);程序判斷數(shù)值寄存器當(dāng)前值b是否不大于c,若是則重復(fù)執(zhí) 行本步驟,否則程序結(jié)束(步驟304);程序設(shè)定一變量c,并初始化其值為 (b+a)-e,其中e為該計(jì)時(shí)器的最大計(jì)數(shù)值(步驟305);程序判斷數(shù)值寄存器當(dāng) 前值b是否大于c,若是則重復(fù)執(zhí)行本步驟,否則繼續(xù)執(zhí)行步驟307 (步驟306); 程序判斷數(shù)值寄存器當(dāng)前值b是否大于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié) 束(步驟307)。以上所述的本發(fā)明的兩個(gè)實(shí)施例中,最大計(jì)數(shù)值e受該硬件計(jì)時(shí)器自身的 限制,若此計(jì)時(shí)器的時(shí)鐘長(zhǎng)度為i位,則此最大計(jì)數(shù)值可以為從0到2i中的任 意--個(gè)正整數(shù)(不包括2》,如在此二實(shí)施例中該看門狗計(jì)時(shí)器的時(shí)鐘長(zhǎng)度均為 16位,則此最大計(jì)數(shù)值為從0到65536中的任--個(gè)正整數(shù)(不包括65536),該 最大計(jì)數(shù)值可由用戶在此范圍內(nèi)自行調(diào)整,且等待的時(shí)間a應(yīng)不大于此最大計(jì) 數(shù)值,否則該計(jì)數(shù)器將出現(xiàn)溢出錯(cuò)誤。且在以上二實(shí)施例中,所用到的變量a、 b均為--整型變量,且a的時(shí)間單位與計(jì)時(shí)器數(shù)值每變化(減小或增大)--次的時(shí) 間間隔(計(jì)時(shí)器的精度)是--致的,即若計(jì)時(shí)器的每1毫秒(ms)變化一次,則a 的時(shí)間單位也為毫秒,而該計(jì)時(shí)器的最小時(shí)間間隔也由用戶自行調(diào)節(jié),如可調(diào)節(jié)為l秒(s)或l微秒(HS)變化一次。以上二實(shí)施例中所述的硬件計(jì)時(shí)器均為一看門狗計(jì)時(shí)器,而在實(shí)際應(yīng)用中, 具有同樣功能的計(jì)時(shí)器裝置均可做為本硬件計(jì)時(shí)器的實(shí)施例。由于硬件計(jì)時(shí)器的計(jì)時(shí)精度非常高(可以精確到1毫秒甚至1微秒),故本 發(fā)明提供的延時(shí)方法之延時(shí)亦非常準(zhǔn)確,本發(fā)明采用軟件與硬件結(jié)合的方式, 使得本方法在不同的軟件及硬件環(huán)境中均可適用,故具有較好的推廣價(jià)值。
權(quán)利要求
1. 一種基于硬件計(jì)時(shí)器的延時(shí)方法,該方法結(jié)合硬件計(jì)時(shí)器與存儲(chǔ)于電腦中的程序來(lái)實(shí)現(xiàn)延時(shí),且該計(jì)時(shí)器為一數(shù)值遞減型計(jì)時(shí)器,其特征在于,該延時(shí)方法包括以下步驟A.程序讀取硬件計(jì)時(shí)器中數(shù)值寄存器的當(dāng)前值b;B.程序比較數(shù)值寄存器當(dāng)前值b與需要要等待的時(shí)間a,若b大于a則執(zhí)行步驟C,否則執(zhí)行步驟E;C.程序設(shè)定一變量c,并初始化其值為b-a;D.程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束,延時(shí)完成;E.程序設(shè)定一變量c,并初始化其值為e-(b-a),其中e為該計(jì)時(shí)器的最大計(jì)數(shù)值;F.程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟,否則繼續(xù)執(zhí)行步驟G;G.程序判斷數(shù)值寄存器當(dāng)前值b是否大于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束,延時(shí)完成。
2. 如權(quán)利要求1所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該硬件 計(jì)時(shí)器為 -看門狗計(jì)時(shí)器。
3. 如權(quán)利要求1所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該延時(shí) 方法中所用到的變量a、 b、 c及e均為一正整型變量。
4. 如權(quán)利要求1所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該延時(shí) 方法中等待的時(shí)間a不大于計(jì)時(shí)器最大計(jì)數(shù)值e。
5. 如權(quán)利要求1所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該延時(shí) 方法中等待的時(shí)間a的時(shí)間單位與該計(jì)時(shí)器每遞減一次的時(shí)間間隔是--致的, 可為1毫秒或1微秒或1秒。
6. 如權(quán)利要求1所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該硬件 計(jì)時(shí)器的最大計(jì)數(shù)值e受該硬件計(jì)數(shù)器時(shí)鐘長(zhǎng)度的限制,若硬件計(jì)數(shù)器時(shí)鐘長(zhǎng) 度為i,則e為從0到中的任意一個(gè)正整數(shù)(不包括2j)。
7. 如權(quán)利要求1到6中任一項(xiàng)所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征 在于該硬件計(jì)時(shí)器從最大計(jì)數(shù)值e開始以不變的速度遞減,每次遞減l,計(jì)時(shí) 器數(shù)值遞減到0時(shí)重新從最大計(jì)數(shù)值e開始循環(huán)計(jì)數(shù)。
8. —種基于硬件計(jì)時(shí)器的延時(shí)方法,該方法結(jié)合硬件計(jì)時(shí)器與存儲(chǔ)于電腦 中的程序?qū)崿F(xiàn)延時(shí),且該計(jì)時(shí)器為--數(shù)值遞增型計(jì)時(shí)器,其特征在于,該延時(shí) 方法包括以下步驟A. 程序讀取硬件計(jì)時(shí)器中數(shù)值寄存器的當(dāng)前值b;B. 程序比較數(shù)值寄存器當(dāng)前值b與需要要等待的時(shí)間a之和是否大于程 序最大計(jì)數(shù)值e,若是則執(zhí)行步驟E,否則執(zhí)行步驟C;C. 程序設(shè)定一變量c,并初始化其值為b+a;D. 程序判斷數(shù)值寄存器當(dāng)前值b是否不大于c,若是則重復(fù)執(zhí)行本步驟,否則程序結(jié)束,延時(shí)完成;E. 程序設(shè)定一變量c,并初始化其值為(b+a)-e,其中e為該計(jì)時(shí)器的最大計(jì)數(shù)值;F. 程序判斷數(shù)值寄存器當(dāng)前值b是否大于c,若是則重復(fù)執(zhí)行本步驟, 否則繼續(xù)執(zhí)行步驟G;G. 程序判斷數(shù)值寄存器當(dāng)前值b是否不小于c,若是則重復(fù)執(zhí)行本步驟, 否則程序結(jié)束,延時(shí)完成。
9. 如權(quán)利要求8所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該硬件 計(jì)時(shí)器為一看門狗計(jì)時(shí)器。
10. 如權(quán)利要求8所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該延 時(shí)方法中所用到的變量a、 b、 c及e均為一正整型變量。
11. 如權(quán)利要求8所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該延時(shí) 方法中等待的時(shí)間a不大于計(jì)時(shí)器最大計(jì)數(shù)時(shí)e。
12. 如權(quán)利要求8所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該延時(shí) 方法中等待的時(shí)間a的時(shí)間單位與該計(jì)時(shí)器每遞增一次的時(shí)間間隔是一致的, 可為1毫秒或1微秒或1秒。
13. 如權(quán)利要求8所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特征在于該硬件 計(jì)時(shí)器的最大計(jì)數(shù)值e受該硬件計(jì)數(shù)器時(shí)鐘長(zhǎng)度的限制,若硬件計(jì)數(shù)器時(shí)鐘長(zhǎng) 度為i,則e為從0到2j中的任意一個(gè)正整數(shù)(不包括2j)。
14. 如權(quán)利要求8到13中任一項(xiàng)所述的基于硬件計(jì)時(shí)器的延時(shí)方法,其特 征在于該硬件計(jì)時(shí)器從O開始以不變的速度遞增,每次遞增l,計(jì)時(shí)器數(shù)值遞 增到最在計(jì)數(shù)值e時(shí)重新從最大計(jì)數(shù)值0開始循環(huán)計(jì)數(shù)。
全文摘要
一種基于硬件計(jì)時(shí)器的延時(shí)方法,該方法結(jié)合硬件計(jì)時(shí)器與存儲(chǔ)于電腦中的程序?qū)崿F(xiàn)延時(shí),該計(jì)時(shí)器為一數(shù)值遞減型計(jì)時(shí)器或一數(shù)值遞增型計(jì)時(shí)器,該延時(shí)方法通過(guò)程序讀取當(dāng)前計(jì)時(shí)器數(shù)值并判斷當(dāng)前計(jì)時(shí)器數(shù)值是否到達(dá)等待時(shí)間以達(dá)到延時(shí)的目的;本延時(shí)方法采用軟件控制與硬件計(jì)時(shí)結(jié)合的方式,依靠硬件計(jì)時(shí)的精確性及軟件控制的靈活性實(shí)現(xiàn)精確延時(shí),且本發(fā)明所提供的延時(shí)方法在硬件或軟件環(huán)境發(fā)生改變時(shí),其延時(shí)精度并不會(huì)受較大的影響,具有較強(qiáng)的適應(yīng)性。
文檔編號(hào)G06F9/44GK101236514SQ20071003706
公開日2008年8月6日 申請(qǐng)日期2007年2月1日 優(yōu)先權(quán)日2007年2月1日
發(fā)明者楊春妮, 王懷井, 臧東明 申請(qǐng)人:環(huán)達(dá)電腦(上海)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
张家口市| 七台河市| 达拉特旗| 旬邑县| 左权县| 通化县| 井陉县| 江川县| 含山县| 和田市| 绥化市| 扬州市| 北碚区| 鄱阳县| 湖北省| 吉水县| 博客| 依安县| 资讯 | 广昌县| 绥宁县| 明溪县| 蒙自县| 泰来县| 溧阳市| 尼玛县| 崇信县| 历史| 枣庄市| 鸡泽县| 八宿县| 临湘市| 双鸭山市| 蒙阴县| 阳曲县| 本溪市| 青田县| 江达县| 宣恩县| 菏泽市| 农安县|