1樓:匿名使用者
二樓正解,只要將變數定義在51微控制器的可位定址區域20h-2fh即可 ,bdata型別
uchar bdata b8 ;
b8^0 = 0 ;
b8^1 = 1 ;等等
聯合體+結構體+位段 對這種做法 編繹器也會自動將其優化在可位定址區域,純粹故弄懸虛,冗長,增加程式維護度,c51講求的是在有限資源內著重精簡、執行效率
2樓:
^一共可以定義16個位元組的位定址變數
static uchar bdata canbusflag=0; //can標誌
sbit canrcv_good=canbusflag^0; //成功接收標誌
sbit cansend_good=canbusflag^1; //成功傳送標誌
sbit canerrflag=canbusflag^2; //can匯流排錯誤標誌
sbit candtoverflag=canbusflag^3; //can匯流排超載標誌
sbit canwuiflag=canbusflag^4; //can匯流排喚醒中斷
//你改變canbusflag,下面的一堆變數也變了,反之既然
定義:union unitemp // 溫度取樣值
idata utemp; //idata是定義變數儲存空間,這裡用的8952微控制器,有idata空間
。。。。
程式裡面使用:
utemp.temp=***;//其實temp_ad[2]陣列裡面的內容也變了,union 結構嘛
如果你只定義8個位,就用第一種方式。
union 結構是為了方便大資料的操作才使用的。如果你要用union 定義一個8位變數的每一位,想應該可以吧。不過不知道符不符合c語法,編一個試試吧~哈哈
3樓:匿名使用者
^你可以定義一個bdata型別的,然後分別定義這8位如:unsigned char bdata temp;
sbit temp0 = temp ^ 0;
sbit temp1 = temp ^ 1;
sbit temp2 = temp ^ 2;
sbit te*** = temp ^ 3;
sbit temp4 = temp ^ 4;
sbit temp5 = temp ^ 5;
sbit temp6 = temp ^ 6;
sbit temp7 = temp ^ 7;
這樣就能使用temp這個位元組裡面的8位了。
例如:te*** = 1;
temp5 = 1;
則temp位元組的第3位和第5位被置為1了,其他位的值不變。
4樓:匿名使用者
比如led燈的控制
sbit d1=p1^0;
sbit d2=p1^1;
sbit d3=p1^2;
sbit d4=p1^3;
sbit d5=p1^4;
sbit d6=p1^5;
sbit d7=p1^6;
sbit d8=p1^7;
這樣在操作的時候就不用對整個p1口操作,直接操作位即可得到指定地址上的一個位元組或字的方法如下:
#define mem_b(x) (*((byte *)(x)))#define mem_w(x) (*((word *)(x)))不過這個有點複雜,一般用於arm
bit在微控制器中怎麼用
5樓:匿名使用者
bit在ram中的可位定址空間中,一般用作程式判斷的標誌位。
6樓:神
用c寫程式時定義位變數,如定義位變數led,則可寫成: bit led;
微控制器c語言程式設計中,用關鍵字bit定義微控制器的埠.對嗎
7樓:匿名使用者
bit 是宣告一個位變數的,定義微控制器埠的是sbit.
如:sbit led=p2^1; //定義引腳p2.1為led
bit flag; //宣告一個位變數
8樓:匿名使用者
不對,用sbit
bit申明位變數。
9樓:心聲代
sbit,不是bit
而且只有51型別的微控制器合適
sbit led1 = p1^1;
51微控制器中bit型別預設值是多少
10樓:匿名使用者
bit只是定義一個標誌位,可以用到邏輯判斷。在ram中的可位定址空間中,一般用作程式判斷的標誌位。沒有預設值這一種說法的,或者理解為狀態不確定,必須要對它所定義的變數初始化。
11樓:勤奮的石頭
查詢微控制器復位(reset)部分相關資料,會告訴你微控制器復位之後每個引腳還有暫存器的值
微控制器c語言延時程式,51微控制器C語言中delay函式是怎麼定義和使用的?
用定時器 可以衍生出定時中斷和標記迴圈查詢法 還有直接用軟體語句硬性延時 這個需要實際測試和調校過才比較準 但不管是哪一種,其最終 還是要依據微控制器工作頻率,具體的需要解釋太多,你還是看看對應微控制器的datasheet的各模組說明吧 可以用for迴圈延時 但是精度不夠 最好用定時器中斷 比如用定...
為什麼51微控制器可以執行c語言,為什麼51微控制器可以執行c語言
所有計算機在bai執行程式時,肯du定是要執zhi行機器語言的程 因為開發時就支援,提供了相應的編譯,及硬體控制等,其次,執行時也是轉化成對應的程式語言。給51微控制器程式設計用的c51與c語言有什麼區別?其實區別不是太多。c語言中的所有運算子,在c51中都可以用。但是c51也有特有運算子,如sbi...
51微控制器c語言裡nop函式怎麼用
在單片bai機c語言中直接調du用庫函式即可,具體如下 zhi include 宣告瞭void nop void nop 產生一條 daonop指令。該函式的內作用 對於延時容很短的,要求在us級的,採用 nop 函式,這個函式相當彙編nop指令,延時幾微秒。nop指令為單週期指令,可由晶振頻率算出...