設(shè)計(jì)編寫單片機(jī)程序是一個(gè)漸進(jìn)的過程不可一蹴而就,畢竟單片機(jī)程序是與硬件有密切關(guān)系的,我們一般稱為單片機(jī)程序叫底層硬件驅(qū)動(dòng)程序。編寫程序不但要對(duì)軟件要熟悉而且對(duì)硬件也要熟悉才行,所以對(duì)于我們從事單片機(jī)技術(shù)的人員來說能夠編寫出沒有“bug”的優(yōu)秀程序需要具有“軟硬兼施”的本領(lǐng),否則編寫的程序就會(huì)出現(xiàn)問題。下面根據(jù)我學(xué)習(xí)單片機(jī)來談?wù)勎覍?duì)這個(gè)問題的體會(huì)。
設(shè)計(jì)不出來單片機(jī)程序的原因
我認(rèn)為初學(xué)者感覺設(shè)計(jì)不出真正的單片機(jī)程序是一個(gè)普遍的問題。我先說說剛學(xué)單片機(jī)的朋友為什么設(shè)計(jì)不出單片機(jī)程序,首先是對(duì)軟件知識(shí)和硬件知識(shí)有“短板”。因?yàn)槌绦虻脑O(shè)計(jì)少不了使用程序語言,現(xiàn)在比較流行的單片機(jī)編程語言是C語言,如果在編程語言方面有欠缺的話編程會(huì)受到影響這是其一,其二是硬件方面,我們要知道單片機(jī)的外設(shè)硬件方面的一些工作原理,比如按鍵、顯示器件、各種驅(qū)動(dòng)芯片等,這些都與數(shù)字電路和模擬電路知識(shí)有關(guān),如果這方面有欠缺應(yīng)及時(shí)加強(qiáng)。
其次是對(duì)單片機(jī)程序與硬件的內(nèi)在聯(lián)系不清楚。我們編寫的程序是與單片機(jī)外設(shè)的硬件緊密相聯(lián)系的,如果不知道用編程語言的哪種處理方法或技巧去控制硬件工作,那么就無法編寫出控制程序。比如編寫一個(gè)測(cè)溫度的程序,如何能采集到溫度、如何編寫把溫度數(shù)據(jù)轉(zhuǎn)換成數(shù)碼管或者液晶能夠顯示的程序并分理處小數(shù)點(diǎn)等等都有一定的處理方法和技巧。
再次是缺乏設(shè)計(jì)編寫程序的經(jīng)驗(yàn)。有句話叫“萬事開頭難”,我們?cè)谧鲈S多事情時(shí)剛開始都會(huì)感覺到無所適從,我認(rèn)為這是很正常的現(xiàn)象,我建議剛開始學(xué)習(xí)時(shí)我建議從最簡(jiǎn)單的開始,比如從控制LED小燈開始再到各種花樣的“跑馬燈”小程序、模擬交通燈程序、具有數(shù)碼管倒計(jì)時(shí)的模擬交通燈程序等,通過這樣的循序漸進(jìn),由簡(jiǎn)入難地訓(xùn)練經(jīng)過一段時(shí)間就會(huì)見到成效;最后一點(diǎn)我認(rèn)為是缺乏整體布局的能力。因?yàn)橐粋€(gè)完整的程序除了需要主程序外,還要有許多子程序。要完成整個(gè)控制流程就要對(duì)各個(gè)程序之間的不斷調(diào)用來實(shí)現(xiàn),這就要在程序的編排上要考慮周全。所以設(shè)計(jì)編寫也就是對(duì)整個(gè)控制流程有整體的把控才行。
如何能編寫出合格的單片機(jī)程序
其實(shí)設(shè)計(jì)單片機(jī)并不是很難能,那么如何才能設(shè)計(jì)編寫出合格的單片機(jī)程序呢?我認(rèn)為要從以下幾個(gè)方面。一方面除了把我們自己感覺有“短板”的地方補(bǔ)齊外,另一方面我感覺還要做到以下幾點(diǎn):
第一點(diǎn)就是在設(shè)計(jì)程序時(shí)先要對(duì)控制的對(duì)象做全面的分析,也就是要把解決的問題的條件、初始化的數(shù)據(jù)、輸入與輸出的信息以及要達(dá)到的控制目的都要知道,雖然達(dá)不到“庖丁解牛”的那種嫻熟的程度,最起碼要做到心中有數(shù)。
第二點(diǎn)是在設(shè)計(jì)程序時(shí)要確定程序的“算法”,這個(gè)詞聽起來有點(diǎn)高大上,其實(shí)我們?cè)谠O(shè)計(jì)程序時(shí)要知道根據(jù)控制的要求和我們所有的條件來確定我們所用的計(jì)算方法。我在學(xué)C語言時(shí)經(jīng)常聽老師說:算法是程序的靈魂這一句話,當(dāng)時(shí)剛接觸對(duì)這句話并不理解,現(xiàn)在回頭看來這句話是很有道理的。這就像我們炒菜一樣,如果我們能按菜譜去做就非常好吃,若是隨心所欲去做菜那肯定難以下咽,我認(rèn)為在這方面兩者有“異工同曲”之處。
第三點(diǎn)是要善于繪制流程圖,這一點(diǎn)在我們剛學(xué)習(xí)設(shè)計(jì)程序時(shí)我感覺很有必要。繪制流程圖可以直觀地體現(xiàn)我們編寫程序的思路,它也是我們?cè)O(shè)計(jì)程序時(shí)的依據(jù)。從一定程度上說能繪制完一個(gè)控制流程圖也就離設(shè)計(jì)出程序不遠(yuǎn)了。
第四點(diǎn)就是要抱著“他山之石,可以攻玉”的心態(tài)去多看別人的程序,學(xué)習(xí)別人的設(shè)計(jì)編寫程序的技巧。我們知道C語言的可移植性很好,看到有非常好的子程序只要略微修改一下就可以為我所用,這樣有時(shí)會(huì)節(jié)省很多時(shí)間。
我認(rèn)為只要通過以上幾點(diǎn)堅(jiān)持下去,我們編寫出沒有“bug”的合格程序應(yīng)該是水到渠成的事情了!
-
單片機(jī)
+關(guān)注
關(guān)注
6061文章
44892瀏覽量
646363 -
單片機(jī)程序
+關(guān)注
關(guān)注
1文章
12瀏覽量
9644
發(fā)布評(píng)論請(qǐng)先 登錄
STM8S003F的作用是什么,如何編寫單片機(jī)程序去控制?
單片機(jī)編程語言有哪些選擇
單片機(jī)怎么寫入程序
keil可以讀出單片機(jī)的程序嗎
單片機(jī)燒錄程序用什么軟件
單片機(jī)燒錄程序可以重新燒嗎
單片機(jī)燒錄程序的線比單片機(jī)上的少還能燒錄嗎
單片機(jī)燒錄程序的基本步驟是什么
stm32單片機(jī)燒錄程序會(huì)擦除原來的程序嗎
藍(lán)牙模塊如何實(shí)現(xiàn)單片機(jī)和手機(jī)端數(shù)據(jù)互傳

評(píng)論