1樓:
格式是[儲存種類] 資料型別 [儲存器型別] 變數名儲存種類:規定變數的作用域,一般不寫,使用預設的自動變數(auto)資料型別:規定變數占用多少儲存單元
儲存器型別:規定變數存放在哪個儲存空間,一般不寫,使用預設的資料儲存器,code是程式儲存器
變數名:變數的名字
2樓:大樹愛樹懶
unsigned char i ;定義乙個無符號的八位變數,8位微控制器一般常用這個
data unsigned char i;加上修飾data ,給i變數分配乙個內部ram空間
類似的還有xdata,pdata,code等等,一般學會code用法就好
extern unsigned char i;宣告i為乙個全域性變數,其他模組允許呼叫.
你這個問題,比較大的範圍了,關於c51的這些,很多基礎書都夠寫一章類容的,這麼一說,也不好說。
3樓:
如果是選用什麼型別變數:
一般用無字元型變數,如:unsigned char、unsigned int...因為無字元型變數要比有字元型變數執行速度要看和方便計算(如無字元型 unsigned char 範圍在0~255,而字元型範圍在 -127~+127)
如果只是宣告乙個變數,格式如下:
void main()
4樓:
跟你定義的變數的格式是一樣的
微控制器c語言怎麼宣告乙個可以位定址的變數
5樓:
是這個樣子的,你只要宣告了位變數,比如bit a;而且這個變數是全域性變數,或者是函式內部的靜態變數,那麼,這個位變數的地上就恆不變了,只是位址是多少這個是編譯器隨機分配的,不敢十分確定,但是在以後的執行中,位址肯定是不變的。
如果你宣告的是函式內部的動態變數,比如在函式內部宣告:bit a,那麼,這個位變數是隨著函式的呼叫變化的,其位址也是變化的。
所以,你只要宣告乙個全域性的位變數,那麼,這個變數就肯定是位址不變的,當然,不知道其位址具體是多少罷了。
如果你非要知道每個位址是多少,那麼,有兩個辦法:
1 你集中把128個位全部都定義出來。
比如,你在某個c檔案裡,這樣寫:
bit bit00 = 0;
bit bit01 = 0;
bit bit02 = 0;
bit bit03 = 0;
一直定義128個,把所有位空間佔滿,那麼,這樣,就可以肯定bit00的位址是0x20的最低位,bit01的位址是0x20的次低位了。
2 用sbit,而不用bit.
比如:unsigned char data b_var[16] = 0;
sbit led_status1 = b_var[0]^7;那麼,就表示led_status 是第20h位址中的最高位。
sbit led_status2 = b_var[6]^3;那麼,就表示led_status 是第26h位址中的第3位。
這個其實並不是定義了位變數,只是起了個別名而已。但效果一樣,只是注意,你更改b_var[6],可能會更改26h的位址第3位,所以,如果你只用位,那麼,就不要操作b_var[6]這個陣列元素。
其實呢,你只要定義個全域性變數就行了,沒有必要知道這個bit變數的位址,因為沒有什麼實際意義。
6樓:修者世界
微控制器中,可以位定址的有兩個地方,第一是特殊功能暫存器中可以被8整除的暫存器,第二就是20h~2fh這個位址空間。兩個地方的位變數申明不一樣。
第乙個地方的申明是: sbit 位變數
比如:sbit pwm=p1^0;
第二個地方的申明是:bit 位變數
比如: bit flag;
7樓:西城飛羽
首先是你的標頭檔案是#include
在這個標頭檔案中包含著一些宣告比如:sfr scan ;
這個宣告是你在程式中不必寫出來的,只需要#include然後你再在你的程式中寫語句:sbit 變數名 p0^1;
注意這個p0^1是指p0輸出/輸入的第乙個位。希望對你有幫助
8樓:一路清晨
int *cc;
cc=(int*)0x6300 ;
*cc=3;
51微控制器,用c語言,如何用矩陣鍵盤為變數char a賦
煙火夜空 4 4矩陣按鍵構架 火柴天堂作品 20110921 源程式預設硬體環境 52微控制器,12mhz晶振,p1口 4 4矩陣鍵盤,詳細布局如下 預設矩陣佈局,按鍵掃描方式1使用 p0 p1 p2 p3 p4 s1 s2 s3 s4 p5 s5 s6 s7 s8 p6 s9 s10 s11 s1...
微控制器上位機程式設計現在一般都用什麼語言
更多的應該是c 一般有利於與微控制器的通訊,而且大多數硬體的驅動都是以c c 實現的 但是像c 這樣的高階語言在呼叫c c 的介面也很方便,而且介面很容易實現,而且更加漂亮,可以參考一下。 海小兵 微控制器首選也幾乎是唯一的選擇就是c了,vb什麼的別想了。另外,vb現在確實不怎麼用了。 用的是c,但...
微控制器C語言陣列賦值求助,C語言一維陣列賦值方法
陣列只能在定義的時候整體賦值,不能在之後這樣用。所以你只能寫成 uchar frist 5 而不能寫成 uchar frist 5 frist 5 如果你真的要在之後賦值,特別是每個成員不一樣,你只能用迴圈或者手動乙個乙個賦值。或者先把所有值放在另外乙個數值然後memcpy給目標陣列。uchar 你...