- 位操作符在嵌入式开发中最为常用,如通过位运算符进行运算操作、对寄存器中进行操作。
- 六种常用的位操作符:位与( & );位或( | );位异或( ^ );左移操作符( << );右移操作符( >> );求反( ~ )。
-
举例:
-
位与(&):基本用途用于清除某个位或某些位
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.
-
取反操作( ~ ):
-