婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

c51編程規范

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

注釋簡明扼要
命名規范易懂

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

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

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 四虎永久免费网站| 性生活免费观看视频| 日日橹狠狠爱欧美超碰| 成人一区二区三| 亚洲xxx在线观看| 国产树林野战在线播放| 97人人模人人爽人人澡| 男女私大尺度视频| 国产精品自拍视频在线| 亚洲一二区在线观看| www成人免费| 亚洲成熟丰满熟妇高潮xxxxx| 国产成人av影视| 狠狠操狠狠干视频| 久久综合久久色| 一本大道熟女人妻中文字幕在线 | 超碰中文字幕在线观看| 免费在线激情视频| 日本黄色三级大片| 欧美午夜aaaaaa免费视频| 久久99国产精品一区| 日日碰狠狠添天天爽超碰97| 国产精品一区二区免费在线观看| 手机看片福利日韩| 亚洲色欲综合一区二区三区| 亚洲色图38p| 色呦呦网站入口| 国产又猛又黄的视频| 91专区在线观看| 欧美一级视频在线播放| 国产视频在线观看网站| 青青草视频国产| 国产女教师bbwbbwbbw| 大陆极品少妇内射aaaaaa| 黄色污污在线观看| 国产高清www| 国产淫片免费看| 欧美私人情侣网站| 手机在线免费观看毛片| 欧美日韩亚洲一二三| www.国产区| 一起操在线视频| 日本美女爱爱视频| 成人免费a级片| www..com日韩| 欧美在线观看视频网站| 亚洲小视频网站| www.午夜av| 阿v天堂2018| 中文久久久久久| 污视频在线观看免费网站| 黄色污污在线观看| 逼特逼视频在线| 中文字幕日韩久久| 波多野结衣综合网| 91小视频在线播放| 波多野结衣av一区二区全免费观看 | 警花观音坐莲激情销魂小说| a级免费在线观看| 激情视频免费网站| 国产色一区二区三区| 五月婷婷之综合激情| 黄色一级片国产| 欧美日韩中文不卡| 欧美人成在线观看| 自拍偷拍一区二区三区四区| 91精品国产毛片武则天| 日韩精品一区二区三区不卡 | 一本色道无码道dvd在线观看| 久久这里只精品| 福利视频一区二区三区四区| 五月激情婷婷在线| 伊人影院综合在线| 福利视频一二区| 国产精品国产亚洲精品看不卡| 黄色a级三级三级三级| 日韩爱爱小视频| 精品亚洲视频在线| 亚洲va综合va国产va中文| 亚洲欧美另类动漫| 免费精品99久久国产综合精品应用| 欧美三级一级片| 亚洲最大综合网| 97超碰人人爽| 青青草国产免费| 男女啪啪网站视频| 三级在线免费观看| 黄在线观看网站| 午夜剧场在线免费观看| 精品免费国产一区二区| 日日碰狠狠丁香久燥| 欧美激情国产精品日韩| 日本天堂免费a| 台湾无码一区二区| 日本一区午夜艳熟免费| 国产成人生活片| 91免费黄视频| 天堂av2020| 各处沟厕大尺度偷拍女厕嘘嘘| 日本中文字幕观看| 九九九在线观看视频| 国产精品入口芒果| 日韩视频 中文字幕| 国产福利片一区二区| 色91精品久久久久久久久| 九九九九免费视频| av动漫在线观看| 无码人妻丰满熟妇区五十路百度| 黄色网页免费在线观看| 国产亚洲欧美在线视频| 99精品人妻少妇一区二区| 777久久久精品一区二区三区| 免费在线观看亚洲视频| 国产精品12p| 日韩一级免费片| 久久黄色片网站| 手机在线视频一区| 免费精品99久久国产综合精品应用| 欧美视频在线第一页| 手机av在线网| 992tv成人免费观看| 波多野结衣 作品| 精品久久一二三| 中文字幕22页| 日本三级免费网站| 成人小视频在线观看免费| 日韩 欧美 自拍| 国产曰肥老太婆无遮挡| 国产成人无码一二三区视频| 69久久久久久| 国产四区在线观看| 亚洲爆乳无码专区| 在线观看av免费观看| 欧美精品久久久久久久自慰| 狠狠热免费视频| 欧美一区二区三区综合| 亚州精品一二三区| 欧美交换配乱吟粗大25p| 成人在线免费观看av| 久久久成人精品一区二区三区| 亚洲精品国产suv一区88| 手机在线看福利| 一本大道东京热无码aⅴ| 红桃av在线播放| av久久久久久| 福利片一区二区三区| 大伊香蕉精品视频在线| 在线免费观看av网| 色婷婷综合久久久久中文字幕 | 福利在线小视频| 一本久道综合色婷婷五月| 日韩在线视频在线| 91日韩精品视频| 超碰在线人人爱| 麻豆av免费在线| 国产欧美日韩小视频| 亚洲一区二区图片| 五月天av在线播放| 密臀av一区二区三区| 男女激情无遮挡| 亚洲啊啊啊啊啊| 日本网站在线看| 九九九九九国产| 日本肉体xxxx裸体xxx免费| 国产成人无码一二三区视频| 日本免费a视频| 欧美中文字幕在线观看视频| 好色先生视频污| 特黄特黄一级片| 日韩欧美中文视频| 欧美视频国产视频| 天天干天天色天天干| 日韩精品无码一区二区三区免费| 国模无码视频一区二区三区| 黄色激情在线视频| 欧美视频在线观看视频| 波多野结衣 作品| www.在线观看av| 精品一区二区成人免费视频| 99热一区二区三区| 国产日韩亚洲欧美在线| 91国产精品视频在线观看| 日本黄色播放器| 精品亚洲一区二区三区四区| av日韩一区二区三区| 国产又大又硬又粗| 玖玖精品在线视频| 免费激情视频在线观看| 一级性生活视频| 福利在线小视频| 特级黄色片视频| 天天成人综合网| av磁力番号网| 大桥未久一区二区| 男人日女人的bb| 日韩中文字幕在线视频观看| 91九色国产ts另类人妖| 久久久久久av无码免费网站下载| 亚洲精品手机在线观看| 亚洲娇小娇小娇小|