林龍?jiān)?/p>
摘 要:針對(duì)單片機(jī)開發(fā)對(duì)編程語言提出的高要求,在簡(jiǎn)單介紹C語言具有的優(yōu)勢(shì)和單片機(jī)開發(fā)過程中C語言應(yīng)用可行性的基礎(chǔ)上,對(duì)其在實(shí)際的單片機(jī)開發(fā)中的具體應(yīng)用進(jìn)行深入分析,旨在為單片機(jī)開發(fā)提供有效工具和方法。
關(guān)鍵詞:?jiǎn)纹瑱C(jī)開發(fā) C語言
中圖分類號(hào):TP313 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1003-9082(2018)11-000-01
如今,單片機(jī)技術(shù)快速發(fā)展,為滿足使用和發(fā)展需要,必須對(duì)其進(jìn)行開發(fā),而單片機(jī)開發(fā)往往涉及到很多編程與算法設(shè)計(jì),這就對(duì)編程語言提出了更高的要求,傳統(tǒng)手段已經(jīng)難以滿足要求,亟需采用全新的方法和手段。
一、C語言主要優(yōu)勢(shì)與在單片機(jī)開發(fā)過程中應(yīng)用的可行性分析
相對(duì)于傳統(tǒng)匯編語言,C語言有眾多優(yōu)勢(shì),包括具有較強(qiáng)的繼承性與可移植性等,這使單片機(jī)設(shè)計(jì)開發(fā)可將C語言作為主導(dǎo)工具。作為高級(jí)編程語言之一,C語言不僅繼承傳統(tǒng)工具所有優(yōu)勢(shì),還能提高開發(fā)工作的便捷性。這是因?yàn)镃語言強(qiáng)調(diào)借助結(jié)構(gòu)化設(shè)計(jì),同時(shí)按照從上到下的順序依次展開,幫助開發(fā)者更好的掌握內(nèi)部構(gòu)造,從而做好整體分配,保證程序運(yùn)行的便捷性與可靠性。此外,C語言在程序開發(fā)過程中還具有其它的優(yōu)點(diǎn):第一,功能性較強(qiáng)且結(jié)構(gòu)性良好,能在各類機(jī)型上完成運(yùn)行,同時(shí)在編譯運(yùn)算的支持下提供可讀性;第二,解決硬件兼容問題,編程人員容易掌握,且具有很強(qiáng)的邏輯性,能減少實(shí)際工作量;第三,所有不同的模塊均有明確任務(wù)與分工,能使整個(gè)過程都變得十分簡(jiǎn)便[1]。
二、單片機(jī)開發(fā)過程中C語言具體應(yīng)用
單片機(jī)開發(fā)過程中要合理應(yīng)用C語言,使其發(fā)揮出應(yīng)有的作用,必須按照專門的程序和步驟進(jìn)行:首先,編譯目標(biāo)源對(duì)應(yīng)的程序,同時(shí)對(duì)相關(guān)代碼實(shí)施連接與替換;然后,程序設(shè)計(jì)完畢后,對(duì)源程序進(jìn)行轉(zhuǎn)換,得到單片機(jī)可以識(shí)別與運(yùn)行的形式。在整個(gè)開發(fā)過程中,主要包含以下幾個(gè)關(guān)鍵步驟:(1)軟件安裝,登陸網(wǎng)站下載安裝包,此時(shí)按提示完成即可,操作十分簡(jiǎn)單。在下載完畢后,實(shí)施解壓處理,啟動(dòng)程序開始軟件安裝,然后輸入產(chǎn)品序列號(hào),安裝好后即可正常使用軟件;(2)建立源文件,創(chuàng)建一個(gè)全新的項(xiàng)目,再新建一個(gè).c文件并包含到項(xiàng)目中,通過文字編輯窗口來完成程序編輯,這時(shí)源文件建立完畢;(3)通過編譯與調(diào)試得到HEX文件,對(duì)指定程序進(jìn)行翻譯調(diào)試,先啟動(dòng)調(diào)試模式,通過仿真器完成調(diào)試,并改正文件中存在的錯(cuò)誤,然后對(duì)源程序進(jìn)行編譯,通過編輯器生成需要的目標(biāo)文件,之后進(jìn)行模塊連接,保證文件的正確性。正常操作目標(biāo)文件,生成符合要求的HEX文件,充分其所具有的各項(xiàng)功能與作用,再通過程序燒錄軟件向單片機(jī)燒錄程序,最后由單片機(jī)執(zhí)行驗(yàn)證程序效果[2]。
C語言可對(duì)單片機(jī)資源實(shí)施分配,將指針結(jié)構(gòu)配置以及數(shù)組關(guān)系理順等作為前期。因此,想要在開發(fā)中充分利用C語言,必須正確認(rèn)識(shí)并有效控制上述方面。從指針結(jié)構(gòu)角度講,在使用C語言時(shí),一般情況下,和指針有關(guān)的聲明均采用類型標(biāo)識(shí)符*指針變量名的形式,對(duì)單片機(jī)而言,指針和普通定義存在一定差別,這種差別主要體現(xiàn)在格式方面,應(yīng)設(shè)立不同的存儲(chǔ)區(qū)?;诖耍诼暶髦羔樈Y(jié)構(gòu)的過程中,需要使用不同格式。確定數(shù)據(jù)格式時(shí),常見data等形式,同時(shí)在變量控制的過程中,可使用下列格式:
在指針尋址方面,基于C語言的尋址和其它尋址方式基本相同。因數(shù)組主要存儲(chǔ)于單片機(jī)當(dāng)中,而單片機(jī)資源空間通常情況下會(huì)比較有限,采用這些數(shù)組的時(shí)候,則必須要盡量避開相對(duì)較大的部分?jǐn)?shù)組,使得數(shù)據(jù)結(jié)構(gòu)有效簡(jiǎn)化。并且在定義不需要進(jìn)行操作的數(shù)組,可以使用code類型存儲(chǔ)在ROM中來節(jié)約RAM資源。例如:
事實(shí)上,在操作時(shí),指針尋址的過程中,應(yīng)當(dāng)優(yōu)先考慮data區(qū)對(duì)應(yīng)的指針,采用A/D轉(zhuǎn)換等方式向單片機(jī)轉(zhuǎn)入外部數(shù)據(jù)[3]。完成data區(qū)對(duì)應(yīng)的指針尋址以后,對(duì)存儲(chǔ)區(qū)對(duì)應(yīng)的指針開始尋址。但從數(shù)據(jù)存儲(chǔ)角度講,可通過指針完成函數(shù)調(diào)用,這些調(diào)用通常都需要按照某種格式,數(shù)據(jù)定義后,在以后代碼程序當(dāng)中,即可函數(shù)完成調(diào)用,比如,先確定一個(gè)函數(shù),即scan(),再對(duì)此進(jìn)行調(diào)用,主要采用以下代碼進(jìn)行實(shí)現(xiàn):
從當(dāng)前的工業(yè)控制角度看,看門狗電路方面還有一定欠缺,在復(fù)位過程中使看門狗動(dòng)作,即進(jìn)行熱啟動(dòng)。但在實(shí)際的熱啟動(dòng)中,由于無法從頭開始,導(dǎo)致現(xiàn)有計(jì)算結(jié)果復(fù)位,使系統(tǒng)發(fā)生異常。為有效解決以上問題,需借助相應(yīng)的程序?qū)?、熱啟?dòng)作出綜合判別。通常情況下,應(yīng)先確定一個(gè)標(biāo)志位,同時(shí)在啟動(dòng)過程中對(duì)標(biāo)志位具體內(nèi)容進(jìn)行讀取,若所讀內(nèi)容和設(shè)定值完全相同,則判定為熱啟動(dòng);若所讀內(nèi)容和設(shè)備值不符,則判定為冷啟動(dòng)。除此之外,為確保以上功能得以順利實(shí)現(xiàn),需設(shè)置專門的指針,同時(shí)使其指向一個(gè)特定的單元[4]。
但通過實(shí)際的編譯與運(yùn)行發(fā)現(xiàn),熱啟動(dòng)和冷啟動(dòng),在開機(jī)以后,其內(nèi)存單元的復(fù)位都顯示為0,說明未能達(dá)到預(yù)期的要求。通過分析,將產(chǎn)生這一問題的原因確定如下:利用C語言進(jìn)行編程的過程中,在開機(jī)狀態(tài)下執(zhí)行的代碼不是從目標(biāo)函數(shù)首個(gè)語句開始的。目標(biāo)函數(shù)首個(gè)語句在正式執(zhí)行以前應(yīng)先完成起始代碼的執(zhí)行,但該代碼的執(zhí)行將造成清零。針對(duì)這一實(shí)際問題,應(yīng)在編碼完成后,對(duì)形成的源文件實(shí)施適當(dāng)修改,再利用編譯程序自帶程序進(jìn)行編譯,以此獲得startuo.obj文件,最利用這一代碼完全取代之前的起始代碼,這樣就能從根本上防止原始代碼的執(zhí)行造成清零。
綜上所述,C語言是目前應(yīng)用最為廣泛的編程語言之一,具有其它編程語言不具備的獨(dú)特優(yōu)勢(shì),這也決定了它在單片機(jī)開發(fā)領(lǐng)域具有良好的應(yīng)用與發(fā)展趨勢(shì)。而且通過實(shí)踐可知,在單片機(jī)開發(fā)過程中通過對(duì)C語言的合理應(yīng)用,能有效提高開發(fā)技術(shù)水平,降低技術(shù)難度,從而保證最終的開發(fā)效果。
參考文獻(xiàn)
[1]張祎.C語言在單片機(jī)開發(fā)中的應(yīng)用分析[J].江蘇科技信息,2017(18):47-48.
[2]王國(guó)慶.C語言在單片機(jī)中的應(yīng)用[J].電腦迷,2017(02):104.
[3]周嵐.淺析基于C語言的單片機(jī)技術(shù)[J].軟件工程,2016,19(05):30-31.
[4]李宛娜.試論C語言在單片機(jī)開發(fā)中的運(yùn)用[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2014,30(18):26-27.