• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    51單片機中for循環(huán)延時時間的分析與仿真驗證

    2015-07-27 07:38:45薛金水廣東工程職業(yè)技術(shù)學(xué)院廣州510520
    山東工業(yè)技術(shù) 2015年19期
    關(guān)鍵詞:單片機

    薛金水(廣東工程職業(yè)技術(shù)學(xué)院,廣州 510520)

    51單片機中for循環(huán)延時時間的分析與仿真驗證

    薛金水
    (廣東工程職業(yè)技術(shù)學(xué)院,廣州510520)

    摘要:在單片機控制中,延時控制是最常用的程序之一。本文對51系列單片機中各種for循環(huán)程序?qū)?yīng)的匯編代碼進行分析,探究延時時間長短的各種決定因素,提出了應(yīng)用for循環(huán)實現(xiàn)延時時間的一般估算方法和注意要素。并通過Proteus軟件仿真,對延時控制程序的時間進行驗證。

    關(guān)鍵詞:單片機;for循環(huán);延時控制;匯編代碼;Proteus仿真

    1 引言

    在單片機控制中,延時控制是最常用的程序之一。通過延時,一方面使系統(tǒng)硬件各部分按照步驟設(shè)定,一步一步執(zhí)行下去;另一方面使系統(tǒng)的硬件和軟件能夠協(xié)調(diào)運行,完成設(shè)定的傳輸和控制功能。延時控制既可以用硬件、也可以用軟件來實現(xiàn)。軟件控制可以用匯編語言或者C語言程序來實現(xiàn)。雖然匯編語言有指令緊湊、控制時間精確、占用內(nèi)存少等特點,但是它相對難于掌握。由于C語言具有語言功能齊全、使用靈活方便、開發(fā)效率高,相對容易掌握等特點,被廣泛應(yīng)用于在單片機系統(tǒng)開發(fā)應(yīng)用中。

    在C語言延時程序設(shè)計中,常用三種循環(huán)語句(while語句、do while語句和for語句)實現(xiàn)延時功能。其中以for循環(huán)延時最為常見。本文從應(yīng)用需要角度出發(fā),依據(jù)單片機C語言for循環(huán)的各種不同形式,通過具體實例,對照編譯生成的匯編代碼,分析、歸納總結(jié)出C語言for循環(huán)延時程序的延時時間估算方法及,通過Proteus軟件仿真進行驗證,并提出使用建議。

    2 各種for循環(huán)語句程序延時結(jié)果分析

    用C語言編寫的單片機程序,首先要轉(zhuǎn)換為匯編語言,最后編譯為機器代碼后才能真正運行。因此,對于用C語言編寫的各種延時程序,只有通過從其匯編轉(zhuǎn)換代碼上計算其實現(xiàn)延時時間,才是比較準確時間估算的方法。

    2.1決定for循環(huán)延時時間長短的因素

    從各種for循環(huán)語句程序延時情況進行分析和驗證,發(fā)現(xiàn):與延時結(jié)果有關(guān)的因素有如下三個:循環(huán)變量類型(char或者int類型)、循環(huán)變量變化方式(遞增或者遞減)和循環(huán)次數(shù)(是否超過256)。下表是考慮上述三種因素的不同for循環(huán)延時程序的匯編代碼與實際延時時間分析和比較。

    表1 循環(huán)變量為char類型的for循環(huán)延時程序

    從表1可以看出,以char類型為循環(huán)變量、循環(huán)變量遞減變化時,是使用寄存器R7,以DJNZ語句為循環(huán)體,延時時間為1+2x125=251us;以char類型為循環(huán)變量、循環(huán)變量遞增變化時,同樣使用寄存器R7,以加1指令I(lǐng)NC和CJNZ語句為循環(huán)體,延時時間為1+(2+1)x126=379us。采用char類型為循環(huán)變量時,循環(huán)變量遞增與遞減變化時,其延時時間差別比較大。

    表2 循環(huán)變量為int類型的for循環(huán)延時程序

    從表2可以看出,以int類型為循環(huán)變量時,只要循環(huán)次數(shù)不超過256次,則循環(huán)變量無論是遞減還是遞增變化,匯編語言都是使用寄存器R6和R7,以INC、CJNE或DJNZ語句為循環(huán)體,在循環(huán)次數(shù)相同時延時時間近似相等,循環(huán)次數(shù)增加時延時時間按照比例增加(見函數(shù)5、6、7、8);當(dāng)循環(huán)次數(shù)超過256次,延時時間不再成比例增加,例如:采用(unsigned)int;for(i=500;i>=1;i--);的延時時間約為4000us;采用(unsigned)int;for(i=1;i<=500;i++);的延時時間約為3000us。讀者可自行驗證。

    2.2for循環(huán)延時程序的應(yīng)用

    從以上分析可以看出:采用char類型為循環(huán)變量類型時,循環(huán)變量按照遞加或者遞減變化時,延時時間會差別較大;采用int類型為循環(huán)變量類型時,在循環(huán)次數(shù)不超過256次時,按照遞加或者遞減變化時,延時時間差別很小;而當(dāng)循環(huán)次數(shù)超過256次時,其延時時間不能夠?qū)崿F(xiàn)等比例增加。

    所以,從應(yīng)用角度出發(fā),采用定義i為整型時,以for(i=125;

    i>=1;i--);或者for(i=1;i<=125;i++);語句來作為1ms基本延時函數(shù),不用考慮循環(huán)變量是遞加還是遞減,比較簡單易掌握。需要較長的延時時間采用二重循環(huán)的方式。采用二重循環(huán)的方式,最長可以延長255ms,能夠滿足一般的延時需求。如果需要更長時間延時,則可以用三重甚至多重循環(huán)方式,但是循環(huán)次數(shù)一般不能超過256次。

    例如:要實現(xiàn)延時10ms,則可以用如下循環(huán)

    3 C語言程序軟件延時功能的Proteus仿真軟件

    C語言延時功能實現(xiàn)過程中,為了驗證其延時的正確性,一方面可以利用示波器來測定延時程序執(zhí)行時間,即設(shè)計一個基本單片機硬件電路,將包含實現(xiàn)延時函數(shù)的程序下載到單片機硬件電路,在程序中運行該延時函數(shù),通過測量示波器相關(guān)輸出引腳上的高、低電平時間,即可確定延時函數(shù)執(zhí)行時間;也可以采用反匯編方法,即利用Proteus軟件將用C51編寫的延時函數(shù)轉(zhuǎn)換為匯編語言程序,通過計算匯編語言程序的運行時間得到該延時函數(shù)的運行時間;或者利用KeilC51編譯器中的斷點調(diào)試功能來模擬執(zhí)行延時代碼所需的時間,即在延時函數(shù)前、后設(shè)置斷點,通過比較兩個斷點的時間變化來確定延時程序?qū)嶋H執(zhí)行時間。

    這里介紹一種與單片機教學(xué)緊密結(jié)合,又比較容易實現(xiàn)的方法,即是利用Proteus軟件仿真功能來搭建一個硬件電路,然后將目標程序經(jīng)編譯后生成HEX文件,寫入C51單片機中,利用Proteus中的虛擬示波器觀察設(shè)置輸出引腳(如P1.0)波形的變化周期來判斷是否實現(xiàn)預(yù)定延時功能。

    例如:執(zhí)行上述延時10ms程序來控制輸出引腳(如P1.0)變化,將其生成的.HEX文件寫入單片機仿真電路中,利用Proteus中的虛擬示波器生成波形來判斷是否實現(xiàn)預(yù)定延時功能。如上述程序的波形圖如圖1。

    從波形圖和相關(guān)旋鈕可以看出,該波形的幅度為5格*1V/格=5V,高、電平為2格*5ms/格=10ms,實現(xiàn)其延時功能。

    圖1

    4 結(jié)束語

    本文通過分析比較,提出一種比較可靠的1ms基本延時函數(shù)實現(xiàn)方法,通過對該延時函數(shù)的循環(huán),便可以實現(xiàn)較長時間延時。通過軟件仿真,對延時控制程序的時間精確度進行驗證和分析,并且可以根據(jù)實際延時輸出情況進行調(diào)整。本文介紹單片機延時控制的實現(xiàn)方法比較容易掌握實現(xiàn),對延時精確度要求不是特別高的場合,具有一定的參考和應(yīng)用價值。

    參考文獻:

    [1]陳宏希.51單片機中for循環(huán)延時時間的估算[J].蘭州石化職業(yè)技術(shù)學(xué)院學(xué)報,2013,13(04):34-36.

    [2]戴娟.單片機技術(shù)與應(yīng)用[M].高等教育出版社,2012(10).

    [3]吳挺運,林成何.KeilC51精確延時程序設(shè)計[J].電子科技,2012 (12):103-106.

    [4]林立,張俊亮.單片機原理及應(yīng)用——基于Proteus和Keil C(第3版)[M].電子工業(yè)出版社,2014(08).

    作者簡介:薛金水(1974-),男,廣東興寧人,本科,研究方向:電子信息類專業(yè)教學(xué)和研究。

    猜你喜歡
    單片機
    基于單片機的SPWM控制逆變器的設(shè)計與實現(xiàn)
    電子制作(2019年13期)2020-01-14 03:15:28
    基于單片機的層次漸變暖燈的研究
    電子制作(2019年15期)2019-08-27 01:12:10
    基于單片機的多功能智能插排
    電子制作(2019年11期)2019-07-04 00:34:48
    基于單片機的便捷式LCF測量儀
    電子制作(2019年9期)2019-05-30 09:42:02
    小議PLC與單片機之間的串行通信及應(yīng)用
    電子制作(2018年12期)2018-08-01 00:48:04
    MSP430單片機在仿真中要注意的幾點問題
    電子制作(2017年9期)2017-04-17 03:00:53
    基于單片機的平衡控制系統(tǒng)設(shè)計
    電子制作(2017年19期)2017-02-02 07:08:27
    基于單片機的三維LED點陣設(shè)計
    電子制作(2016年21期)2016-05-17 03:52:51
    Microchip推出兩個全新PIC單片機系列
    基于Proteus的單片機控制系統(tǒng)的仿真設(shè)計
    凯里市| 探索| 吉林市| 佛坪县| 炎陵县| 马山县| 诸城市| 陆川县| 广灵县| 桃源县| 阜新| 汶川县| 墨江| 大洼县| 北川| 镇赉县| 宜昌市| 延川县| 赣榆县| 吉首市| 山丹县| 丹东市| 衡东县| 布拖县| 青海省| 贞丰县| 丰宁| 永昌县| 澜沧| 崇明县| 嫩江县| 拜泉县| 中牟县| 铅山县| 滁州市| 宁晋县| 称多县| 陆河县| 德化县| 敦化市| 宁河县|