資源描述:
《C語(yǔ)言模塊化編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、嵌入式C語(yǔ)言之---模塊化編程當(dāng)你在一個(gè)項(xiàng)目小組做一個(gè)相對(duì)較復(fù)雜的工程時(shí),意味著你不再獨(dú)自單干。你需要和你的小組成員分工合作,一起完成項(xiàng)目,這就要求小組成員各自負(fù)責(zé)一部分工程。比如你可能只是負(fù)責(zé)通訊或者顯示這一塊。這個(gè)時(shí)候,你就應(yīng)該將自己的這一塊程序?qū)懗梢粋€(gè)模塊,單獨(dú)調(diào)試,留出接口供其它模塊調(diào)用。最后,小組成員都將自己負(fù)責(zé)的模塊寫完并調(diào)試無(wú)誤后,由項(xiàng)目組長(zhǎng)進(jìn)行組合調(diào)試。像這些場(chǎng)合就要求程序必須模塊化。模塊化的好處是很多的,不僅僅是便于分工,它還有助于程序的調(diào)試,有利于程序結(jié)構(gòu)的劃分,還能增加程序的可讀性和可移植性。初學(xué)者往往搞不懂如何模塊化
2、編程,其實(shí)它是簡(jiǎn)單易學(xué),而且又是組織良好程序結(jié)構(gòu)行之有效的方法之一.本文將先大概講一下模塊化的方法和注意事項(xiàng),最后將以初學(xué)者使用最廣的keilc編譯器為例,給出模塊化編程的詳細(xì)步驟。模塊化程序設(shè)計(jì)應(yīng)該理解以下概述:(1)模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊接口的聲明;這一條概括了模塊化的實(shí)現(xiàn)方法和實(shí)質(zhì):將一個(gè)功能模塊的代碼單獨(dú)編寫成一個(gè).c文件,然后把該模塊的接口函數(shù)放在.h文件中.舉例:假如你用到液晶顯示,那么你可能會(huì)寫一個(gè)液晶驅(qū)動(dòng)模塊,以實(shí)現(xiàn)字符、漢字和圖像的現(xiàn)實(shí),命名為:led_device.c,該模
3、塊的.c文件大體可以寫成:/**************************************************************************液晶驅(qū)動(dòng)模塊**文件:lcd_device.c*編寫人:小瓶蓋*描述:液晶串行顯示驅(qū)動(dòng)模塊,提供字符、漢字、和圖像的實(shí)現(xiàn)接口*編寫時(shí)間:2009.07.03*版本:1.2*************************************************************************/#include……//定義變量unsignedch
4、arflag;//局部變量staticunsignedcharvalue;//全局變量…//定義函數(shù)//這是本模塊第一個(gè)函數(shù),起到延時(shí)作用,只供本模塊的函數(shù)調(diào)用,所以用到static關(guān)鍵字修飾/********************延時(shí)子程序************************/staticvoiddelay(uintus)//delaytime{}//這是本模塊的第二個(gè)函數(shù),要在其他模塊中調(diào)用/*********************寫字符程序****************************功能:向LCD寫入字符*
5、*參數(shù):dat_comm為1寫入的是數(shù)據(jù),為0寫入的是指令content為寫入的數(shù)字或指令******************************************************/voidwr_lcd(uchardat_comm,ucharcontent){}…………/*****************************ENDFiles***********************************/注:此處只寫出這兩個(gè)函數(shù),第一個(gè)延時(shí)函數(shù)的作用范圍是模塊內(nèi),第二個(gè),它是其它模塊需要的。為了簡(jiǎn)化,此處并沒有寫
6、出函數(shù)體..h文件中給出模塊的接口.在上面的例子中,向LCD寫入字符函數(shù):wr_lcd(uchardat_comm,ucharcontent)就是一個(gè)接口函數(shù),因?yàn)槠渌K會(huì)調(diào)用它,那么.h文件中就必須將這個(gè)函數(shù)聲明為外部函數(shù)(使用extrun關(guān)鍵字修飾),另一個(gè)延時(shí)函數(shù):voiddelay(uintus)只是在本模塊中使用(本地函數(shù),用static關(guān)鍵字修飾),因此它是不需要放到.h文件中的。.h文件格式如下:/****************************************************************
7、**************液晶驅(qū)動(dòng)模塊頭文件**文件:lcd_device.h*編寫人:小瓶蓋*編寫時(shí)間:2010.07.03*版本:1.0*********************************************************************************///聲明全局變量externunsignedcharvalue;//聲明接口函數(shù)externvoidwr_lcd(uchardat_comm,ucharcontent);//向LCD寫入字符……/**********************
8、*******ENDFiles***********************************/這里注意三點(diǎn):1.在keil編譯器中,extern這個(gè)關(guān)鍵字即使不聲明,編譯