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