PORTBBITPB7AVRc語言中有此語句

2021-03-04 07:44:38 字數 3210 閱讀 5940

1樓:匿名使用者

看看標頭檔案#include 中有定義

#define pb7 7

bit(7)等於1<<7

所以這句就是portb=portb|bit(7); 得到的就是portb的第7位置位

請問:avr c語言中,portb = (1<

2樓:匿名使用者

(1<表示1向左移動pb7位,此處的pb7表示乙個數字,他和pd7、pc7等均表示7,

portb = (1<,表示把1左移7位再賦給portb,即為把pb7這個引腳給高電平,這種語句常用來給單個引腳賦值

portb = (1<

3樓:匿名使用者

意思是portb口的7/6/1/0置高電平。1<

4樓:匿名使用者

就是將portb7設定為高電平,其它口為低電平 1<

在avr裡面portb = (1<

5樓:匿名使用者

是的,只不過前面人家那樣寫更直觀,一下就看出來那個位置為1了

在avr中 bit是如何用的 有什麼特點啊?

6樓:匿名使用者

在學習avr中常常發現有如類似portn&=~bit(pbn)給某位置高或底的語句,那麼它是如何實現的呢?首先我們可以看看bit在icc編譯器中是如何定義的,標頭檔案 中關於bit的定義如下,

#ifndef bit

#define bit(x) (1 << (x))#endif

大家看到後便一目了然了,舉個簡單的例子,如portb&=~bit(0x01)時,是對pinb2置低 電平。執行該語句時,首先將0x01左移一位變為0x02,之後 取反後變為0xfd在和portb暫存器原來的值相與在賦給portb,這樣就保證對某位置低電位的操作

7樓:匿名使用者

2l複製答案,無恥!!

請教一下avr微控制器中有一段程式是portb&=bit(2);其中bit(2)是什麼意思?

8樓:匿名使用者

bit(2)意思就是「 1<<2 」原來是0b00000001,現在是0b00000100 而portb&=bit(2);就是 portb=portb&(0b00000100) 按位與 就是portb暫存器內對應0b00000100中1的那位的值保留,剩下全部清零,說的夠詳細的了吧 呵呵

9樓:俠影如風

表示 第二位 你可以看一下bit的定義 就知道了

你這裡就表示 portb的第二位 (portb一共是8位)

10樓:匿名使用者

bit(2)就是0x04,

bit(3)就是0x08,

bit(4)就是0x10,

如何用c語言操縱avr的io埠

11樓:匿名使用者

如何用c語言操縱avr的io埠(以iccavr為例):

舉例一:將pb0定義為輸出,且輸出為高電平

ddrb=bit(0); //定義 pb0為輸出

portb|=bit(0); // pb0 輸出高電平

舉例二:將pb0、pb1定義為輸出,且pb0輸出低電平,pb1均為高電平

ddrb|=bit(0)|bit(1); //定義 pb0、pb1為輸出

portb|=bit(0)|bit(1);// pb0、pb1 輸出高電平

舉例三:將pb0資料暫存器的數值翻轉,即如果是1時變成0,如果是0時變成1

portb^=bit(0); // pb0 輸出高電平

舉例四:將pb0、pb1資料暫存器的數值翻轉,即如果是1時變成0,如果是0時變成1

portb^=bit(0)|bit(1); // pb0 輸出高電平

舉例五:將pb2、pb3定義為輸入,不帶上拉電阻

ddrb&=~(bit(2)|bit(3)); //定義 pb2、pb3為輸入

portb&=~(bit(2)|bit(3)); // 將 port 置0,沒有上拉電阻

舉例六:將pb2、pb3定義為輸入,帶上拉電阻。即沒有引用這些引腳時,預設值為高電平

sfior&=~bit(pud); // sfior暫存器的上拉電阻控制位pud置0,在整個**中,這句話可以不出現,或僅出現一次即可。因為它是乙個控制全部上拉電阻的控制位。

ddrb&=~(bit(2)|bit(3)); //定義 pb2、pb3為輸入

portb|=bit(2)|bit(3); // 將 port 置1,滿足上拉電阻的另乙個條件

舉例七:ddrb=bit(0)|bit(1) 與 ddrb|=bit(0)|bit(1) 的區別

假定在執行上面兩句指令前,ddrb 的狀態為: 1000 0000

如果執行 ddrb="bit"(0)|bit(1) ,ddrb的狀態變為: 0000 0011

如果執行 ddrd|=bit(0)|bit(1),,ddrb的狀態變為: 1000 0011

那前一句會先清空以前的所有狀態,後一句保留前面的狀態。

在實際應用中,後一句更常用。

舉例八:將第三位置1,除了用bit(3),還有其它的表達方法嗎?

ddrb|=bit(3);

ddrb|=1<<3;

ddrb|=0x08;

ddrb|=0b00001000;

#define led_set portd |= (1 << pd5) //位置高

#define led_clr portd &= ~(1 << pd5) //位置低

#define led_*** portd ^= (1 << pd5) //位取反

#define led_r pind & (1 << pd5) //位讀取

通過上面的定義就可以在程式中直接操作i/o了。

c語言中有關區域性常量的定義,C語言中是如何定義常量的啊

第乙個錯誤是 預編譯定義 defineca應該放在函式的外面,而且是程式檔案的開頭,而你把它放在函式內部了 第二個錯誤是 定義陣列 ints c 時,陣列長度必需用常量,在這裡,c雖然貌似是個常量,但先不說c本身的定義是錯的,而它所代表的卻是a,而a是變數,所以是錯誤。改正之後的結果應該是 incl...

c語言中有string型別變數嗎

這裡的 string 有 二 義性。1 如果 string 是普通詞彙,c語言中有字元型別變數嗎 答,有。字元型別 用 char 宣告。char str this is a string 2 如果 string 是專用詞彙,c語言中有string型別變數嗎 答,沒有。string 是 類,是 cla...

c語言中7的值是多少,c語言中715等於多少

這個語句是錯的,如果是位址符,不可以求常量的位址 如果是 與操作符或者位與運算子,應該需要兩個引數 c語言中7 15等於多少 是邏輯運算子 在c語言中,非0表示邏輯真 所以,7 15的結果是,邏輯真,用1表示.因此,結果是1.1。7不等於0,短路。貌似邏輯判斷吧,等於1 c語言中0 7 7等於多少?...