51微控制器c語言裡面定義bit的方法有哪些請舉

2021-03-07 07:50:09 字數 2512 閱讀 9614

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指令為單週期指令,可由晶振頻率算出...