日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
高效可移植程序的一些習慣
高效可移植程序的一些習慣
 更新時間:2008-8-17 19:42:30  點擊數(shù):9
【字體: 字體顏色

#define BAUD   4800         //波特率4800

#define SMODX  0            //是否倍頻        0-NO or 1-YES

#define T1H_VAL (256 - (UINT8)(FOSC * (1<<SMODX) * 1.0 / 384 / BAUD))

#define T1L_VAL  T1H_VAL


8、延時程序賦值時寫成FOSC函數(shù),編譯器會預先算,不占用MCU資源
以后移植方便

9、液晶程序一定要定義長寬

如點陣型:
#define ROW  64
#define CLUM 128   /*128*64*/

字符型:

#define ROW  4
#define CLUM 20   /*128*64*/

#define ROW1_ADDR  (0x80 + 0)                      //第一行地址

#define ROW2_ADDR  (ROW1_ADDR + 0x40)         //第二行地址

#define ROW3_ADDR  (ROW1_ADDR + CLUM)   //第三行地址

#define ROW4_ADDR  (ROW2_ADDR + CLUM)   //第四行地址
然后所有的和液晶地址有關的計算全部引用這2個量。
換用任何屏直接一改,高層不變

10、驅動層與應用接口層分在不同的文件,移植方便。

如:鍵盤、LCD、串口等。



網友:gdtyy跟貼


你的習慣很好,但有些觀點似乎過時了。 

    使用宏的好處是:1、只影響編譯時間,不影響運行時間;2、條件編譯的控制粒度可以達到單條語句,能夠精確有效地裁減代碼。
    你所說的,“看見uc/os的一大堆#define都頭大,要完全明白那一堆定義都得花不少時間”和“條件編譯都不檢查語法錯誤,當讀程序時突然得去查找某東東是否#define真是痛苦”,自從有了自動化的配置工具后,已經煙消云散,成了歷史。
    配置工具采用圖形化界面,用戶看圖鉤選配置項和設置配置值。工具自動幫助檢查沖突和生成配置頭文件。比如:
    用戶要定義uc/os任務數(shù)“#define OS_MAX_TASKS 60”,圖形工具就會在OS_MAX_TASKS選項下彈出一個文本框供用戶輸入數(shù)值。當用戶輸入165時,工具會立即鳴響提示此選項最大值為64,最小為1,缺省為3。如果用戶鼠標雙擊此選項,會馬上看到在線幫助,了解是誰在什么時間定義了這個選項,那個人的電話和EMAIL,這個值的含義,若干范例,在源碼中的位置(超鏈接),數(shù)據(jù)庫中存儲的碰到同樣問題的人的關于這個值的留言及他們的聯(lián)系方式。一旦用戶輸入合法值,工具最后會自動生成頭文件,用戶看到的不再是一堆define定義,而是漂亮的彩色圖形。
    用戶在裁減代碼時往往會非常頭痛,因為,各個裁減項之間存在網狀關系。比如:裁減掉UDP模塊,而保留TFTP部分,就會造成沖突。模塊化的思想是抽取任何一個模塊都不影響整個系統(tǒng)正常工作,但事實上,模塊之間存在網狀關系,那種只有一個入口和一個出口的模塊在現(xiàn)實中很少見,如果強行簡單化相互關系,就會非常別扭,不自然。在承認模塊關系復雜的前提下,配置工具可以有效地輔助裁減系統(tǒng)而不出錯。例如:有A、B、C、D、E五個模塊,它們之間的關系是:有A就不能有B(A、B模塊不能共存);C依賴于A、D,缺一不可;D獨立存在;E依賴于A或B。在配置這樣的系統(tǒng)前,用戶先用腳本語言CDL描寫出模塊之間的依賴互斥關系,然后配置工具使用推理機窮舉遍歷所有關系的排列組合,尋找沖突項,因為計算機速度很快,用戶剛一鉤選某個模塊,工具就能根據(jù)腳本立即判斷配置是否存在沖突。這樣就可以避免低級錯誤。用戶的主要職責是編寫配置腳本,檢查的工作由推理機完成。一旦發(fā)生沖突,配置工具可以列出所有不沖突的選項配置集合供用戶選擇,用戶不必費腦子來回嘗試不沖突的選項組合。
    如果每次都從頭配置選項,重復的工作量就比較大。幸運地是,配置工具提供模版,使用戶可以在一個比較高的起點開始工作。比如:事先準備好若干模版,用戶選擇一個,然后通過增加和刪除選項進行配置,不必從頭開始,所有未配選項均有缺省值,不強求用戶顯式配置每個選項。
    有了配置工具機制的保障,面對上千個配置項,我們也不會犯低級錯誤。總之,有了配置工具,裁減/配置系統(tǒng)就像點菜一樣地愜意!



網友:汽車電子跟貼:

可移植性好的程序少不了條件編譯的影子...... 

   樓主:我有個疑問,兩個大師提出的習慣. 竟然少用條件編譯???
   提出這樣的習慣,還叫大師,笑話!提出這個問題的人,他的編程經歷有限,應用面也有限,極少在不同的系統(tǒng)間移植程序

   如果想程序的可移植性好,條件編譯必不可少,而且要大量的用......

   有兩個良好的習慣
1:常量 -- 盡量不要用數(shù)字,而用符號代替
   我很喜歡AVR的編譯系統(tǒng),每個寄存器的每一位都用符號定義的,如
/* ADCSR / ADCSRA */
#define ADEN    7
#define ADSC    6
#define ADFR    5
#define ADIF    4
#define ADIE    3
#define ADPS2    2
#define ADPS1    1
#define ADPS0    0
寫允許AD轉換的程序是用  ADCSR  = (1<<ADEN);  而不是用 ADCSR  = 0x80
當然,完全可以把預定義加個左移,就直接用   ADCSR  = ADEN;

2、對于注釋,盡可能要“語句本身就是注釋”
  比如,在LPC2000系列ARM中,要對一個驅動LED的引腳作配置,先用預定義
#define        LED_PIN     25       // 第25腳驅動LED
#define        LED_ON      (IOSET0 = (1<<LED_PIN))
#define        LED_OFF     (IOCLR0 = (1<<LED_PIN))
#define        SET_LED_PIN_OUTPUT     (IODIR0  = (1<<LED_PIN))
程序中直接用 SET_LED_PIN_OUTPUT 和 LED_ON 和 LED_OFF

而不是直接用 IOSET0 = 0x00020000; 或 IOSET0 = (1<<25); 之類的語句
  • 上一篇: DS1302讀寫一體化C51源程序 (由hotpower撰寫)
  • 下一篇: TI TLC1543 10位AD驅動程序
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1