在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機C語言學習筆記8:單片機C51編程規(guī)范

            51單片機C語言學習筆記8:單片機C51編程規(guī)范

            作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
            在網(wǎng)上找到這份單片機C51編程規(guī)范,覺得很有用,決定在以后自己編C51程序的時候用上。



            1單片機C51編程規(guī)范-前言
            為了提高源程序的質(zhì)量和可維護性,從而最終提高軟件產(chǎn)品生產(chǎn)力,特編寫此規(guī)范。



            2單片機C51編程規(guī)范-范圍

            本標準規(guī)定了程序設計人員進行程序設計時必須遵循的規(guī)范。本規(guī)范主要針對C51編程語言和keil編譯器而言,包括排版、注釋、命名、變量使用、代碼可測性、程序效率、質(zhì)量保證等內(nèi)容。



            3單片機C51編程規(guī)范-總則
            l格式清晰
            l注釋簡明扼要
            l命名規(guī)范易懂
            l函數(shù)模塊化
            l程序易讀易維護
            l功能準確實現(xiàn)
            l代碼空間效率和時間效率高
            l適度的可擴展性



            4單片機C51編程規(guī)范-數(shù)據(jù)類型定義

            編程時統(tǒng)一采用下述新類型名的方式定義數(shù)據(jù)類型。
            建立一個datatype.h文件,在該文件中進行如下定義:
            typedefbitbool;//位變量//
            typedef unsigned charuint8;//無符號8位整型變量//
            typedefsignedcharint8;//有符號8位整型變量//
            typedef unsignedintuint16;//無符號16位整型變量//
            typedef signedintint16;//有符號16位整型變量//
            typedef unsigned longuint32;//無符號32位整型變量//
            typedef signedlongint32;//有符號32位整型變量//
            typedeffloatfp32;//單精度浮點數(shù)(32位長度) //
            typedefdoublefp64;//雙精度浮點數(shù)(64位長度) //



            5單片機C51編程規(guī)范-標識符命名
            5.1命名基本原則
            l命名要清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫。即"見名知意"。
            l命名風格要自始至終保持一致。
            l命名中若使用特殊約定或縮寫,要有注釋說明。
            l除了編譯開關/頭文件等特殊應用,應避免使用以下劃線開始和/或結(jié)尾的定義。
            l同一軟件產(chǎn)品內(nèi)模塊之間接口部分的標識符名稱之前加上模塊標識。

            5.2宏和常量命名
            宏和常量用全部大寫字母來命名,詞與詞之間用下劃線分隔。對程序中用到的數(shù)字均應用有意義的枚舉或宏來代替。

            5.3變量命名
            變量名用小寫字母命名,每個詞的第一個字母大寫。類型前綴(u8s8 etc.)全局變量另加前綴g_。
            局部變量應簡明扼要。局部循環(huán)體控制變量優(yōu)先使用i、j、k等;

            局部長度變量優(yōu)先使用len、num等;

            臨時中間變量優(yōu)先使用temp、tmp等。

            5.4函數(shù)命名
            函數(shù)名用小寫字母命名,每個詞的第一個字母大寫,并將模塊標識加在最前面。

            5.5文件命名
            一個文件包含一類功能或一個模塊的所有函數(shù),文件名稱應清楚表明其功能或性質(zhì)。
            每個.c文件應該有一個同名的.h文件作為頭文件。

            6單片機C51編程規(guī)范-注釋
            6.1注釋基本原則
            l有助于對程序的閱讀理解,說明程序在"做什么",解釋代碼的目的、功能和采用的方法。
            l一般情況源程序有效注釋量在30%左右。
            l注釋語言必須準確、易懂、簡潔。
            l邊寫代碼邊注釋,修改代碼同時修改相應的注釋,不再有用的注釋要刪除。

            6.2文件注釋
            文件注釋必須說明文件名、函數(shù)功能、創(chuàng)建人、創(chuàng)建日期、版本信息等相關信息。
            修改文件代碼時,應在文件注釋中記錄修改日期、修改人員,并簡要說明此次修改的目的。所有修改記錄必須保持完整。
            文件注釋放在文件頂端,用"/*……*/"格式包含。
            注釋文本每行縮進4個空格;每個注釋文本分項名稱應對齊。
            /***********************************************************
            文件名稱:
            作者:
            版本:
            說明:
            修改記錄:
            ***********************************************************/

            6.3函數(shù)注釋
            6.3.1函數(shù)頭部注釋
            函數(shù)頭部注釋應包括函數(shù)名稱、函數(shù)功能、入口參數(shù)、出口參數(shù)等內(nèi)容。如有必要還可增加作者、創(chuàng)建日期、修改記錄(備注)等相關項目。
            函數(shù)頭部注釋放在每個函數(shù)的頂端,用"/*……*/"的格式包含。其中函數(shù)名稱應簡寫為FunctionName(),不加入、出口參數(shù)等信息。
            /***********************************************************
            函數(shù)名稱:
            函數(shù)功能:
            入口參數(shù):
            出口參數(shù):
            備注:
            ***********************************************************/

            6.3.2代碼注釋
            代碼注釋應與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應該添加在被注釋語句的行尾,一個函數(shù)內(nèi)的多個注釋左對齊;較多注釋則應加在上方且注釋行與被注釋的語句左對齊。
            函數(shù)代碼注釋用"http://…//"的格式。
            通常,分支語句(條件分支、循環(huán)語句等)必須編寫注釋。其程序塊結(jié)束行"}"的右方應加表明該程序塊結(jié)束的標記"end of ……",尤其在多重嵌套時。

            6.4變量、常量、宏的注釋
            同一類型的標識符應集中定義,并在定義之前一行對其共性加以統(tǒng)一注釋。對單個標識符的注釋加在定義語句的行尾。
            全局變量一定要有詳細的注釋,包括其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時的注意事項等。
            注釋用"http://…//"的格式。



            7單片機C51編程規(guī)范-函數(shù)
            7.1設計原則
            函數(shù)的基本要求:
            l正確性:程序要實現(xiàn)設計要求的功能。
            l穩(wěn)定性和安全性:程序運行穩(wěn)定、可靠、安全。
            l可測試性:程序便于測試和評價。
            l規(guī)范/可讀性:程序書寫風格、命名規(guī)則等符合規(guī)范。
            l擴展性:代碼為下一次升級擴展留有空間和接口。
            l全局效率:軟件系統(tǒng)的整體效率高。
            l局部效率:某個模塊/子模塊/函數(shù)的本身效率高。

            編制函數(shù)的基本原則:
            l單個函數(shù)的規(guī)模盡量限制在200行以內(nèi)(不包括注釋和空行)。一個函數(shù)只完成一個功能。
            l函數(shù)局部變量的數(shù)目一般不超過5~10個。
            l函數(shù)內(nèi)部局部變量定義區(qū)和功能實現(xiàn)區(qū)(包含變量初始化)之間空一行。
            l函數(shù)名應準確描述函數(shù)的功能。通常使用動賓詞組為執(zhí)行某操作的函數(shù)命名。
            l函數(shù)的返回值要清楚明了,尤其是出錯返回值的意義要準確無誤。
            l不要把與函數(shù)返回值類型不同的變量,以編譯系統(tǒng)默認的轉(zhuǎn)換方式或強制的轉(zhuǎn)換方式作為返回值返回。
            l減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。
            l盡量不要將函數(shù)的參數(shù)作為工作變量。

            7.2函數(shù)定義
            l函數(shù)若沒有入口參數(shù)或者出口參數(shù),應用void明確申明。
            l函數(shù)名稱與出口參數(shù)類型定義間應該空一格且只空一格。
            l函數(shù)名稱與括號()之間無空格。
            l函數(shù)形參必須給出明確的類型定義。
            l多個形參的函數(shù),后一個形參與前一個形參的逗號分割符之間添加一個空格。
            l函數(shù)體的前后花括號"{}"各獨占一行。

            7.3局部變量定義
            l同一行內(nèi)不要定義過多變量。
            l同一類的變量在同一行內(nèi)定義,或者在相鄰行定義。
            l先定義data型變量,再定義idtata型變量,再定義xdata型變量.
            l數(shù)組、指針等復雜類型的定義放在定義區(qū)的最后。
            l變量定義區(qū)不做較復雜的變量賦值。

            7.4功能實現(xiàn)區(qū)規(guī)范
            l一行只寫一條語句。
            l注意運算符的優(yōu)先級,并用括號明確表達式的操作順序,避免使用默認優(yōu)先級。
            l各程序段之間使用一個空行分隔,加以必要的注釋。程序段指能完一個較具體的功能的一行或多行代碼。程序段內(nèi)的各行代碼之間相互依賴性較強。
            l不要使用難懂的技巧性很高的語句。
            l源程序中關系較為緊密的代碼應盡可能相鄰。
            l完成簡單功能、關系非常密切的一條或幾條語句可編寫為函數(shù)或定義為宏。

            8單片機C51編程規(guī)范-排版
            8.1縮進
            代碼的每一級均往右縮進4個空格的位置。

            8.2分行
            過長的語句(超過80個字符)要分成多行書寫;長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進適當?shù)目s進,使排版整齊,語句可讀。避免把注釋插入分行中。

            8.3空行
            l文件注釋區(qū)、頭文件引用區(qū)、函數(shù)間應該有且只有一行空行。
            l相鄰函數(shù)之間應該有且只有一行空行。
            l函數(shù)體內(nèi)相對獨立的程序塊之間可以用一行空行或注釋來分隔。
            l函數(shù)注釋和對應的函數(shù)體之間不應該有空行。
            l文件末尾有且只有一行空行。

            8.4空格
            l函數(shù)語句尾部或者注釋之后不能有空格。
            l括號內(nèi)側(cè)(即左括號后面和右括號前面)不加空格,多重括號間不加空格。
            l函數(shù)形參之間應該有且只有一個空格(形參逗號后面加空格)。
            l同一行中定義的多個變量間應該有且只有一個空格(變量逗號后面加空格)。
            l表達式中,若有多個操作符連寫的情況,應使用空格對它們分隔:
            在兩個以上的關鍵字、變量、常量進行對等操作時,它們之間的操作符前后均加一個空格;在兩個以上的關鍵字、變量、常量進行非對等操作時,其前后均不應加空格;
            逗號只在后面加空格;
            雙目操作符,如比較操作符,賦值操作符"="、"+=",算術操作符"+"、"%",邏輯操作符"&&"、"&",位操作符"<<"、"^"等,前后均加一個空格;
            單目操作符,如"!"、"~"、"++"、"-"、"&"(地址運算符)等,前后不加空格;
            "->"、"."前后不加空格;
            if、for、while、switch等關鍵字與后面的括號間加一個空格;

            8.5花括號
            l if、else if、else、for、while語句無論其執(zhí)行體是一條語句還是多條語句都必須加花括號,且左右花括號各獨占一行。
            l do{}while()結(jié)構(gòu)中,"do"和"{"均各占一行,"}"和"while();"共同占用一行。
            if ( ) do
            { {

            } }while( );
            else
            {

            }

            8.6 switch語句
            l每個case和其判據(jù)條件獨占一行。
            l每個case程序塊需用break結(jié)束。特殊情況下需要從一個case塊順序執(zhí)行到下一個case塊的時候除外,但需要在交界處明確注釋如此操作的原因,以防止出錯。
            l case程序塊之間空一行,且只空一行。
            l每個case程序塊的執(zhí)行語句保持4個空格的縮進。
            l一般情況下都應該包含default分支。
            Switch ( )
            {
            case x:

            break;

            case x:

            break;

            default:

            break;
            }

            9單片機C51編程規(guī)范-程序結(jié)構(gòu)
            9.1基本要求
            l有main()函數(shù)的.c文件應將main()放在最前面,并明確用void聲明參數(shù)和返回值。
            l對由多個.c文件組成的模塊程序或完整監(jiān)控程序,建立公共引用頭文件,將需要引用的庫頭文件、標準寄存器定義頭文件、自定義的頭文件、全局變量等均包含在內(nèi),供每個文件引用。通常,標準函數(shù)庫頭文件采用尖角號< >標志文件名,自定義頭文件采用雙撇號″″標志文件名。
            l每個.c文件有一個對應的.h文件,.c文件的注釋之后首先定義一個唯一的文件標志宏,并在對應的.h文件中解析該標志。
            在.c文件中:
            #define FILE_FLAG
            在.h文件中:
            #ifdef FILE_FLAG
            #define XXX
            #else
            #define XXX extern
            #endif
            l對于確定只被某個.c文件調(diào)用的定義可以單獨列在一個頭文件中、單獨調(diào)用。

            9.2可重入函數(shù)
            可重入函數(shù)中若使用了全局變量,應通過關中斷、信號量等操作手段對其加以保護。

            9.3函數(shù)的形參
            l由函數(shù)調(diào)用者負責檢查形參的合法性。
            l盡量避免將形參作為工作變量使用。

            9.4循環(huán)
            l盡量減少循環(huán)嵌套層數(shù)
            l在多重循環(huán)中,應將最忙的循環(huán)放在最內(nèi)層
            l循環(huán)體內(nèi)工作量最小
            l盡量避免循環(huán)體內(nèi)含有判斷語句


            評論


            技術專區(qū)

            關閉