徐世亮
摘 要:?jiǎn)纹瑱C(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)稱(chēng),是一種集成電路芯片。目前,單片機(jī)已經(jīng)在各個(gè)行業(yè)和領(lǐng)域得到應(yīng)用,很難找到哪一個(gè)領(lǐng)域沒(méi)有應(yīng)用單片機(jī)。單片機(jī)在工業(yè)控制領(lǐng)域的應(yīng)用最為廣泛,如今已步入生活領(lǐng)域,如:家用電器、汽車(chē)電子等。單片機(jī)的應(yīng)用如此廣泛,在人類(lèi)的生活和生產(chǎn)中發(fā)揮的作用越來(lái)越大,對(duì)于單片機(jī)的重視和研究力度也非常大,迄今為止,單片機(jī)已經(jīng)經(jīng)歷了三大階段,并且還在不斷得到發(fā)展和優(yōu)化。本文將主要是探討單片機(jī)的應(yīng)用編程的技巧分析。
關(guān)鍵詞:?jiǎn)纹瑱C(jī) 應(yīng)用編程 技巧分析
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)01(c)-0025-02
單片機(jī)也被稱(chēng)為單片微控制器,它不是完全意義上的完成某邏輯功能的芯片,而是把計(jì)算機(jī)系統(tǒng)集成到芯片上。它具有體積小、重量輕、價(jià)格便宜等優(yōu)點(diǎn),給人們的生產(chǎn)和生活帶來(lái)了很大的便利。單片機(jī)的應(yīng)用系統(tǒng)是由軟件和硬件組成的,單片機(jī)之所以能夠發(fā)揮這么大的作用,主要是因?yàn)閱纹瑱C(jī)的軟件系統(tǒng)中有著由多種指令構(gòu)成的應(yīng)用程序,工作時(shí)能夠按照這種應(yīng)用程序進(jìn)行工作。單片機(jī)的應(yīng)用程序的編寫(xiě)主要是采用匯編語(yǔ)言和高級(jí)語(yǔ)言。匯編語(yǔ)言雖然是一種低級(jí)語(yǔ)言,但是語(yǔ)言直觀,便于理解和記憶。單片機(jī)的應(yīng)用編程常會(huì)用到匯編語(yǔ)言程序,一個(gè)好的匯編程序應(yīng)當(dāng)是執(zhí)行時(shí)間較短、占用的儲(chǔ)存空間少。
1 單片機(jī)的應(yīng)用程序分析和設(shè)計(jì)
1.1 流程圖的設(shè)計(jì)
解決問(wèn)題的算法不同,會(huì)導(dǎo)致編出的程序不盡相同,程序運(yùn)行的時(shí)間和效率也大不一樣。解決這個(gè)問(wèn)題的關(guān)鍵是要設(shè)計(jì)好的流程圖,在選擇的時(shí)候要選擇占用內(nèi)存少、執(zhí)行時(shí)間快的算法,算法選定后,要根據(jù)算法繪制一個(gè)流程圖,這是應(yīng)用程序設(shè)計(jì)的重要內(nèi)容。下面將以具體的實(shí)例來(lái)說(shuō)明。
例如:我們平時(shí)所用的空調(diào)機(jī)在制冷的時(shí)候,如果排出空氣的溫度比吸入的空氣溫度低6度,那么這種情況下就被認(rèn)為是空調(diào)機(jī)的正常工作,否則就會(huì)被認(rèn)為是空調(diào)機(jī)存在一定的故障,影響了空調(diào)機(jī)的工作效能。因此,我們可以將XRZ設(shè)定為吸入空氣的溫度值的地址,把吸入空氣的溫度值存于這個(gè)地址內(nèi);將PCZ設(shè)定為排出空氣的溫度值的地址,把排出空氣的溫度值存于此處;設(shè)定KZ為空調(diào)狀態(tài)地址,空調(diào)機(jī)工作狀態(tài)放KZ單元??照{(diào)機(jī)工作正常時(shí),KZ等于0,否則等于FFH??照{(diào)工作溫度控制流程圖如圖1所示。
1.2 復(fù)雜程序的設(shè)計(jì)
在復(fù)雜程序的設(shè)計(jì)過(guò)程中,循環(huán)程序和子程序都是復(fù)雜的應(yīng)用程序的組成部分。在應(yīng)用程序中使用循環(huán)結(jié)構(gòu)和子程序,能夠有效減少程序的長(zhǎng)度,減少程序所占用的內(nèi)存空間,使得應(yīng)用程序的邏輯結(jié)構(gòu)得以簡(jiǎn)化,應(yīng)用程序便于調(diào)試。雖然,依此程序設(shè)計(jì)的機(jī)器周期數(shù)量并不會(huì)減少,但是確實(shí)提高了程序的編制效率。
循環(huán)結(jié)構(gòu)的程序多用在機(jī)器的同一組操作需要重復(fù)執(zhí)行的時(shí)候;子程序的應(yīng)用主要是在某一程序需要多次使用的時(shí)候,例如:數(shù)制的轉(zhuǎn)換、函數(shù)的計(jì)算等。如果這兩種情況均不使用循環(huán)結(jié)構(gòu)的程序和子程序,那就需要重復(fù)書(shū)寫(xiě)同一個(gè)指令,這樣不僅會(huì)大量增加程序的工作量,還會(huì)因?yàn)闀?shū)寫(xiě)同一個(gè)指令而占用和浪費(fèi)大量的存儲(chǔ)空間。
2 應(yīng)用程序的時(shí)間和空間的優(yōu)化
同一個(gè)匯編程序有多種實(shí)現(xiàn)方法,不同的應(yīng)用程序所占用的時(shí)間和空間也不盡相同。在編寫(xiě)應(yīng)用程序時(shí),應(yīng)當(dāng)充分考慮到應(yīng)用程序?qū)r(shí)間和空間的要求。對(duì)于一般的控制系統(tǒng)來(lái)說(shuō),以考慮空間為主,以確保應(yīng)用程序能夠安裝下;而對(duì)于一些實(shí)時(shí)控制系統(tǒng),以考慮時(shí)間為主,確保應(yīng)用程序的執(zhí)行時(shí)間越短越好。不同的應(yīng)用系統(tǒng)對(duì)時(shí)間和空間的要求不盡相同,所以,要求應(yīng)用程序的編寫(xiě)時(shí)要對(duì)應(yīng)用程序的時(shí)間和空間進(jìn)行優(yōu)化,以滿(mǎn)足應(yīng)用系統(tǒng)的要求。
(1)時(shí)間的優(yōu)化。
應(yīng)用編程的時(shí)間優(yōu)化主要有三種方法,第一種也是最基本的方法是編寫(xiě)周期較短的指令,比如:在編寫(xiě)乘除運(yùn)算時(shí),可以運(yùn)用移位的方法來(lái)實(shí)現(xiàn);第二種是利用寄存器尋址,因?yàn)榧拇嫫鲗ぶ返闹噶罹哂兄芷谏俚奶攸c(diǎn),在執(zhí)行時(shí)可以?xún)?yōu)化應(yīng)用程序的執(zhí)行時(shí)間;第三種是“空間換時(shí)間”的方法,主要是應(yīng)用在有很大存儲(chǔ)空間的單片機(jī)應(yīng)用系統(tǒng)中,即可以充分利用閑置的存儲(chǔ)空間,編寫(xiě)那些執(zhí)行時(shí)間較短的應(yīng)用程序,例如:在一個(gè)循環(huán)的程序中,可以把這個(gè)循環(huán)程序劃分成幾個(gè)單獨(dú)的應(yīng)用程序執(zhí)行,將一些帶參數(shù)的子程序設(shè)計(jì)成可以直接調(diào)用的子程序,這樣就可以減少對(duì)參數(shù)賦值的時(shí)間。
(2)空間的優(yōu)化。
應(yīng)用程序優(yōu)化空間的方法除了采用循環(huán)結(jié)構(gòu)程序和子程序外,還可以采用存儲(chǔ)空間復(fù)用的方法,一般說(shuō)來(lái),一個(gè)存儲(chǔ)空間只作一個(gè)用途,但是在資源有限的情況下,也可以對(duì)一些存儲(chǔ)空間復(fù)用。此外,如果碰到應(yīng)用系統(tǒng)對(duì)時(shí)間的要求不高時(shí),也可以采取“時(shí)間換空間”的方法,壓縮程序大小。例如,可以把一些功能相近的程序合并為一個(gè)子程序。
(3)建立子程序庫(kù)。
單片機(jī)的應(yīng)用程序現(xiàn)在已普遍采用結(jié)構(gòu)化程序設(shè)計(jì)法,如果我們能夠建立一個(gè)子程序庫(kù),那么在具體編寫(xiě)應(yīng)用程序時(shí),就可以直接利用現(xiàn)存的或者是稍加修改,這樣就可以大大提高編程的效率。子程序庫(kù)的建立應(yīng)當(dāng)具有以下幾個(gè)特點(diǎn):第一,相容性(各子程序的入口和出口條件相容);第二,功能性(子程序應(yīng)當(dāng)具有多種功能,避免用戶(hù)重復(fù)工作);第三,質(zhì)量問(wèn)題(優(yōu)化算法,提高運(yùn)行速度,反饋錯(cuò)誤信息);第四,透明化(子程序運(yùn)行完成后,不會(huì)破壞用戶(hù)現(xiàn)場(chǎng))。
3 結(jié)語(yǔ)
單片機(jī)的應(yīng)用程序的編程要考慮到多方面的因素,不僅要保證應(yīng)用程序能夠正常使用,而且還能實(shí)用,占用的內(nèi)存空間少,執(zhí)行起來(lái)效率高,耗費(fèi)時(shí)間短。因此,在應(yīng)用程序的設(shè)計(jì)過(guò)程中,應(yīng)當(dāng)采取適當(dāng)辦法來(lái)提高單片機(jī)的編程的總體執(zhí)行效能。在單片機(jī)的應(yīng)用編程方面的一些小技巧就可以采用,如合理設(shè)計(jì)流程圖、優(yōu)化應(yīng)用程序的時(shí)間和空間、建立子程序庫(kù)等,提高單片機(jī)的編程效率。
參考文獻(xiàn)
[1] 孫吳松,王烈準(zhǔn),劉榮富.單片機(jī)匯編程序編寫(xiě)技巧[J].科技向?qū)Аぢ殬I(yè)教育,2012(155).
[2] 翟曉華,程珩.淺談單片機(jī)匯編語(yǔ)言編程技巧[J].機(jī)械工程與自動(dòng)化,2007(143).
[3] 符紅霞.C語(yǔ)言和匯編語(yǔ)言混合編程電子設(shè)備中的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2011(14).
[4] 魯杰爽.匯編程序開(kāi)發(fā)中的“隱含錯(cuò)誤”分析[J].濮陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2010(155).
[5] 包敬海,韋美蘭.匯編和C混合編程的研究[J].電腦與電信,2011(155).endprint
摘 要:?jiǎn)纹瑱C(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)稱(chēng),是一種集成電路芯片。目前,單片機(jī)已經(jīng)在各個(gè)行業(yè)和領(lǐng)域得到應(yīng)用,很難找到哪一個(gè)領(lǐng)域沒(méi)有應(yīng)用單片機(jī)。單片機(jī)在工業(yè)控制領(lǐng)域的應(yīng)用最為廣泛,如今已步入生活領(lǐng)域,如:家用電器、汽車(chē)電子等。單片機(jī)的應(yīng)用如此廣泛,在人類(lèi)的生活和生產(chǎn)中發(fā)揮的作用越來(lái)越大,對(duì)于單片機(jī)的重視和研究力度也非常大,迄今為止,單片機(jī)已經(jīng)經(jīng)歷了三大階段,并且還在不斷得到發(fā)展和優(yōu)化。本文將主要是探討單片機(jī)的應(yīng)用編程的技巧分析。
關(guān)鍵詞:?jiǎn)纹瑱C(jī) 應(yīng)用編程 技巧分析
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)01(c)-0025-02
單片機(jī)也被稱(chēng)為單片微控制器,它不是完全意義上的完成某邏輯功能的芯片,而是把計(jì)算機(jī)系統(tǒng)集成到芯片上。它具有體積小、重量輕、價(jià)格便宜等優(yōu)點(diǎn),給人們的生產(chǎn)和生活帶來(lái)了很大的便利。單片機(jī)的應(yīng)用系統(tǒng)是由軟件和硬件組成的,單片機(jī)之所以能夠發(fā)揮這么大的作用,主要是因?yàn)閱纹瑱C(jī)的軟件系統(tǒng)中有著由多種指令構(gòu)成的應(yīng)用程序,工作時(shí)能夠按照這種應(yīng)用程序進(jìn)行工作。單片機(jī)的應(yīng)用程序的編寫(xiě)主要是采用匯編語(yǔ)言和高級(jí)語(yǔ)言。匯編語(yǔ)言雖然是一種低級(jí)語(yǔ)言,但是語(yǔ)言直觀,便于理解和記憶。單片機(jī)的應(yīng)用編程常會(huì)用到匯編語(yǔ)言程序,一個(gè)好的匯編程序應(yīng)當(dāng)是執(zhí)行時(shí)間較短、占用的儲(chǔ)存空間少。
1 單片機(jī)的應(yīng)用程序分析和設(shè)計(jì)
1.1 流程圖的設(shè)計(jì)
解決問(wèn)題的算法不同,會(huì)導(dǎo)致編出的程序不盡相同,程序運(yùn)行的時(shí)間和效率也大不一樣。解決這個(gè)問(wèn)題的關(guān)鍵是要設(shè)計(jì)好的流程圖,在選擇的時(shí)候要選擇占用內(nèi)存少、執(zhí)行時(shí)間快的算法,算法選定后,要根據(jù)算法繪制一個(gè)流程圖,這是應(yīng)用程序設(shè)計(jì)的重要內(nèi)容。下面將以具體的實(shí)例來(lái)說(shuō)明。
例如:我們平時(shí)所用的空調(diào)機(jī)在制冷的時(shí)候,如果排出空氣的溫度比吸入的空氣溫度低6度,那么這種情況下就被認(rèn)為是空調(diào)機(jī)的正常工作,否則就會(huì)被認(rèn)為是空調(diào)機(jī)存在一定的故障,影響了空調(diào)機(jī)的工作效能。因此,我們可以將XRZ設(shè)定為吸入空氣的溫度值的地址,把吸入空氣的溫度值存于這個(gè)地址內(nèi);將PCZ設(shè)定為排出空氣的溫度值的地址,把排出空氣的溫度值存于此處;設(shè)定KZ為空調(diào)狀態(tài)地址,空調(diào)機(jī)工作狀態(tài)放KZ單元。空調(diào)機(jī)工作正常時(shí),KZ等于0,否則等于FFH??照{(diào)工作溫度控制流程圖如圖1所示。
1.2 復(fù)雜程序的設(shè)計(jì)
在復(fù)雜程序的設(shè)計(jì)過(guò)程中,循環(huán)程序和子程序都是復(fù)雜的應(yīng)用程序的組成部分。在應(yīng)用程序中使用循環(huán)結(jié)構(gòu)和子程序,能夠有效減少程序的長(zhǎng)度,減少程序所占用的內(nèi)存空間,使得應(yīng)用程序的邏輯結(jié)構(gòu)得以簡(jiǎn)化,應(yīng)用程序便于調(diào)試。雖然,依此程序設(shè)計(jì)的機(jī)器周期數(shù)量并不會(huì)減少,但是確實(shí)提高了程序的編制效率。
循環(huán)結(jié)構(gòu)的程序多用在機(jī)器的同一組操作需要重復(fù)執(zhí)行的時(shí)候;子程序的應(yīng)用主要是在某一程序需要多次使用的時(shí)候,例如:數(shù)制的轉(zhuǎn)換、函數(shù)的計(jì)算等。如果這兩種情況均不使用循環(huán)結(jié)構(gòu)的程序和子程序,那就需要重復(fù)書(shū)寫(xiě)同一個(gè)指令,這樣不僅會(huì)大量增加程序的工作量,還會(huì)因?yàn)闀?shū)寫(xiě)同一個(gè)指令而占用和浪費(fèi)大量的存儲(chǔ)空間。
2 應(yīng)用程序的時(shí)間和空間的優(yōu)化
同一個(gè)匯編程序有多種實(shí)現(xiàn)方法,不同的應(yīng)用程序所占用的時(shí)間和空間也不盡相同。在編寫(xiě)應(yīng)用程序時(shí),應(yīng)當(dāng)充分考慮到應(yīng)用程序?qū)r(shí)間和空間的要求。對(duì)于一般的控制系統(tǒng)來(lái)說(shuō),以考慮空間為主,以確保應(yīng)用程序能夠安裝下;而對(duì)于一些實(shí)時(shí)控制系統(tǒng),以考慮時(shí)間為主,確保應(yīng)用程序的執(zhí)行時(shí)間越短越好。不同的應(yīng)用系統(tǒng)對(duì)時(shí)間和空間的要求不盡相同,所以,要求應(yīng)用程序的編寫(xiě)時(shí)要對(duì)應(yīng)用程序的時(shí)間和空間進(jìn)行優(yōu)化,以滿(mǎn)足應(yīng)用系統(tǒng)的要求。
(1)時(shí)間的優(yōu)化。
應(yīng)用編程的時(shí)間優(yōu)化主要有三種方法,第一種也是最基本的方法是編寫(xiě)周期較短的指令,比如:在編寫(xiě)乘除運(yùn)算時(shí),可以運(yùn)用移位的方法來(lái)實(shí)現(xiàn);第二種是利用寄存器尋址,因?yàn)榧拇嫫鲗ぶ返闹噶罹哂兄芷谏俚奶攸c(diǎn),在執(zhí)行時(shí)可以?xún)?yōu)化應(yīng)用程序的執(zhí)行時(shí)間;第三種是“空間換時(shí)間”的方法,主要是應(yīng)用在有很大存儲(chǔ)空間的單片機(jī)應(yīng)用系統(tǒng)中,即可以充分利用閑置的存儲(chǔ)空間,編寫(xiě)那些執(zhí)行時(shí)間較短的應(yīng)用程序,例如:在一個(gè)循環(huán)的程序中,可以把這個(gè)循環(huán)程序劃分成幾個(gè)單獨(dú)的應(yīng)用程序執(zhí)行,將一些帶參數(shù)的子程序設(shè)計(jì)成可以直接調(diào)用的子程序,這樣就可以減少對(duì)參數(shù)賦值的時(shí)間。
(2)空間的優(yōu)化。
應(yīng)用程序優(yōu)化空間的方法除了采用循環(huán)結(jié)構(gòu)程序和子程序外,還可以采用存儲(chǔ)空間復(fù)用的方法,一般說(shuō)來(lái),一個(gè)存儲(chǔ)空間只作一個(gè)用途,但是在資源有限的情況下,也可以對(duì)一些存儲(chǔ)空間復(fù)用。此外,如果碰到應(yīng)用系統(tǒng)對(duì)時(shí)間的要求不高時(shí),也可以采取“時(shí)間換空間”的方法,壓縮程序大小。例如,可以把一些功能相近的程序合并為一個(gè)子程序。
(3)建立子程序庫(kù)。
單片機(jī)的應(yīng)用程序現(xiàn)在已普遍采用結(jié)構(gòu)化程序設(shè)計(jì)法,如果我們能夠建立一個(gè)子程序庫(kù),那么在具體編寫(xiě)應(yīng)用程序時(shí),就可以直接利用現(xiàn)存的或者是稍加修改,這樣就可以大大提高編程的效率。子程序庫(kù)的建立應(yīng)當(dāng)具有以下幾個(gè)特點(diǎn):第一,相容性(各子程序的入口和出口條件相容);第二,功能性(子程序應(yīng)當(dāng)具有多種功能,避免用戶(hù)重復(fù)工作);第三,質(zhì)量問(wèn)題(優(yōu)化算法,提高運(yùn)行速度,反饋錯(cuò)誤信息);第四,透明化(子程序運(yùn)行完成后,不會(huì)破壞用戶(hù)現(xiàn)場(chǎng))。
3 結(jié)語(yǔ)
單片機(jī)的應(yīng)用程序的編程要考慮到多方面的因素,不僅要保證應(yīng)用程序能夠正常使用,而且還能實(shí)用,占用的內(nèi)存空間少,執(zhí)行起來(lái)效率高,耗費(fèi)時(shí)間短。因此,在應(yīng)用程序的設(shè)計(jì)過(guò)程中,應(yīng)當(dāng)采取適當(dāng)辦法來(lái)提高單片機(jī)的編程的總體執(zhí)行效能。在單片機(jī)的應(yīng)用編程方面的一些小技巧就可以采用,如合理設(shè)計(jì)流程圖、優(yōu)化應(yīng)用程序的時(shí)間和空間、建立子程序庫(kù)等,提高單片機(jī)的編程效率。
參考文獻(xiàn)
[1] 孫吳松,王烈準(zhǔn),劉榮富.單片機(jī)匯編程序編寫(xiě)技巧[J].科技向?qū)Аぢ殬I(yè)教育,2012(155).
[2] 翟曉華,程珩.淺談單片機(jī)匯編語(yǔ)言編程技巧[J].機(jī)械工程與自動(dòng)化,2007(143).
[3] 符紅霞.C語(yǔ)言和匯編語(yǔ)言混合編程電子設(shè)備中的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2011(14).
[4] 魯杰爽.匯編程序開(kāi)發(fā)中的“隱含錯(cuò)誤”分析[J].濮陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2010(155).
[5] 包敬海,韋美蘭.匯編和C混合編程的研究[J].電腦與電信,2011(155).endprint
摘 要:?jiǎn)纹瑱C(jī)是單片微型計(jì)算機(jī)的簡(jiǎn)稱(chēng),是一種集成電路芯片。目前,單片機(jī)已經(jīng)在各個(gè)行業(yè)和領(lǐng)域得到應(yīng)用,很難找到哪一個(gè)領(lǐng)域沒(méi)有應(yīng)用單片機(jī)。單片機(jī)在工業(yè)控制領(lǐng)域的應(yīng)用最為廣泛,如今已步入生活領(lǐng)域,如:家用電器、汽車(chē)電子等。單片機(jī)的應(yīng)用如此廣泛,在人類(lèi)的生活和生產(chǎn)中發(fā)揮的作用越來(lái)越大,對(duì)于單片機(jī)的重視和研究力度也非常大,迄今為止,單片機(jī)已經(jīng)經(jīng)歷了三大階段,并且還在不斷得到發(fā)展和優(yōu)化。本文將主要是探討單片機(jī)的應(yīng)用編程的技巧分析。
關(guān)鍵詞:?jiǎn)纹瑱C(jī) 應(yīng)用編程 技巧分析
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)01(c)-0025-02
單片機(jī)也被稱(chēng)為單片微控制器,它不是完全意義上的完成某邏輯功能的芯片,而是把計(jì)算機(jī)系統(tǒng)集成到芯片上。它具有體積小、重量輕、價(jià)格便宜等優(yōu)點(diǎn),給人們的生產(chǎn)和生活帶來(lái)了很大的便利。單片機(jī)的應(yīng)用系統(tǒng)是由軟件和硬件組成的,單片機(jī)之所以能夠發(fā)揮這么大的作用,主要是因?yàn)閱纹瑱C(jī)的軟件系統(tǒng)中有著由多種指令構(gòu)成的應(yīng)用程序,工作時(shí)能夠按照這種應(yīng)用程序進(jìn)行工作。單片機(jī)的應(yīng)用程序的編寫(xiě)主要是采用匯編語(yǔ)言和高級(jí)語(yǔ)言。匯編語(yǔ)言雖然是一種低級(jí)語(yǔ)言,但是語(yǔ)言直觀,便于理解和記憶。單片機(jī)的應(yīng)用編程常會(huì)用到匯編語(yǔ)言程序,一個(gè)好的匯編程序應(yīng)當(dāng)是執(zhí)行時(shí)間較短、占用的儲(chǔ)存空間少。
1 單片機(jī)的應(yīng)用程序分析和設(shè)計(jì)
1.1 流程圖的設(shè)計(jì)
解決問(wèn)題的算法不同,會(huì)導(dǎo)致編出的程序不盡相同,程序運(yùn)行的時(shí)間和效率也大不一樣。解決這個(gè)問(wèn)題的關(guān)鍵是要設(shè)計(jì)好的流程圖,在選擇的時(shí)候要選擇占用內(nèi)存少、執(zhí)行時(shí)間快的算法,算法選定后,要根據(jù)算法繪制一個(gè)流程圖,這是應(yīng)用程序設(shè)計(jì)的重要內(nèi)容。下面將以具體的實(shí)例來(lái)說(shuō)明。
例如:我們平時(shí)所用的空調(diào)機(jī)在制冷的時(shí)候,如果排出空氣的溫度比吸入的空氣溫度低6度,那么這種情況下就被認(rèn)為是空調(diào)機(jī)的正常工作,否則就會(huì)被認(rèn)為是空調(diào)機(jī)存在一定的故障,影響了空調(diào)機(jī)的工作效能。因此,我們可以將XRZ設(shè)定為吸入空氣的溫度值的地址,把吸入空氣的溫度值存于這個(gè)地址內(nèi);將PCZ設(shè)定為排出空氣的溫度值的地址,把排出空氣的溫度值存于此處;設(shè)定KZ為空調(diào)狀態(tài)地址,空調(diào)機(jī)工作狀態(tài)放KZ單元??照{(diào)機(jī)工作正常時(shí),KZ等于0,否則等于FFH??照{(diào)工作溫度控制流程圖如圖1所示。
1.2 復(fù)雜程序的設(shè)計(jì)
在復(fù)雜程序的設(shè)計(jì)過(guò)程中,循環(huán)程序和子程序都是復(fù)雜的應(yīng)用程序的組成部分。在應(yīng)用程序中使用循環(huán)結(jié)構(gòu)和子程序,能夠有效減少程序的長(zhǎng)度,減少程序所占用的內(nèi)存空間,使得應(yīng)用程序的邏輯結(jié)構(gòu)得以簡(jiǎn)化,應(yīng)用程序便于調(diào)試。雖然,依此程序設(shè)計(jì)的機(jī)器周期數(shù)量并不會(huì)減少,但是確實(shí)提高了程序的編制效率。
循環(huán)結(jié)構(gòu)的程序多用在機(jī)器的同一組操作需要重復(fù)執(zhí)行的時(shí)候;子程序的應(yīng)用主要是在某一程序需要多次使用的時(shí)候,例如:數(shù)制的轉(zhuǎn)換、函數(shù)的計(jì)算等。如果這兩種情況均不使用循環(huán)結(jié)構(gòu)的程序和子程序,那就需要重復(fù)書(shū)寫(xiě)同一個(gè)指令,這樣不僅會(huì)大量增加程序的工作量,還會(huì)因?yàn)闀?shū)寫(xiě)同一個(gè)指令而占用和浪費(fèi)大量的存儲(chǔ)空間。
2 應(yīng)用程序的時(shí)間和空間的優(yōu)化
同一個(gè)匯編程序有多種實(shí)現(xiàn)方法,不同的應(yīng)用程序所占用的時(shí)間和空間也不盡相同。在編寫(xiě)應(yīng)用程序時(shí),應(yīng)當(dāng)充分考慮到應(yīng)用程序?qū)r(shí)間和空間的要求。對(duì)于一般的控制系統(tǒng)來(lái)說(shuō),以考慮空間為主,以確保應(yīng)用程序能夠安裝下;而對(duì)于一些實(shí)時(shí)控制系統(tǒng),以考慮時(shí)間為主,確保應(yīng)用程序的執(zhí)行時(shí)間越短越好。不同的應(yīng)用系統(tǒng)對(duì)時(shí)間和空間的要求不盡相同,所以,要求應(yīng)用程序的編寫(xiě)時(shí)要對(duì)應(yīng)用程序的時(shí)間和空間進(jìn)行優(yōu)化,以滿(mǎn)足應(yīng)用系統(tǒng)的要求。
(1)時(shí)間的優(yōu)化。
應(yīng)用編程的時(shí)間優(yōu)化主要有三種方法,第一種也是最基本的方法是編寫(xiě)周期較短的指令,比如:在編寫(xiě)乘除運(yùn)算時(shí),可以運(yùn)用移位的方法來(lái)實(shí)現(xiàn);第二種是利用寄存器尋址,因?yàn)榧拇嫫鲗ぶ返闹噶罹哂兄芷谏俚奶攸c(diǎn),在執(zhí)行時(shí)可以?xún)?yōu)化應(yīng)用程序的執(zhí)行時(shí)間;第三種是“空間換時(shí)間”的方法,主要是應(yīng)用在有很大存儲(chǔ)空間的單片機(jī)應(yīng)用系統(tǒng)中,即可以充分利用閑置的存儲(chǔ)空間,編寫(xiě)那些執(zhí)行時(shí)間較短的應(yīng)用程序,例如:在一個(gè)循環(huán)的程序中,可以把這個(gè)循環(huán)程序劃分成幾個(gè)單獨(dú)的應(yīng)用程序執(zhí)行,將一些帶參數(shù)的子程序設(shè)計(jì)成可以直接調(diào)用的子程序,這樣就可以減少對(duì)參數(shù)賦值的時(shí)間。
(2)空間的優(yōu)化。
應(yīng)用程序優(yōu)化空間的方法除了采用循環(huán)結(jié)構(gòu)程序和子程序外,還可以采用存儲(chǔ)空間復(fù)用的方法,一般說(shuō)來(lái),一個(gè)存儲(chǔ)空間只作一個(gè)用途,但是在資源有限的情況下,也可以對(duì)一些存儲(chǔ)空間復(fù)用。此外,如果碰到應(yīng)用系統(tǒng)對(duì)時(shí)間的要求不高時(shí),也可以采取“時(shí)間換空間”的方法,壓縮程序大小。例如,可以把一些功能相近的程序合并為一個(gè)子程序。
(3)建立子程序庫(kù)。
單片機(jī)的應(yīng)用程序現(xiàn)在已普遍采用結(jié)構(gòu)化程序設(shè)計(jì)法,如果我們能夠建立一個(gè)子程序庫(kù),那么在具體編寫(xiě)應(yīng)用程序時(shí),就可以直接利用現(xiàn)存的或者是稍加修改,這樣就可以大大提高編程的效率。子程序庫(kù)的建立應(yīng)當(dāng)具有以下幾個(gè)特點(diǎn):第一,相容性(各子程序的入口和出口條件相容);第二,功能性(子程序應(yīng)當(dāng)具有多種功能,避免用戶(hù)重復(fù)工作);第三,質(zhì)量問(wèn)題(優(yōu)化算法,提高運(yùn)行速度,反饋錯(cuò)誤信息);第四,透明化(子程序運(yùn)行完成后,不會(huì)破壞用戶(hù)現(xiàn)場(chǎng))。
3 結(jié)語(yǔ)
單片機(jī)的應(yīng)用程序的編程要考慮到多方面的因素,不僅要保證應(yīng)用程序能夠正常使用,而且還能實(shí)用,占用的內(nèi)存空間少,執(zhí)行起來(lái)效率高,耗費(fèi)時(shí)間短。因此,在應(yīng)用程序的設(shè)計(jì)過(guò)程中,應(yīng)當(dāng)采取適當(dāng)辦法來(lái)提高單片機(jī)的編程的總體執(zhí)行效能。在單片機(jī)的應(yīng)用編程方面的一些小技巧就可以采用,如合理設(shè)計(jì)流程圖、優(yōu)化應(yīng)用程序的時(shí)間和空間、建立子程序庫(kù)等,提高單片機(jī)的編程效率。
參考文獻(xiàn)
[1] 孫吳松,王烈準(zhǔn),劉榮富.單片機(jī)匯編程序編寫(xiě)技巧[J].科技向?qū)Аぢ殬I(yè)教育,2012(155).
[2] 翟曉華,程珩.淺談單片機(jī)匯編語(yǔ)言編程技巧[J].機(jī)械工程與自動(dòng)化,2007(143).
[3] 符紅霞.C語(yǔ)言和匯編語(yǔ)言混合編程電子設(shè)備中的應(yīng)用研究[J].工業(yè)控制計(jì)算機(jī),2011(14).
[4] 魯杰爽.匯編程序開(kāi)發(fā)中的“隱含錯(cuò)誤”分析[J].濮陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2010(155).
[5] 包敬海,韋美蘭.匯編和C混合編程的研究[J].電腦與電信,2011(155).endprint