在微控制器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,...