在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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è)計應(yīng)用 > 單片機C語言編程心得

            單片機C語言編程心得

            作者: 時間:2013-05-13 來源:網(wǎng)絡(luò) 收藏

            static unsigned char sts;//按鍵狀態(tài)變量

            static unsigned char Nowkeycode;//此時的鍵碼

            static unsigned char Prekeycode;//上一次的鍵碼

            static unsigned char Keydowntime;//矩形鍵盤按下去抖時間變量

            static unsigned char Keyuptime;//矩形鍵盤釋放去抖時間變量

            static unsigned char Onoffdowntime;//關(guān)機鍵按下去抖時間變量

            static unsigned char Onoffuptime;//關(guān)機鍵釋放去抖時間變量

            static unsigned char onoff_10ms; //判斷關(guān)機鍵中斷次數(shù)變量,累計150次大約為3S,因為前后進了兩個10ms中斷

            2、全局變量,編譯時分配為靜態(tài)存儲區(qū),可以被本文件中的各個函數(shù)引用。如果是多個文件的話,如果在一個文件中引用另外文件中的變量,在此文件中要用extern說明。不過如果一個全局變量定義為static的話,就只能在此一個文件中使用。

            四、特殊關(guān)鍵字const volatile的使用

            1、const

            const用于聲明一個只讀的變量

            const unsigned char a=1;//定義a=1,編譯器不允許修改a的值

            作用:保護不希望被修改的參數(shù)

            const unsigned char Key_code[KEYNUM]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,

            0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,

            0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,

            0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,

            0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,

            0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,

            0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,

            0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,

            0x41

            };//鍵碼

            const unsigned char Line_out[LINENUM]={0xFE,0xFD,0xFB,0xf7,0xEF,0xDF,0xBF,0x7F};//行輸出編碼

            const unsigned char Row_in[ROWNUM]={0xFE,0xFD,0xFB,0xf7,0xEF,0xDF,0xBF,0x7F};//列輸入編碼

            2、volatile

            一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設(shè)這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。

            static int i=0;

            int main(void)

            {

            ...

            while (1)

            {

            if (i)

            dosomething();

            }

            }

            /* Interrupt service routine. */

            void ISR_2(void)

            {

            i=1;

            }

            程序的本意是希望ISR_2中斷產(chǎn)生時,在main當中調(diào)用dosomething函數(shù),但是,由于編譯器判斷在main函數(shù)里面沒有修改過i,因此可能只執(zhí)行一次對從i到某寄存器的讀操作,然后每次if判斷都只使用這個寄存器里面的“i副本”,導致dosomething永遠也不會被調(diào)用。如果將將變量加上volatile修飾,則編譯器保證對此變量的讀寫操作都不會被優(yōu)化(肯定執(zhí)行)。

            一般說來,volatile用在如下的幾個地方:

            1、中斷服務(wù)程序中修改的供其它程序檢測的變量需要加volatile;

            2、多任務(wù)環(huán)境下各任務(wù)間共享的標志應(yīng)該加volatile;

            3、存儲器映射的硬件寄存器通常也要加volatile說明,因為每次對它的讀寫都可能由不同意義;

            c語言相關(guān)文章:c語言教程



            上一頁 1 2 下一頁

            關(guān)鍵詞: 單片機 C語言 編程心得

            評論


            相關(guān)推薦

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

            關(guān)閉