久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3902|回復: 0
打印 上一主題 下一主題
收起左側

高效可移植程序的一些習慣(轉)

[復制鏈接]
跳轉到指定樓層
樓主
ID:76190 發(fā)表于 2015-4-5 16:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
對于一些狀態(tài)的集合,盡可能使用enum而不是#define 來定義。

如:

enum {OFF = 0, ON = 1};

遠比
#define OFF 0

#define ON 1

好。

兩種寫法編譯的效果是一樣的,但是寫程序及看程序的人員來說感覺就不一樣了。用enum定義時,可以覺得OFF與ON是一個集合,有相關性(且可減少程序中#define的定義)。但用#define定義時,完全可認為OFF與ON不相干。特別是在程序中#define定義過多時,查找并理解它的意思都是一個痛苦。(如:uc/os,看見它的一大堆#define都頭大,要完全明白那一堆定義都得花不少時間)

第二,程序中少用

#if

#ifdef

等條件編譯。不符合條件的程序段是不被編譯的,都不檢查語法錯誤,當在某些情況下打開了條件開關時,也許一堆錯誤就出現了。而且程序并不利于閱讀,當讀程序時突然得去查找某東東是否#define真是痛苦。



好了,下面是我的習慣

1、I/O口輸出電平定義一下,以后萬一I/O電平驅動取反,一改就好。

//I/O Port Stutes

enum {OFF = 0, ON = 1};
//Led Stutes
enum {LED_ON = 0, LED_OFF = 1};
eg. LED = LED _ON; //低電平驅動LED亮。

2、I/O口與任何的其它IC接口,I/O口都要定義,不能直接使用I/O口。(方便以后用于其它的應用中)

如93C46:

#define CS93C46 P1_0 //片選信號

#define SK93C46 P1_1 //時鐘信號

#define DI93C46 P1_2 //數據輸入,相對93C46而言 (即93C46的數據輸入)

#define DO93C46 P1_3 //數據輸出

如字符型LCD:

#define LCDPORT P0 //lcd數據口

#define RS P1_7 //數據指令選擇。低--ins ; 高--data

#define RW P1_6 //讀寫選擇。 低--w ; 高--r

#define EN P1_5 //使能。 高到低--使能。



3、鍵盤口要定義輸入口及屏蔽字

如:
#define KEYMASK 0x0f

#define KEYPORT P2


4、串口用中斷驅動,要帶Buf。



5、取按鍵的程序及串口的程序編2個,一個為非阻塞式,一個為阻塞式(不按鍵或不收到數據不返回)。



6、晶振頻率要定義
#define FOSC 11059200ul //頻率



7、波特律定義

#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函數,編譯器會預先算,不占用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、串口等。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区二区三区四区 | 亚洲精品成人免费 | 中文字幕 国产 | 午夜视频在线免费观看 | 欧美一区二区三区四区五区无卡码 | 一区精品国产欧美在线 | www.色综合| www.久久| 欧美h视频 | 日韩三片 | 久久亚洲一区二区三区四区 | 99热首页 | 久久久久久国产精品 | 中文字幕在线观看www | 欧美国产视频 | 天天激情综合 | 亚州综合一区 | 浴室洗澡偷拍一区二区 | 爱综合| 一区二区成人 | 久久亚洲一区二区 | 久久夜色精品国产 | 精品国产久 | 欧美午夜精品 | 美日韩精品 | 九色综合网 | 狠狠操狠狠干 | 高清18麻豆| 亚洲一区二区免费看 | 国产国语精品 | 日本不卡在线视频 | 午夜激情网 | 国产精品 欧美精品 | 亚洲高清在线视频 | www成年人视频 | 久久久久久久久久久丰满 | 亚洲高清在线 | 天堂av免费观看 | 99亚洲视频| 国产欧美在线一区二区 | 99视频在线播放 |