微控制器關鍵字sfr和sbit的理解

2021-10-10 14:59:53 字數 992 閱讀 9326

在微控制器c語言程式設計中,擴充了兩個關鍵字sfr和sbit。

sfr(special function register特殊功能暫存器的縮寫),sbit(特殊功能暫存器位),與定義一般的int、char型變數不同,這兩個字定義的並不是變數,而作為特殊功能暫存器的引用,或許可以叫做別名。

微控制器標頭檔案中定義了21個特殊功能暫存器,並且都是8位暫存器,而部分暫存器的每個位又用sbit進行了定義:

sfr p0 = 0x80;

sfr p1 = 0x90;

sfr p2 = 0xa0;

sfr p3 = 0xb0;

sfr psw = 0xd0;

sfr acc = 0xe0;

sfr b = 0xf0;

sfr sp = 0x81;

sfr dpl = 0x82;

sfr dph = 0x83;

sfr pcon = 0x87;

sfr tcon = 0x88;

sfr tmod = 0x89;

sfr tl0 = 0x8a;

sfr tl1 = 0x8b;

sfr th0 = 0x8c;

sfr th1 = 0x8d;

sfr ie = 0xa8;

sfr ip = 0xb8;

sfr scon = 0x98;

sfr sbuf = 0x99;

sfr是定義乙個8位的暫存器,sbit是定義位暫存器,個人認為可以把這種定義理解為定義乙個常量指標始終指向0x80這個特殊暫存器,即如下定義方法;

const unsigned char pp = 0x80;

當然,這種定義方法不完全符合上面的說法,而且pp被限制了寫操作的,即pp所指向的位址被認定為常量,而pp任然是個變數,事實上除了使用sfr和sbit進行定義外,其他定義方式被認為是不安全的而被限制了寫入操作。最後發現定義指標的時候只有定義陣列時:

char a;

位址指標a才是乙個常量指標,而其他指標都是變數;

微控制器關鍵字sfr和sbit的理解

在微控制器c語言程式設計中,擴充了兩個關鍵字sfr和sbit。sfr special function register特殊功能暫存器的縮寫 sbit 特殊功能暫存器位 與定義一般的int char型變數不同,這兩個字定義的並不是變數,而作為特殊功能暫存器的引用,或許可以叫做別名。微控制器標頭檔案中...

微控制器sfr和sbit關鍵字,詳解

sfr用於將乙個微控制器的特殊功能暫存器 special function register 賦值給乙個變數,這樣在後面的程式中就可以中這個變數指引 refer to 該暫存器。sbit與sfr用法類似,只是sbit是位操作,用於將某個sfr中具體位賦值給乙個變數,這樣後面程式就可用通過該變數為該位...

sfr與sbit的理解,及微控制器中斷

sfr special function register 定義的變數是將微控制器的特殊功能暫存器賦值給乙個變數,在程式設計中就能引用這個暫存器。sbit 是對暫存器進行位操作,可對暫存器中某位置1或者清0.stc圖中這麼多特殊功能暫存器之後可能會產生一些困擾,我們用sfr p0 0 80表示p0,...