<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

      電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
      搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

      c51編程規(guī)范

      作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2011-2-13
      1單片機(jī)C51編程規(guī)范- 前言
        為了提高源程序的質(zhì)量和可維護(hù)性,從而最終提高軟件產(chǎn)品生產(chǎn)力,特編寫此規(guī)范。
      2 單片機(jī)C51編程規(guī)范-范圍
        本標(biāo)準(zhǔn)規(guī)定了程序設(shè)計(jì)人員進(jìn)行程序設(shè)計(jì)時(shí)必須遵循的規(guī)范。本規(guī)范主要針對(duì)C51編程語言和keil編譯器而言,包括排版、注釋、命名、變量使用、代碼可測(cè)性、程序效率、質(zhì)量保證等內(nèi)容。
      3 單片機(jī)C51編程規(guī)范-總則
         格式清晰

      注釋簡(jiǎn)明扼要
      命名規(guī)范易懂

      函數(shù)模塊化
      程序易讀易維護(hù)
      功能準(zhǔn)確實(shí)現(xiàn)
      代碼空間效率和時(shí)間效率高
      適度的可擴(kuò)展性
      4 單片機(jī)C51編程規(guī)范-數(shù)據(jù)類型定義
      編程時(shí)統(tǒng)一采用下述新類型名的方式定義數(shù)據(jù)類型。
      建立一個(gè)datatype.h文件,在該文件中進(jìn)行如下定義:
      typedef bit BOOL; // 位變量 //
      typedef unsigned char INT8U; // 無符號(hào)8位整型變量 //
      typedef signed char INT8S; // 有符號(hào)8位整型變量 //
      typedef unsigned int INT16U; // 無符號(hào)16位整型變量 //
      typedef signed int INT16S; // 有符號(hào)16位整型變量 //
      typedef unsigned long INT32U; // 無符號(hào)32位整型變量 //
      typedef signed long INT32S; // 有符號(hào)32位整型變量 //
      typedef float FP32; // 單精度浮點(diǎn)數(shù)(32位長度) //
      typedef double FP64; // 雙精度浮點(diǎn)數(shù)(64位長度) //
      5 單片機(jī)C51編程規(guī)范-標(biāo)識(shí)符命名
      5.1 命名基本原則
      l 命名要清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個(gè)字母形成縮寫。即"見名知意"。
      l 命名風(fēng)格要自始至終保持一致。
      l 命名中若使用特殊約定或縮寫,要有注釋說明。
      l 除了編譯開關(guān)/頭文件等特殊應(yīng)用,應(yīng)避免使用以下劃線開始和/或結(jié)尾的定義。
      l 同一軟件產(chǎn)品內(nèi)模塊之間接口部分的標(biāo)識(shí)符名稱之前加上模塊標(biāo)識(shí)。
      5.2 宏和常量命名
      宏和常量用全部大寫字母來命名,詞與詞之間用下劃線分隔。對(duì)程序中用到的數(shù)字均應(yīng)用有意義的枚舉或宏來代替。
      5.3 變量命名
      變量名用小寫字母命名,每個(gè)詞的第一個(gè)字母大寫。類型前綴(u8\s8 etc.)全局變量另加前綴g_。
      局部變量應(yīng)簡(jiǎn)明扼要。局部循環(huán)體控制變量?jī)?yōu)先使用i、j、k等;局部長度變量?jī)?yōu)先使用len、num等;臨時(shí)中間變量?jī)?yōu)先使用temp、tmp等。
      5.4 函數(shù)命名
      函數(shù)名用小寫字母命名,每個(gè)詞的第一個(gè)字母大寫,并將模塊標(biāo)識(shí)加在最前面。
      5.5 文件命名
      一個(gè)文件包含一類功能或一個(gè)模塊的所有函數(shù),文件名稱應(yīng)清楚表明其功能或性質(zhì)。
      每個(gè).c文件應(yīng)該有一個(gè)同名的.h文件作為頭文件。
      6 單片機(jī)C51編程規(guī)范-注釋
      6.1 注釋基本原則
      l 有助于對(duì)程序的閱讀理解,說明程序在"做什么",解釋代碼的目的、功能和采用的方法。
      l 一般情況源程序有效注釋量在30%左右。
      l 注釋語言必須準(zhǔn)確、易懂、簡(jiǎn)潔。
      l 邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,不再有用的注釋要?jiǎng)h除。
      6.2 文件注釋
      文件注釋必須說明文件名、函數(shù)功能、創(chuàng)建人、創(chuàng)建日期、版本信息等相關(guān)信息。
      修改文件代碼時(shí),應(yīng)在文件注釋中記錄修改日期、修改人員,并簡(jiǎn)要說明此次修改的目的。所有修改記錄必須保持完整。
      文件注釋放在文件頂端,用"/*……*/"格式包含。
      注釋文本每行縮進(jìn)4個(gè)空格;每個(gè)注釋文本分項(xiàng)名稱應(yīng)對(duì)齊。
      /***********************************************************
      文件名稱:
      作 者:
      版 本:
      說 明:
      修改記錄:
      ***********************************************************/
      6.3 函數(shù)注釋
      6.3.1 函數(shù)頭部注釋
      函數(shù)頭部注釋應(yīng)包括函數(shù)名稱、函數(shù)功能、入口參數(shù)、出口參數(shù)等內(nèi)容。如有必要還可增加作者、創(chuàng)建日期、修改記錄(備注)等相關(guān)項(xiàng)目。
      函數(shù)頭部注釋放在每個(gè)函數(shù)的頂端,用"/*……*/"的格式包含。其中函數(shù)名稱應(yīng)簡(jiǎn)寫為FunctionName(),不加入、出口參數(shù)等信息。
      /***********************************************************
      函數(shù)名稱:
      函數(shù)功能:
      入口參數(shù):
      出口參數(shù):
      備 注:
      ***********************************************************/
      6.3.2 代碼注釋
      代碼注釋應(yīng)與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應(yīng)該添加在被注釋語句的行尾,一個(gè)函數(shù)內(nèi)的多個(gè)注釋左對(duì)齊;較多注釋則應(yīng)加在上方且注釋行與被注釋的語句左對(duì)齊。
      函數(shù)代碼注釋用"http://…//"的格式。
      通常,分支語句(條件分支、循環(huán)語句等)必須編寫注釋。其程序塊結(jié)束行"}"的右方應(yīng)加表明該程序塊結(jié)束的標(biāo)記"end of ……", 尤其在多重嵌套時(shí)。
      6.4 變量、常量、宏的注釋
      同一類型的標(biāo)識(shí)符應(yīng)集中定義,并在定義之前一行對(duì)其共性加以統(tǒng)一注釋。對(duì)單個(gè)標(biāo)識(shí)符的注釋加在定義語句的行尾。
      全局變量一定要有詳細(xì)的注釋,包括其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時(shí)的注意事項(xiàng)等。
      注釋用"http://…//"的格式。
      7 單片機(jī)C51編程規(guī)范-函數(shù)
      7.1 設(shè)計(jì)原則
      函數(shù)的基本要求:
      l 正確性:程序要實(shí)現(xiàn)設(shè)計(jì)要求的功能。
      l 穩(wěn)定性和安全性:程序運(yùn)行穩(wěn)定、可靠、安全。
      l 可測(cè)試性:程序便于測(cè)試和評(píng)價(jià)。
      l 規(guī)范/可讀性:程序書寫風(fēng)格、命名規(guī)則等符合規(guī)范。
      l 擴(kuò)展性:代碼為下一次升級(jí)擴(kuò)展留有空間和接口。
      l 全局效率:軟件系統(tǒng)的整體效率高。
      l 局部效率:某個(gè)模塊/子模塊/函數(shù)的本身效率高。
      編制函數(shù)的基本原則:
      l 單個(gè)函數(shù)的規(guī)模盡量限制在200行以內(nèi)(不包括注釋和空行)。一個(gè)函數(shù)只完成一個(gè)功能。
      l 函數(shù)局部變量的數(shù)目一般不超過5~10個(gè)。
      l 函數(shù)內(nèi)部局部變量定義區(qū)和功能實(shí)現(xiàn)區(qū)(包含變量初始化)之間空一行。
      l 函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能。通常使用動(dòng)賓詞組為執(zhí)行某操作的函數(shù)命名。
      l 函數(shù)的返回值要清楚明了,尤其是出錯(cuò)返回值的意義要準(zhǔn)確無誤。
      l 不要把與函數(shù)返回值類型不同的變量,以編譯系統(tǒng)默認(rèn)的轉(zhuǎn)換方式或強(qiáng)制的轉(zhuǎn)換方式作為返回值返回。
      l 減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。
      l 盡量不要將函數(shù)的參數(shù)作為工作變量。
      7.2 函數(shù)定義
      l 函數(shù)若沒有入口參數(shù)或者出口參數(shù),應(yīng)用void明確申明。
      l 函數(shù)名稱與出口參數(shù)類型定義間應(yīng)該空一格且只空一格。
      l 函數(shù)名稱與括號(hào)()之間無空格。
      l 函數(shù)形參必須給出明確的類型定義。
      l 多個(gè)形參的函數(shù),后一個(gè)形參與前一個(gè)形參的逗號(hào)分割符之間添加一個(gè)空格。
      l 函數(shù)體的前后花括號(hào)"{}" 各獨(dú)占一行。
      7.3 局部變量定義
      l 同一行內(nèi)不要定義過多變量。
      l 同一類的變量在同一行內(nèi)定義,或者在相鄰行定義。
      l 先定義data型變量,再定義idtata型變量,再定義xdata型變量.
      l 數(shù)組、指針等復(fù)雜類型的定義放在定義區(qū)的最后。
      l 變量定義區(qū)不做較復(fù)雜的變量賦值。
      7.4 功能實(shí)現(xiàn)區(qū)規(guī)范
      l 一行只寫一條語句。
      l 注意運(yùn)算符的優(yōu)先級(jí),并用括號(hào)明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級(jí)。
      l 各程序段之間使用一個(gè)空行分隔,加以必要的注釋。程序段指能完一個(gè)較具體的功能的一行或多行代碼。程序段內(nèi)的各行代碼之間相互依賴性較強(qiáng)。
      l 不要使用難懂的技巧性很高的語句。
      l 源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。
      l 完成簡(jiǎn)單功能、關(guān)系非常密切的一條或幾條語句可編寫為函數(shù)或定義為宏。
      8 單片機(jī)C51編程規(guī)范-排版
      8.1 縮進(jìn)
      代碼的每一級(jí)均往右縮進(jìn)4個(gè)空格的位置。
      8.2 分行
      過長的語句(超過80個(gè)字符)要分成多行書寫;長表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀。避免把注釋插入分行中。
      8.3 空行
      l 文件注釋區(qū)、頭文件引用區(qū)、函數(shù)間應(yīng)該有且只有一行空行。
      l 相鄰函數(shù)之間應(yīng)該有且只有一行空行。
      l 函數(shù)體內(nèi)相對(duì)獨(dú)立的程序塊之間可以用一行空行或注釋來分隔。
      l 函數(shù)注釋和對(duì)應(yīng)的函數(shù)體之間不應(yīng)該有空行。
      l 文件末尾有且只有一行空行。
      8.4 空格
      l 函數(shù)語句尾部或者注釋之后不能有空格。
      l 括號(hào)內(nèi)側(cè)(即左括號(hào)后面和右括號(hào)前面)不加空格,多重括號(hào)間不加空格。
      l 函數(shù)形參之間應(yīng)該有且只有一個(gè)空格(形參逗號(hào)后面加空格)。
      l 同一行中定義的多個(gè)變量間應(yīng)該有且只有一個(gè)空格(變量逗號(hào)后面加空格)。
      l 表達(dá)式中,若有多個(gè)操作符連寫的情況,應(yīng)使用空格對(duì)它們分隔:
      在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符前后均加一個(gè)空格;在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行非對(duì)等操作時(shí),其前后均不應(yīng)加空格;
      逗號(hào)只在后面加空格;
      雙目操作符,如比較操作符, 賦值操作符"="、"+=",算術(shù)操作符"+"、"%",邏輯操作符"&&"、"&",位操作符"<<"、"^"等,前后均加一個(gè)空格;
      單目操作符,如"!"、"~"、"++"、"-"、"&"(地址運(yùn)算符)等,前后不加空格;
      "->"、"."前后不加空格;
      if、for、while、switch等關(guān)鍵字與后面的括號(hào)間加一個(gè)空格;
      8.5 花括號(hào)
      l if、else if、else、for、while語句無論其執(zhí)行體是一條語句還是多條語句都必須加花括號(hào),且左右花括號(hào)各獨(dú)占一行。
      l do{}while()結(jié)構(gòu)中,"do"和"{"均各占一行,"}"和"while();"共同占用一行。
      if ( ) do
      { {
      } }while( );
      else
      {
      }
      8.6 switch語句
      l 每個(gè)case和其判據(jù)條件獨(dú)占一行。
      l 每個(gè)case程序塊需用break結(jié)束。特殊情況下需要從一個(gè)case塊順序執(zhí)行到下一個(gè)case塊的時(shí)候除外,但需要在交界處明確注釋如此操作的原因,以防止出錯(cuò)。
      l case程序塊之間空一行,且只空一行。
      l 每個(gè)case程序塊的執(zhí)行語句保持4個(gè)空格的縮進(jìn)。
      l 一般情況下都應(yīng)該包含default分支。
      Switch ( )
      {

      case x:
      break;
      case x:
      break;
      default:
      break;
      }
      9 單片機(jī)C51編程規(guī)范-程序結(jié)構(gòu)
      9.1 基本要求
      l 有main()函數(shù)的.c文件應(yīng)將main()放在最前面,并明確用void聲明參數(shù)和返回值。
      l 對(duì)由多個(gè).c文件組成的模塊程序或完整監(jiān)控程序,建立公共引用頭文件,將需要引用的庫頭文件、標(biāo)準(zhǔn)寄存器定義頭文件、自定義的頭文件、全局變量等均包含在內(nèi),供每個(gè)文件引用。通常,標(biāo)準(zhǔn)函數(shù)庫頭文件采用尖角號(hào)< >標(biāo)志文件名,自定義頭文件采用雙撇號(hào)″″標(biāo)志文件名。
      l 每個(gè).c文件有一個(gè)對(duì)應(yīng)的.h文件,.c文件的注釋之后首先定義一個(gè)唯一的文件標(biāo)志宏,并在對(duì)應(yīng)的.h文件中解析該標(biāo)志。
      在.c文件中:
      #define FILE_FLAG
      在.h文件中:
      #ifdef FILE_FLAG
      #define XXX
      #else
      #define XXX extern
      #endif
      l 對(duì)于確定只被某個(gè).c文件調(diào)用的定義可以單獨(dú)列在一個(gè)頭文件中、單獨(dú)調(diào)用。
      9.2 可重入函數(shù)
      可重入函數(shù)中若使用了全局變量,應(yīng)通過關(guān)中斷、信號(hào)量等操作手段對(duì)其加以保護(hù)。
      9.3 函數(shù)的形參
      l 由函數(shù)調(diào)用者負(fù)責(zé)檢查形參的合法性。
      l 盡量避免將形參作為工作變量使用。
      9.4 循環(huán)
      l 盡量減少循環(huán)嵌套層數(shù)
      l 在多重循環(huán)中,應(yīng)將最忙的循環(huán)放在最內(nèi)層
      l 循環(huán)體內(nèi)工作量最小
      l 盡量避免循環(huán)體內(nèi)含有判斷語句
      Tags:單片機(jī),c51,編程規(guī)范  
      責(zé)任編輯:admin
      請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 伊人久久大香线蕉综合爱婷婷 | 国产91色综合久久免费| 亚洲综合最新无码专区| 久久午夜综合久久| 久久久久AV综合网成人| 亚洲av永久中文无码精品综合| 热综合一本伊人久久精品| 一本久久知道综合久久| 色婷婷综合中文久久一本| 久久精品亚洲综合| 一本久道久久综合狠狠躁AV| 久久综合狠狠综合久久| 激情综合色综合久久综合| 99久久综合国产精品免费| 久久综合久久精品| 久久亚洲综合色一区二区三区| 综合无码一区二区三区四区五区| 久久综合色之久久综合| 亚洲国产综合AV在线观看| 天天久久影视色香综合网| 亚洲国产综合专区电影在线| 色综合视频一区二区三区| 丁香婷婷激情综合俺也去 | 久久久综合中文字幕久久| 亚洲偷自拍拍综合网| 丁香婷婷亚洲六月综合色| 一本久道久久综合中文字幕| 色拍自拍亚洲综合图区| 久久婷婷五月综合97色直播| 天天综合亚洲色在线精品| 天天爱天天做色综合| 天天综合天天添夜夜添狠狠添| 色综合久久夜色精品国产| 亚州AV综合色区无码一区| 伊人色综合一区二区三区影院视频 | 亚洲伊人久久综合中文成人网| 免费国产综合视频在线看| 激情五月综合综合久久69| 伊人婷婷综合缴情亚洲五月| 久久久久久久综合| 国产香蕉久久精品综合网|