單片機(jī)模塊化編程(一)初探
哈嘍艾威玩,還記得上課時(shí)給大家講到的單片機(jī)模塊化編程的思想么?有些同學(xué)沒(méi)有練習(xí),有些同學(xué)一定也都忘卻了。在這里我重新整理一下,作為我們進(jìn)階學(xué)習(xí)的第一彈內(nèi)容給大家熱熱身咯~
本文引用地址:http://cafeforensic.com/article/269323.htm
俗話說(shuō),不會(huì)模塊化編程的廚師不是好司機(jī)。那么如何進(jìn)行單片機(jī)的模塊化編程呢?且聽(tīng)我給大家慢慢說(shuō)來(lái)。
(一)What is單片機(jī)的模塊化編程?
模塊化編程是指將一個(gè)龐大的程序劃分為若干個(gè)功能獨(dú)立的模塊,對(duì)各個(gè)模塊進(jìn)行獨(dú)立開(kāi)發(fā),然后再將這些模塊統(tǒng)一合并為一個(gè)完整的程序。舉個(gè)栗子,大家都玩過(guò)七巧板,我們都知道,七巧板巧在七塊板子隨意組合,可以組成很多種形狀。我讓大家拼出一個(gè)小房子,大家能很輕易的做到,下次我又讓大家用這些拼出來(lái)一個(gè)小鐘樓,大家還是能夠毫無(wú)鴨梨的完成任務(wù)。七塊板還是這七塊板,只不過(guò)進(jìn)行了不同的排序罷了,但卻收到了兩種不同的產(chǎn)品。這就是模塊化編程的優(yōu)勢(shì),只要我“七塊板”到手,任你魔高一尺,我則道高一丈。
在單片機(jī)程序里,程序比較小或者功能比較簡(jiǎn)單的時(shí)候,我們不需要采用模塊化編程,但是,當(dāng)程序功能復(fù)雜、涉及的資源較多的時(shí)候,模塊化編程就能體現(xiàn)它的優(yōu)越性了。如前面我們寫過(guò)的DS18B20的驅(qū)動(dòng)程序、獨(dú)立按鍵掃描程序和12864程序,每一個(gè)程序都是只用一個(gè)源文件編寫就能完成,但是,當(dāng)您制作一個(gè)12864液晶日歷的時(shí)候,需要用到DS18B20驅(qū)動(dòng)程序、獨(dú)立按鍵掃描程序和12864顯示程序,如果把這三個(gè)程序全部集中在一個(gè)源文件里,將導(dǎo)致主體程序臃腫且雜亂,這樣做并非不可取,只是降低了程序可讀性、可維護(hù)性和代碼的重用率。如果把這三個(gè)程序當(dāng)做三個(gè)獨(dú)立的模塊放到你的主體工程進(jìn)行模塊化編程,效果就不一樣了。
實(shí)際上,模塊化編程就是模塊合并的過(guò)程,就是建立每個(gè)模塊的頭文件和源文件并將其加入到主體程序的過(guò)程。主體程序調(diào)用模塊的函數(shù)是通過(guò)包含模塊的頭文件來(lái)實(shí)現(xiàn),模塊的頭文件和源文件是模塊密不可分的兩個(gè)部分,缺一不可。所以,模塊化編程必須提供每個(gè)模塊的頭文件和源文件。
(二)模塊化編程的好處
想當(dāng)年,我還是一枚單片機(jī)清新小菜的時(shí)候,記得大學(xué)的時(shí)候參加一個(gè)電子設(shè)計(jì)大賽,用單片機(jī)做了個(gè)點(diǎn)陣+數(shù)碼管顯示環(huán)境信息和萬(wàn)年歷的程序,調(diào)試了幾個(gè)星期,所有程序加起來(lái)小1000行,瘦長(zhǎng)且雜亂的一個(gè)程序,編程的規(guī)范性也很差,從上瀏覽下來(lái)都要好半天。出了錯(cuò)誤去問(wèn)老師,見(jiàn)我這亂七八糟的程序,老師看都懶得看。于是自己調(diào)試,出了一些簡(jiǎn)單的語(yǔ)法錯(cuò)誤還好定位,其它一些錯(cuò)誤,找半天才能找的到。那個(gè)時(shí)候被自己挖的大坑折騰的夠嗆,那段歲月也不堪回首,每每回想起來(lái)(我先去吐會(huì)兒血),仍然會(huì)覺(jué)得腦袋里一團(tuán)亂麻。
生活就是這樣,總是在你覺(jué)得“山窮水復(fù)疑無(wú)路”的時(shí)候讓你“柳暗花明”“又一村”。一個(gè)偶然的機(jī)會(huì),我接觸到了模塊化編程。于是開(kāi)始了解,覺(jué)得這個(gè)是解決困擾我N久的問(wèn)題的絕好機(jī)會(huì)。于是果斷開(kāi)始“模塊化”。每天我都會(huì)寫一些函數(shù)并調(diào)試,比如us級(jí)的延時(shí)函數(shù),ms級(jí)的延時(shí)函數(shù),I2C協(xié)議函數(shù),串口通信函數(shù),1602和12864液晶驅(qū)動(dòng)函數(shù),還有例如DS18B20等各種常用的傳感器驅(qū)動(dòng)函數(shù)等等。由于長(zhǎng)期的積累,我收獲了一大堆非常給力的函數(shù),編程也漸漸變的規(guī)范起來(lái),不再像以前那么難以閱讀了。當(dāng)然這都不是重點(diǎn),重點(diǎn)是,我做單片機(jī)設(shè)計(jì)的速度和效率快了好幾個(gè)數(shù)量級(jí)。
那么具體是怎么實(shí)現(xiàn)的呢,敬請(qǐng)關(guān)注《第一彈---單片機(jī)模塊化編程(二)》且聽(tīng)我慢慢道來(lái)。
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評(píng)論