img33
img42
img42

單片機繼電保護測試(shì)儀程序(xù)設計(jì)中的分層思想

單片機繼電(diàn)保護測試(shì)儀程序設計中的分層思想
分層的(de)思(sī)想,並不是什麽神秘的東西,事實上很多做項目的工程師(shī)本身自己也會在用(yòng)。看了不(bú)少帖子都發現沒有提及這個東西,然而分層結構確是很有用的東西,參透後會有(yǒu)一種恍然大悟的感覺。如果說我(wǒ)不懂繼電保護測試儀(yí)怎麽驅動,那好辦,看一下datasheet,參考一下別人的程序,很快就可(kě)以做出來。但是如(rú)果不(bú)懂程序設(shè)計的(de)思想的話,會給你(nǐ)做項(xiàng)目的(de)過程(chéng)中帶來很多(duō)很多的(de)困惑。LCD
參考了市麵上各種各樣的嵌入式書(shū)籍,MCS-51,AVR,ARM等都有看過,但是沒有發現有哪本是介紹設計(jì)思(sī)想的,就算(suàn)有也是鳳毛麟角。寫程序不難,但(dàn)是(shì)程序怎麽樣才(cái)能寫的好,寫(xiě)的快,那是需要點經驗積累的。結構化模塊化(huà)的程(chéng)序設(shè)計的(de)思想,使*基(jī)本的要求。然而這麽將這(zhè)個抽象的(de)概念(niàn)運用(yòng)到工程實踐當中恩?那需要在(zài)做項目的過程中經曆磨難(nán),將一些東西總結(jié)出來,抽象升華為理論,對經驗的積累和技術的傳播都大有裨益。所以在下出來獻(xiàn)醜一下,總結一(yī)些東西。
就我個人的經驗而談,有兩個設計(jì)思想是非常重要的。
一個就是“時間片輪的設計思想”,這個對實(shí)際中(zhōng)解決多任務問題非常有用,通常可以用這個東(dōng)西來判斷一個人是單片(piàn)機學習者,還是一個繼電保護(hù)測(cè)試儀單片機工程師。這個必須掌握。由於網上介紹這個的帖子也不少,所以這裏就(jiù)不多說了。
**個(gè)就是我今天想說(shuō)的主題“分層屏蔽的設計思想”。下麵用掃描鍵(jiàn)盤程序例子作為引子,引(yǐn)出今天說的東西。
問(wèn)題的提(tí)出
單片機學習板一般為了簡單起見,將按鍵分(fèn)配的很好,例如整個4*4的鍵盤(pán)矩陣(zhèn)分配(pèi)到P1口上麵,8條控製線,剛好。這樣的話程序也非常好(hǎo)寫。隻需要簡單的
KEY_DAT = P1;
端口的數據就讀進(jìn)來了。
誠然,現實中沒有這麽(me)好的事情。在實際的項目應用當中,單片機引腳的複用相當厲害,這跟那些所謂的單片機學習板就有(yǒu)很大的差別了。
另外一個原因,一般設計來說,是“軟件配合硬件”的(de)設計流程,簡單點說就是,先(xiān)確(què)定好硬件原理圖,硬件布線,*後才是軟件的開發,因為硬件修改起來比較麻煩,相對來說軟件修(xiū)改的時候比較好改。這個就是中國傳統的陰陽平衡哲學原理。硬件設計和軟件設(shè)計本來就是魚和熊掌的關係,兩者不可兼(jiān)得。方便了硬件設計,很可能給寫軟件帶來很大的麻煩。反過來說,方便了軟件設計,硬件設(shè)計也會相當的(de)麻煩。如果(guǒ)硬件設計和軟件設計同時方便了,那隻有兩種可能,一是(shì)這個(gè)設計方(fāng)案非常簡單,二是設計師已經達到了一個(gè)非常高的(de)境界。我們不考慮那麽多情況,單純從常用的實際應用的角度來看問題。
或許有人不甘心,“那些東西我花了很長時間學(xué)習的,也用的好好的,怎麽能說一句不用(yòng)就不用?”雖然有點殘忍,但是我還(hái)是想說“兄弟,接受現實吧,現實是殘酷的……”
不過,人區別於低等動物的差別,是人會(huì)創造,在碰到(dào)困難的時候會想辦法解(jiě)決,於是我們開始了沉思……
*後我們引入初中(zhōng)數學學的“映射”的概念來解決問題。基本思想就是,將繼電保護測試儀(yí)不同端口的按鍵映射到相同端口上麵。
這樣按鍵(jiàn)掃描程序就分成3個層次了。
1)*底層(céng)的是硬件層,完成端口掃描,20ms延時消抖,將端口的數據映射到一個KEY_DAT寄存器上麵(miàn),KEY_DAT作為對上層驅動層的一個接口。
2)中間的(de)一層是驅動層,驅動層隻對KEY_DAT寄存(cún)器的數值進行操作。簡單點說(shuō),我們無論底層的硬件是怎麽接(jiē)線的,在(zài)驅動層都不需要關心,隻需(xū)要關心KEY_DAT這個寄存器的數值是什麽就可以了。這樣(yàng)出來(lái)的間接效果就是“屏蔽(bì)了底層硬件的差異”,所以驅動層寫的程序就可(kě)以通用了。
驅動層的另外一個功能是為了上層提供消(xiāo)息接口。我們用了類似window程(chéng)序的消息的概念。這裏可以提(tí)供一些按鍵消息,例如:按下消息,鬆開消息,長按鍵消息,長按鍵的時候的步進消息,等(děng)等。
3)應用層。這裏就是(shì)根據項目的不同分別寫按鍵功能程序(xù),屬於(yú)*上層的程序。它使用的是驅動層提供的消息接口。在應用層(céng)寫程序的思(sī)想(xiǎng)就是(shì),我不(bú)管下層是怎麽工(gōng)作的,我隻關心按(àn)鍵消息。有按鍵消息來的時候我就執行功能,沒有消息來的時候,我就什(shí)麽也不做(zuò)。
下麵用一個簡單的常用的例(lì)子,說明我們這個(gè)設計思想的用法。
秒表(biǎo)調整時間的時候,要求按著某個按鍵不放,時間能連(lián)續的向上(shàng)增加。這個(gè)東(dōng)西很實用,實際的家電中(zhōng)用途很廣泛。
在看下麵(miàn)的東西之前,大家可以想一下,這東西難嗎?相信大家都(dōu)會很響亮的回答,“不難!!”,然而(ér)我再問:“這東西麻煩(fán)嗎?”我相信很多人肯(kěn)定會說“很麻煩!!”這不禁讓我想起開始(shǐ)學單(dān)片機的時候寫這種按鍵的那程序,亂七八糟(zāo)的結構。如果不(bú)相信的話,可以自己(jǐ)用51寫(xiě)一下哦,那樣就更加能體會(huì)本文說的分層結構的優越性。
img42
img45
上海嘿嘿连载APP電氣科技(jì)有限公(gōng)司(sī)
電話(huà):021-56774665, 021-56653661, 021-56774695, 021-66401707, 13801861238, 13564529000,    傳真:021-56774695
地址:上海市汶水(shuǐ)路8號  郵編:200072
滬ICP備09077764號(hào)-18
 
主營產品:高壓開(kāi)關測試儀校準裝置三杯絕緣油介電(diàn)強度測(cè)試儀三(sān)相微機控製繼電保(bǎo)護測試儀真空開關(guān)真空(kōng)度測試儀升流器核相儀
嘿嘿连载APP_嘿嘿连载漫画App下载_嘿嘿连载漫画安卓版下载