




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機程序設計編程標準本標準適用于松翰科技8-bitMCU部門匯編程序編寫準那么,同樣適用于代理商及重要客戶工程師編程標準參考。本標準的目的為統(tǒng)一編程風格,保證程序編寫質量,提高性。大局部的標準嚴格,品質要求高的軟件公司對員工編寫代碼的風格都有硬性規(guī)定,如縮排的使用,TAB的長度,函數(shù)變量的命名方式。這些規(guī)定的明顯好處是可以統(tǒng)一標準不同程序員所編制的代碼,提升程序代碼的可讀性與可維護性,同時統(tǒng)一格式的編設計總那么二、排版風格三、程序可讀性及可維護性五、變量命名規(guī)那么六、常量命名規(guī)那么七、標號命名規(guī)那么八、文件命名規(guī)那么及文件分割九、標準程序模塊程序的優(yōu)劣可以從兩個方面進行評估,定量指標和定性指標。2〕程序占用資源多少。2〕可測試性,即是否方便驗證程序功能的正確性;3〕可維護性,即是否方便程序的修改和升級;護和移植,推薦使用層次化的軟件設計方法??砂颜麄€軟件分為三層:應用層、界面層和底層驅動層°各層之間的關系如以下圖所TJX。器和電機控制等。底層的各個模塊間要保持各自的獨立性,不產生直接的數(shù)據(jù)層進行數(shù)據(jù)交互。2〕界面層主要提供數(shù)據(jù)交互,為應用層和庇層驅動之間以及庇層驅動層各模塊之交互。3〕應用層主要完成具體功能的實現(xiàn),它要通過界面層控制底層驅動層各模塊來完S來實4〕—個好的架構必須將底層硬件包裝起來,為應用程序提供一組豐富的函數(shù)操作需要知道地址操作,只需要讀取中斷產生的旗標動作。5)在即時性軟件系統(tǒng)里面,對到達高效率的實時性與反響力,所以程序使用大量能是系統(tǒng)內部自行產生的(Timer,alarm,flag),與事件觸發(fā)方式相對應的是定時查詢方式設計根本原那么1)盡量減少各個子程序功能模塊間的耦合度(耦合度是指一個程序的執(zhí)行對啟一個程序的影響力),保證各自的獨立性。一般情況下,建議子程序模塊功能的劃分要盡可能細化,功能盡量單一,減少子程序模塊間的數(shù)據(jù)交互。2)在滿足功能需求的情況下,可適當犧牲代碼的執(zhí)行速度,以保證程序的透明度。Keybuffer:—般用于保存數(shù)字按褪信息。例如:在機的設計中,需要記錄按雒內容根據(jù)不同的工作模式進行不同的處理及動作。這些類似的觀念可以應用在許多周邊中:4)每個子程序模塊只能有唯一一個程序入□地址在程序的首部,只能有唯——個程序出□地址在程序的尾部。ryry5〕上電復位時要對所有的RAM空間進行初始化〔建議用戶存放器清零,系統(tǒng)存放器進行必要設定〕,不要使用未經初始化的變量。RAM未經過完整的初始化,容易導致6〕系統(tǒng)中如果需要等待一些未知的應答信號,如通信或等待輸入信號時,必須進行超時或異常處理,以防止程序進入“死等〞狀態(tài)。例如在紅外接收中,由于信號的突然消失或干擾從而無法得到一幀完整或正確的信接收程序的入□條件并退出接收程序,而不是一直等待信號的來臨。不然無法進行下次接收甚至會影響到其它程序的執(zhí)行。7〕通過對系統(tǒng)數(shù)據(jù)結構的劃分與組織的改良,以及對程序算法的優(yōu)化來提高空間效率。這種方式是解決軟件空間效率的根本方法。8〕保證循環(huán)體內的工作量最小化。應仔細考慮循環(huán)體內的語句是否可以放在循環(huán)體之外,使循環(huán)體內工作量最小,從而提高程序的執(zhí)行效率。處理。但一些實時性要求較蒿的程序例外。此外,進入中斷時應該保存涉及到的變量和序適時去除。正確的處理方式為:整個系統(tǒng)程序中盡量保證只有一處清看門狗位置,而且應處在主循環(huán)的主干位置。切記不可在定時中斷中清狗,因為微控制器有時只是在主循環(huán)中死掉?!菜蠥C電源的應用程序都必須強迫參加看門狗選項尤其是條件式的看門狗有利于系統(tǒng)發(fā)生異常后的重啟動〕二排版風格2、程序中的標號要從第一列開始書寫。以開頭的預編譯命令也要從第一列開始書寫,其他預編譯命令采用縮進風格編寫。LIST.DATA列開始書寫main:;從第一列開始.DATAEQU6.〕程序中兩個操作數(shù)之間用一個“,〞作為分隔符,“#〞號與立即數(shù)之間不INCLUDEkey.asm9〕程序語句后面假設有注釋,所有的注釋要遵守上下對齊的原那么。fh三、程序可讀性與可維護性1?程序中的語句、標號、變量使用小寫英文字母,常量與預編譯命令使用大寫英文字母,以便和一般的語句進行區(qū)分。.DATAR不建議使用:3?—般情況下?變量和常量要分開定義.不要混在一起。變量在“.DATA〞段中定義,采用NUMBER.DATAuf1定義或意義不明確的常量G在常量中做定義不要直接使用意義不明確的數(shù)字NUMBEREQU3;循環(huán)次數(shù)5?整個程序的結尾要以“ENDP〞語句結束。6?當一段代碼在程序中有多個地方使用時,建議采用子程序調用或宏命令的方式來替代。如此,對該代碼段的修改就可在一處完成,增強代碼的可維護性。7.程序中關系較為密切的子程序代碼盡可能相鄰。&防止程序中的垃圾代碼,預留代碼應以注釋的方式出現(xiàn)。程序中的垃圾代碼不僅占用額響到程序的功能與性能,很可能給程序的測試、維護等造成不NUMBEREQU101〕源文件說明局部位于每個源文件的最前面,主要描述:文件名、作者、生成日期、聯(lián)絡方式、功能描述、版本號、軟硬件平臺、版權說明、修改記錄等的簡要說明,d2〕子程序說明局部位于每個子程序的最前面,主要描述:子程序名稱、功能.設計原子程序清單的臨時變量;子程序調用所需要根本參數(shù)的說明結果的說明History;修改記錄5^C/3注釋要刪除。4?要防止在注釋中使用縮寫,特別是非常用縮寫。5?程序在必要的地方必須有注釋.注釋要準確、易懂、簡潔。注釋要有意義.如果有需要,還要詳細描述相關含義。例如:應該如下注釋:amovwk00,a6?注釋應與其描述的代碼相近,對代碼的注釋應放在其上方或右方〔對單的注釋〕的相鄰位置.不可放在下方,如放于上方那么需與其上面的代碼用空行隔開。例如:7?注釋格式盡量統(tǒng)一,對多行注釋建議使用“廬……*/〞,對單行的注釋建議使用8?注釋應考慮程序易讀及外觀排版因素,語言盡量統(tǒng)一。對不能進行準確英文表達的建9?對有含義的變量、常量,如果其命名不是充分自注釋的,在聲明時都必須加以注釋,五、變量命名規(guī)那么1?變量的名稱要采用有意義的英文單詞小寫縮寫??梢圆捎靡韵聨追N方式進行縮寫命6〕部門已經完成函式的變量名稱,如果沒有特別原因,開展人員延續(xù)使用以增加可2.在定義局部要參加注釋來說明變量的含義。5?序會用到起碼三種變量意中斷使用的變量必定要小心的跟主程序區(qū)隔開,不然影響系統(tǒng)穩(wěn)定性相當大〕。.DATA6?位定義。程序多處會經常對存放器的某一位進行操作,可以在變量定義時對需要用到7?臨時工作存放器的定義。程序中經常需要用到一些臨時存儲數(shù)據(jù)的存放器,我們稱之為臨時工作存放器,這些臨時工作存放器的命名方法為“wk〞加上一個二位數(shù)字組成,這個數(shù)字可以從“00〞開始隨著需要定義的臨時工作存放器的數(shù)量的增加而增加。需要特別說明的是,臨時工作存放器的使用可以大量節(jié)省RAM空間,但是要注意相應的生命周期,必須在子程序退出之前,將空間釋放以便其它子程序使用。&在中斷處理程序中用到的存放器,為了和一般的臨時工作存放器作以區(qū)分,可以在存放器前面加英文字母“i〞來命名。在使用時需要加以注意,不要和主程序中的變量復用。.DATA1wkOl11iwkOO1要用到的臨時工作存放器iwkOl1要用到的臨時工作存放器MovMov六、常量命名規(guī)那么意義的英文單詞大寫縮寫。3?在定義局部要參加注釋來說明常量含義。5?系統(tǒng)存放器中常用到的某些位可以再額外進行定義,但要有意義:???七.標號命名規(guī)那么有意義的英文單詞小寫縮寫。2?子程序標號定義。在同一個子程序中,所有的標號應該有規(guī)律可尋。建議第一個標號為子程序名,下面所用到的標號用子程序名添加數(shù)字表示,從而便于今后程序的添加和修改。數(shù)字盡量使用兩位數(shù),在子程序的退出位置,數(shù)字一般為"90〞。在一段按褪掃描程序中,如下的標號是不可取的。label不容易看出子程序的結構關西,所以建議在子程序里面別在花精神命名,都用號碼表示〕〔詳細的動作都用注解來說明〕應該改為:?*木*木木*木木*木木*木木*木木*木?Ret3?為了使程序的結構更加清晰,子程序的命名要盡量能顯示出相互間的調用關系。由main主循環(huán)中直接調用的程序,要以“mn_"作為標號的開頭,下面僅列出一些常用的子程序名稱,其它類似情況可同樣處理。程序之間的界面子程序;根本輸入/輸出控制4?程序的幾個常用入□地址命名如下:jmp08;進入主程序前的一些準備工作(預處理))\、文件名的命名規(guī)那么及文件分割1?在一個工程中要包括兩種文件:源文件和頭文件。源文件是程序體,擴展名為“.asm〞,頭文件包括了變量、常量、宏命令的定義,擴展名為〞.inc〞。2?頭文件的命名件來分別定義常量、變量、宏命令,其命名方法如下:常量定義個機的完整程序,頭文件可如下定義:3?源文件分為主文件、子文件。主文件包括了工程的主程序,它描述了芯片信息、CODEOPTION信息及工程包含的其它子文件模塊。子文件是由各個子程序模塊組成,功能相近的子程序要放在一個文件中,文件名可以用“工程名+模塊功能的縮寫+擴展名〞表示。下面列舉一些常用的文件名:常用的子文件定義:中斷效勞程序模塊:九、標準程序模塊常用功能模塊盡量采用附件提供的標準程序,如果無法使用標準的程序模塊,那么所編寫的程序一定要符合標準要求。所提供的標準程序如下,詳細的源代碼在2.mn.jnulkey5.mn._i2cmn._sio7.mn._lwire9.wr_fifo10.rd_fifomatth1)當程序上電復位時,一個完整的用戶存放器初始化或清零動作是非常重要的,否那么容易造成程序執(zhí)行的不確定性。Clrjmplrz2)系統(tǒng)存放器必須進行初始化,比方說I/O□方向和輸出電平等。需要特別說明IO時不會有脈沖的存在。而在I/O□控制頻繁變化(如通信)時更要引起注意。;如果和pl」原來為輸入高電平,當直接切換為輸出方式時會有高電平脈沖的輸出,而l3〕程序是否重頭運行以上方法可以有效協(xié)助量產生產問題理減低此問題的產生,但是此方法還是無法完全防止此冋題同時還增加硬件本錢,這里提3〕按鍵處理很多程序員都合將系統(tǒng)的程序設計與key程序結合沒有分開結構,這造e層的技巧偵測多按鍵處理更是需要利用new/oldbufferXOR來處理合理的按鍵處理一般包①keyin--按褪掃描,其主要負責將外部按鍵信息讀入到內部buffei?中。常用的按雒一般I/O腳位等,局部場合還要考慮睡眠和按鍵的喚醒功能。下面進行分別說明:1)直接按鍵最簡單的按鍵方式,通常作法利用MCU里面的pull-up電阻上拉,外面按鍵落地,2)M*N矩陣式掃描按鍵單按鍵掃描:一個時間只允許一個按鍵動作同時也只讀取一個按雒。,會有短路現(xiàn)象、傳統(tǒng)作法是參加二極管diode來保護,現(xiàn)在單片機的作法那么是3〕三角形按鍵效的增加掃描按雒數(shù)目,見圖面說明?keychk--按褪彈跳處理,其主要負責濾除按雒輸入□灌入的雜訊或按雒彈跳雜波。elayloop說是非常穩(wěn)定的。lsec.觀察在一秒內的按鍵動作是否都不成立,只有按雒持續(xù)達一秒以上才有動作產生,確認后再將彈跳時間改回。?keycvt--按鍵輸出轉換,其主要負責將確認的按褪信息進行轉換和存儲。立的物件程序,他的運行跟其他程序都沒有相關,唯一對外的界面interface就是fifoo而3?計時系統(tǒng)計時系統(tǒng)一般包括定時器初始化和定時設置及處理兩局部。(1)定時器控制存放器的設定(2)相關用戶存放器的設定(3)定時時間的初始化2)定時設置及處理:由于系統(tǒng)里面會經常在不同的時間點執(zhí)行不同的動作,所以定時的設置及處理變的尤為重要。例如需要以下時間的定時:統(tǒng)時間設計中,時間不準確的問題經常發(fā)生,一般來源于時基的計算與處理??梢栽诙〞r中斷處理程序中輸出一個方波來檢查中斷發(fā)生的時間。定時設置及處理有兩種方法可作參考:(1)計算法:利用MCU本身的定時中斷作出10ms的時基,再利用計算的方法作出(2)累加法:此方法適用于對時間沒有特別要求的場合。下面以四位位元依次由上面例子的規(guī)律來看,一個時間只會有一個時間任務產生,從而不會有太多的肘間單4?中斷和主程序的處理i.請參照不同母體的建議作法i.Interrupt中產生的動作可以在中斷中直接處理(又急又準的需求)約mS等級的ii.不需要在中斷處理,設立旗標flag等待在主程序中檢查處理(mnintgnd)約iii.需要了解interrupt暫用系統(tǒng)多少時間,可以在進入中斷時候做一個outputH離開中段時候作個outputL來觀察,當然這方面可以利用假指令(IfDebug=1)來設置,當系統(tǒng)完成后將此outputH/L動作關閉,進入中斷所占用的時間越短越好,原那么是只要能透過主程序循環(huán)的toggle來觀察主循環(huán)的繞圈時間)。iEEPROMwritetime需要一些時間,所有有兩種作法,ii.透過bufferread/write間)很容易將內部資料去除,所以這方面要注意,當然開機那瞬間MCU對于EEP的output設定也是很重要的很容易在開機瞬間誤寫錯誤信息給EEPOii?響鈴音來電轉接音保存音。LCDDisplayLCM法可有效改善效率與顯示的穩(wěn)定性。iii?相同如果非LCM的操作有些人認為可以直接更改LCDRAM數(shù)值直接更新顯示,這也存在相當大的風險,最好的方式還式透過另外一組Buffer來做緩沖iii.Datalength資料長度來收集資料4)—般來說同步或異步通信程序都是TX容易/RX譯碼困難ii?接收RX局部就有點困難需要有較多的技巧考量尤其異步通信更是麻煩。5)RF通信里面還要考慮拍碼調變的方式某些硬件電路只能利用曼徹斯特編碼法來拍碼9.MainLoop的處理2)看門狗/條件式看門狗能夠放在主循環(huán)內,可以確保主循環(huán)有效的運
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶藝術工程職業(yè)學院《科技信息檢索》2023-2024學年第一學期期末試卷
- 自然辯證法概論(視頻課)知到課后答案智慧樹章節(jié)測試答案2025年春安徽農業(yè)大學
- 山西林業(yè)職業(yè)技術學院《材料分析測試技術》2023-2024學年第二學期期末試卷
- 達州中醫(yī)藥職業(yè)學院《體育場地與設施》2023-2024學年第一學期期末試卷
- 河北石油職業(yè)技術學院《生物信息學實踐》2023-2024學年第二學期期末試卷
- 長春汽車工業(yè)高等??茖W校《第三方物流管理》2023-2024學年第一學期期末試卷
- 晉中職業(yè)技術學院《學科前沿講座》2023-2024學年第一學期期末試卷
- 2025屆海南省魯迅中學高三下學期一??荚囉⒄Z試題含解析
- 江蘇室內綠化施工方案
- 古人重視品德的名言
- (二調)武漢市2025屆高中畢業(yè)生二月調研考試 地理試卷
- “艾梅乙”感染者消除醫(yī)療歧視制度-
- 小學語文常見的說明方法(四年級下冊第二單元)
- 二十四山水口吉兇斷
- (完整word版)格拉布斯(Grubbs)臨界值表
- 汽車離合器的檢測與維修畢業(yè)論文
- 國家自然科學基金項目預算說明書
- 機械設備使用申請表
- 資料整理歸檔目錄表(公司歸檔目錄)
- 信訪舉報(投訴)登記表
- 中國急性腦梗死后出血轉化診治共識2019(完整版)
評論
0/150
提交評論