新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Keil C51中直接使用二進制數的方法

        Keil C51中直接使用二進制數的方法

        作者: 時間:2011-01-27 來源:網絡 收藏
        在Keil C51中數不能直接以二進制形式賦值,雖然在8051的匯編中是可以的。二進制數雖然書寫長,易出錯,但是由于是一位位寫的,所以程序設計者能夠很明確的看到每一位的狀態,看得比較直觀。于是很多人懷念了8051的匯編,很想在C51中使用二進制。沒猜錯的話搜到本篇日志的人很可能就是來找這種解決辦法的,下面兩種辦法都是不錯的選擇。

        方法一:

          建立一個頭文件,將所有的二進制數宏定義列舉出來,用的時候直接使用宏定義,頭文件定義:binary(右鍵>>“目標另存為”>>下載)。

        方法二:

          做一個帶參數宏定義,將輸入的類二進制數變換為對應的16進制數,整個定義和使用實例請見下文,可以直接使用,如果想研究原理又看不懂帶參宏定義的朋友們請參考譚浩強的《C程序設計》預處理命令一章內容(第三版在P204-P211)。

        #define LongToBin(n)
        (
        ((n >> 21) 0x80) |
        ((n >> 18) 0x40) |
        ((n >> 15) 0x20) |
        ((n >> 12) 0x10) |
        ((n >> 9) 0x08) |
        ((n >> 6) 0x04) |
        ((n >> 3) 0x02) |
        ((n ) 0x01)
        )

        #define Bin(n) LongToBin(0x##n##l)

        void main(void)
        {

        unisigned char c;
        c = Bin(10101001); //相當于c = 0xA9
        }

          上面預處理指令中使用了反斜杠,這里解釋一下:每一條預處理語句總是以"#"字符開始,并且不能超過一行,一旦遇到換行符語句就被當做結束,唯一的一種能將預處理語句擴展到多行的辦法就是在換行符之前加一個反斜杠('')。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江门市| 乌兰县| 鞍山市| 汉源县| 库车县| 阿拉尔市| 铅山县| 鄂托克前旗| 崇信县| 卓尼县| 双鸭山市| 临沧市| 纳雍县| 同心县| 吴堡县| 平谷区| 诸暨市| 成武县| 鹤峰县| 石棉县| 嘉禾县| 宾阳县| 漠河县| 宿松县| 乐平市| 缙云县| 大港区| 南城县| 秦皇岛市| 博乐市| 饶平县| 朝阳市| 双牌县| 岫岩| 巴南区| 曲周县| 云霄县| 增城市| 禄丰县| 城市| 象山县|