新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機bit、sbin、sfr、sfr_16有什么區別

        51單片機bit、sbin、sfr、sfr_16有什么區別

        作者: 時間:2013-01-30 來源:網絡 收藏

        2)符號P1_0 來表示P1.0 引腳。

        在C 語言里,如果直接寫P1.0,C 并不能識別,而且P1.0 也不是一個合法的C

        語言變量名,所以得給它另起一個名字,這里起的名為P1_0,可是P1_0 是不是就是P1.0

        呢?你這么認為,C 可不這么認為,所以必須給它們建立聯系,這里使用了Keil C

        的關鍵字sbit 來定義,sbit 的用法有三種:

        第一種方法:sbit 位變量名=地址值

        第二種方法:sbit 位變量名=SFR 名稱^變量位地址值

        第三種方法:sbit 位變量名=SFR 地址值^變量位地址值

        如定義PSW 中的OV 可以用以下三種方法:

        sbit OV=0xd2 (1)說明:0xd2 是OV 的位地址值

        sbit OV=PSW^2 (2)說明:其中PSW 必須先用sfr 定義好

        sbit OV=0xD0^2 (3)說明:0xD0 就是PSW 的地址值

        因此這里用sfr P1_0=P1^0;就是定義用符號P1_0 來表示P1.0 引腳,如果你愿意也可以

        起P10 一類的名字,只要下面程序中也隨之更改就行了。

        *AT89C51的特殊功能寄存器表請看附錄二

        4.sfr16 16位特殊功能寄存器

        sfr16占用兩個內存單元,值域為0~65535。sfr16和sfr一樣用于操作特殊功能寄存器,所不同的是它用于操作占兩個字節的寄存器,好定時器T0和T1。

        5.sbit可錄址位

        sbit同位是C51中的一種擴充數據類型,利用它可以訪問芯片內部的RAM中的可尋址位或特殊功能寄存器中的可尋址位。如先前我們定義了

        sfr P1 = 0x90; //因P1端口的寄存器是可位尋址的,所以我們可以定義

        sbit P1_1 = P1^1; //P1_1為P1中的P1.1引腳

        //同樣我們可以用P1.1的地址去寫,如sbit P1_1 = 0x91;

        這樣我們在以后的程序語句中就可以用P1_1來對P1.1引腳進行讀寫操作了。通常這些可以直接使用系統提供的預處理文件,里面已定義好各特殊功能寄存器的簡單名字,直接引用可以省去一點時間,我自己是一直用的。當然您也可以自己寫自己的定義文件,用您認為好記的名字。

        data表明數據在片內數據存儲區;

        xdata表明數據在片外數據存儲區;

        code表明數據在程序存儲區;

        extern定義的數據是在另外一個模塊,當引用其它文件中的變量時要加上extern。extern的重要意義在于表明要定義的數據已經在其他地方定義過,此處只是引用,所以不會另外開辟內存。

        51單片機相關文章:51單片機教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 太仓市| 确山县| 略阳县| 湖南省| 双流县| 双桥区| 成武县| 涞水县| 尚义县| 浦北县| 绩溪县| 韩城市| 柘荣县| 昌吉市| 洪泽县| 昌宁县| 赣榆县| 平度市| 措美县| 新巴尔虎左旗| 珲春市| 什邡市| 宣汉县| 加查县| 景泰县| 鄯善县| 科技| 大名县| 山西省| 那坡县| 沙坪坝区| 大渡口区| 鲁甸县| 南城县| 海伦市| 云龙县| 永州市| 邯郸市| 九寨沟县| 睢宁县| 曲松县|