在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)程序的一些習(xí)慣

            單片機(jī)程序的一些習(xí)慣

            作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
            對于一些狀態(tài)的集合,盡可能使用enum而不是#define 來定義。

            如:

            enum {OFF = 0, ON = 1};

            遠(yuǎn)比
            #define OFF 0

            #define ON 1

            好。

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

            第二,程序中少用

            #if

            #ifdef

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



            好了,下面是我的習(xí)慣

            1、I/O口輸出電平定義一下,以后萬一I/O電平驅(qū)動(dòng)取反,一改就好。

            //I/O Port Stutes

            enum {OFF = 0, ON = 1};
            //Led Stutes
            enum {LED_ON = 0, LED_OFF = 1};
            eg. LED = LED _ON; //低電平驅(qū)動(dòng)LED亮。

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

            如93C46:

            #define CS93C46 P1_0 //片選信號

            #define SK93C46 P1_1 //時(shí)鐘信號

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

            #define DO93C46 P1_3 //數(shù)據(jù)輸出

            如字符型LCD:

            #define LCDPORT P0 //lcd數(shù)據(jù)口

            #define RS P1_7 //數(shù)據(jù)指令選擇。低--ins ; 高--data

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

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



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

            如:
            #define KEYMASK 0x0f

            #define KEYPORT P2


            4、串口用中斷驅(qū)動(dòng),要帶Buf。



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



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



            7、波特律定義

            #define BAUD 4800 //波特率4800

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

            #define T1H_VAL (256 - (UINT8)(FOSC * (1<
            #define T1L_VAL T1H_VAL


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

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

            如點(diǎn)陣型:
            #define ROW 64
            #define CLUM 128

            字符型:

            #define ROW 4
            #define CLUM 20

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

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

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

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

            10、驅(qū)動(dòng)層與應(yīng)用接口層分在不同的文件,移植方便。

            如:鍵盤、LCD、串口等。


            關(guān)鍵詞: 單片機(jī)程序習(xí)

            評論


            技術(shù)專區(qū)

            關(guān)閉