Ⅰ 單片機變數定義類型
C語言中,變數一般有兩種屬性,分別是:存儲類別、數據類型。
例如定義一個變數:static unsigned char var = 0; 上述語句中,static(靜態的)為變數的存儲類別,unsigned char(無符號字元型)為變數的數據類型,var為變數名,初始化值為0。
下面給你說明幾點。
存儲類別:即變數在代碼運行期間的存儲方式。c語言提供了4種,分別是:auto(自動的)、static(靜態的)、extern(外部的)、register(寄存器的)。
默認情況下,如果不加存儲類別,則該變數是auto類的,該關鍵字可以省略,其它三個不能省。static的用法是,定義一個局部變數,該變數只進行一次初始化,在程序運行期間一直佔用著內存,每次調用完畢都保持本次調用完後得到的值(而auto調用完一次即釋放內存,下次調用用從新進行初始化)。extern:一個變數被定義成全局變數,加上該關鍵字,意思是提醒編譯器,該變數是在別的C文件中(即你想再一個C文件中調用另外一個C文件的變數,需用該關鍵字進行引入)。register:定義一個變數為該存儲類型,建議編譯器將該變數存放在CUP內部寄存器中,以便該變數頻繁調用而提高代碼運行速度。注意,它是建議型的,一般用在循環次數多的地方,因為變數一般存放在內存中,每次CUP訪問它都得跑到內存去提取,次數多了,影響運行速度。放在內部寄存器就快多了(當然放不放我們不知道,只是建議編譯器這么做),這種變數也是用完就釋放。
數據類型:C語言提供了三種基本數據類型:char型 int型 float型。
默認情況下,char/int/float是指有符號的,即前面都省略了signed關鍵字,如果需要定義成無符號型的,需在前面加上不可省略的unsigned關鍵字。char佔一個位元組,int佔2個位元組(在有的環境下是4個位元組),float佔4個。表示的數據范圍也比較明確,char一個位元組8位,共256種狀態,有符號的最高位表示符號,0為正,1為負,其餘7位表示數字位,2的7次方。int型16位 的,一樣。float型的數據必須要有小數點,一般float能表示6~7位有效數字。上述的數據類型中,如果范圍還不夠大,還可以定義成long型,即長整型,佔4個位元組,而浮點型可以定義成double型,可以表示16~17為小數,當然,它也只佔四個位元組。
Ⅱ 單片機 定義bit bdata是什麼意思
在單片機C語言中,bit是新增的一個關鍵詞,它是用來定義一個「位變數」
bdata是把變數定義到數據RAM的可位定址區,即51系列的20H~2FH單元中,最後bitflag應該是bit flag(和關鍵字bit中間有個空格)表示定義一個位變數flag,這個flag變數只能是0或者1。
Ⅲ 51單片機中位地址和位變數是什麼意思呢
位地址是指可以對某些寄存器或存儲器的某一位直接操作,這時這些寄存器的某一位都有一個地址,就叫位地址。編程時用不到位地址,直接寫該位的名稱即可,如 C語言編程直接寫TR0=1,TR0=0,EA=0等 匯編語言寫SET B P1.0 CLR EX0. TR0 EA P1.0 等即是特殊功能寄存器中的某一位,是位變數。
位變數一位二進制變數,如bit A 結果只能 是1或0,當然它是保存在可位定址的存儲器區域
如R0 到 R7中的某一位。
Ⅳ 51單片機有沒有位變數
51有位操作指令,自然有位變數。
有些單片機沒有為變數,不過可以通過構建位域來實現位操作。或者是直接用C的位運算符實現。
###################################################################
51單片機中有可位定址區,位變數就是定義在這一存儲區。在匯編里要指定地址,C中只要在定義變數的時候使用idata關鍵字就可以定義了。
Ⅳ STM單片機定義定義標志位變數
是宏定義吧!
比如#define uchar unsigned char
後面的程序就可以用uchar來定義 無符號的字元了
Ⅵ 單片機數據類型
單片機數據類型有bit,sbit,sfr,sfr16都用於單片機的C語言編程。
bit—定義位變數,定義位變數時可以為變數賦值,但不能指定變數的地址。定義格式:bit 變數名=變數值。
sbit—此類型變數只要用於訪問可位定址的特殊功能寄存器中的某個位。定義格式:sbit 變數名=位地址;sbit 變數名=SFR地址^位序號;sbit 變數名=sfr16變數^位序號。
sfr—此類型變數可以訪問指定的8位特殊功能寄存器,地址范圍為0x80~0xFF。定義格式:sfr 變數名=變數地址。
Ⅶ 單片機(僅有一位的那種)怎麼聲明位變數
是的,對於C51單片機來說,以下有以下類型變數:
bit a 1位
unsigned char a,或者char a 8位
unsigned short a 或者 short a 16位
unsigned long a或者 long a 32位
unsigned int a 或者 int a 16位,注意,int是與編譯器有關的,對於 C51,int等效於short
float 或者 double 對於 51來說,都是一樣的,32位。
Ⅷ 為什麼對51單片機的I/O口操作要定義位變數
1.51單片機可以進行位定址
2. reg5x.h中沒有預先定義io口的位符號
3.定義位後,方便操作,可以修改一個位的值而不影響同一io口的其它位