- 位操作符在嵌入式開發中最爲常用,如通過位運算符進行運算操作、對寄存器中進行操作。
- 六種常用的位操作符:位與( & );位或( | );位異或( ^ );左移操作符( << );右移操作符( >> );求反( ~ )。
-
舉例:
-
位與(&):基本用途用於清除某個位或某些位
123//清除LCD控制寄存器的最低位來關閉LCD
#define LCDCON (*(volatile unsigned *)0x1f000000)
LCDCON &=oxfffffffe
-
位或(|):基本用途爲用於設置某個位或某些位
12//設置LCD控制寄存器的最低位來打開LCD
LCDCON |=0X1;
-
位異或(^ ):基本用途 把兩個操作數中對應位的值相異的位置一。(規則:相同置0,不同置1)
-
左移操作( << ):操作數左移n位,左邊移出的位被遺棄,右邊空出的位補0。可用來設置寄存器的值,或者用於乘法運算。
123456789//通過移位操作設置主頻
void
setPllValue(
int
mdiv,
int
pdiv,
int
sdiv){
PLLCON=(midv<<12)|(pdiv<<4)|sdiv;
}
結果爲:
PLLCON[19 : 12]=M_DIV
PLLCON[9 : 4]=P_DIV
PLLCON[1 : 0]=S_DIV
-
右移操作符( >> ):操作數右移N位,對於無符號數,右邊移出位捨棄,左邊空出位補0;對於有符號數,右邊移出位捨棄,左邊空出位補1.
-
取反操作( ~ ):
-