標籤: 暫無標籤

1 sbit -概況

  定義特殊功能寄存器的位變數。
  bit和sbit都是C51擴展的變數類型。
  典型應用是:sbit P0_0=P0^0;//即定義P0_0為P0口的第1位,以便進行位操作。
  bit和int char之類的差不多,只不過char=8位, bit=1位而已。都是變數,編譯器在編譯過程中分配地址。除非你指定,否則這個地址是隨機的。這個地址是整個可定址空間,RAM+FLASH+擴展空間。bit只有0和1兩種值,意義有點像Windows下VC中的BOOL。

2 sbit -鑒析

  sbit是對應可位定址空間的一個位,可位定址區:20H~2FH。一旦用了sbitxxx = REGE^6這樣的定義,這個sbit量就確定地址了。sbit大部分是用在寄存器中的,方便對寄存器的某位進行操作的。

3 sbit -用法

  在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的地址值
  因此這裡用sbit P1_0=P1^0;就是定義用符號P1_0來表示P1.0引腳,如果你願意也可以起P10一類的名字,只要下面程序中也隨之更改就行了。

4 sbit -bit和sbit區別

  bit和sbit都是C51擴展的變數類型。
  sbit 要在最外面定義,就是說必須定義成外部變數.sbit定義的是SFR(特殊功能寄存器)的bit
  sbit更像是類型定義,不像是變數定義。
  sbit: 只是說明性說明
  bit 可以在外部或內部定義。
  bit和int char之類的差不多,只不過char=8位, bit="1位而已"。都是變數,編譯器在編譯過程中分配地址。除非你指定,否則這個地址是隨機的。這個地址是整個可定址空間,RAM+FLASH+擴展空間。bit只有0和1兩種值,意義有點像Windows下VC中的BOOL。
  bit是編譯器在的可定址區分配的一個位變數,是不定的,不是絕對地址目標。
  所有可位定址的位都可由sbit指定,這包括可位定址區和SFR中的位。
  sbit是對應可位定址空間的一個位,可位定址區:20H~2FH。一旦用了sbit xxx = REGE^6這樣的定義,這個sbit量就確定地址了。sbit大部分是用在寄存器中的,方便對寄存器的某位進行操作的。
  sbit位寄存器是可位定址的絕對地址目標,定義后編譯器是不會改變位置的。
上一篇[PNG 格式]    下一篇 [基本建設撥款額]

相關評論

同義詞:暫無同義詞