51單片機(jī)---Keil C語(yǔ)言
sbit、sfr、sfr16屬于C51的擴(kuò)展數(shù)據(jù)類(lèi)型;
1、sbit:定義可位尋址類(lèi)型的變量,用于位尋址,從位尋址字節(jié)中定義位變量;sbit定義的變量屬于特殊功能寄存器類(lèi)型的位變量,存放在特殊功能寄存器區(qū);
sbit的三種形式:
sbit 位變量名 = 位地址;
sbit 位變量名 = 特殊功能寄存器名 ^ 位位置;
sbit 位變量名 = 字節(jié)地址 ^ 位位置;
如:
sbit P1_0 = P1 ^ 0;
sbit P1_1 = P1 ^ 1;
sbit P1_2 = P2 ^ 2;
2、sfr/sfr16:分別定義8位和16位的特殊功能寄存器類(lèi)型的變量,這種類(lèi)型的變量存放的是硬件的物理地址碼;
sfr/sfr16的形式:
sfr 特殊功能寄存器名 = 特殊功能寄存器地址常數(shù)(地址常數(shù));
sfr16 特殊功能寄存器名 = 特殊功能寄存器地址常數(shù)(地址常數(shù));
如:
sfr P1 = 0x90; //定義P0口的物理地址碼;
sfr P2 = 0xA0; //定義P1口的物理地址碼;
sfr16 T2 = 0xCC; //定義T2的物理地址碼;
注意:sbit/sfr/sfr16定義的變量都存放在地址[80H,FFH]這16字節(jié)的地址范圍內(nèi);
二、新增加的關(guān)鍵字
interrupt:定義一個(gè)中斷服務(wù)函數(shù);
reentrant:定義一個(gè)可再重入函數(shù);
using:設(shè)定中斷服務(wù)函數(shù)所使用的工作寄存器組;
三、存儲(chǔ)類(lèi)型
單片機(jī)的存儲(chǔ)空間在物理上分為4個(gè)部分:
A、片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū);
B、片外數(shù)據(jù)存儲(chǔ)區(qū);
C、片內(nèi)程序存儲(chǔ)區(qū);
D、片外程序存儲(chǔ)區(qū);
所以,存儲(chǔ)類(lèi)型就分為以下6種:
1、code:程序代碼存儲(chǔ)區(qū)ROM,共64K,由MOVC @DPTR訪問(wèn);
2、data:可直接尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),共128字節(jié),訪問(wèn)速度比較快;
3、bdata:可位尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),共16字節(jié)(128位),允許位與字節(jié)混合訪問(wèn);sbit/sfr/sfr16;
4、idata:可間接尋址的片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),共256字節(jié),允許訪問(wèn)片內(nèi)全部的RAM空間;
5、pdata:可分頁(yè)尋址的片外數(shù)據(jù)存儲(chǔ)區(qū),共256字節(jié),由MOVX @Ri訪問(wèn);
6、xdata:可尋址的片外數(shù)據(jù)存儲(chǔ)區(qū),共64KB,由MOVX @DPTR訪問(wèn);
使用code來(lái)定義變量的存儲(chǔ)類(lèi)型時(shí),編譯器會(huì)將其定義存放在程序代碼存儲(chǔ)區(qū)ROM中,這樣的話,這種類(lèi)型的變量的值就不能再被修改了;
評(píng)論