寄存器快速操作
其实可以直接赋值,相对好理解,但是熟练之后还是这个方法比较快。
一、只将寄存器中的某些位置1而不影响其它位
使用或操作 “|” 。
任何值与0相或,保持原值。
任何值与1相或,结果为1.
例如:寄存器TMP
的当前值为0X62
,要将第2、3、6位置1。C语言表达式:TMP|=0X4C
。
0X62:0110 0010
0X4C:0100 1100
TMP= 0110 1110
那么这个0X4C
的值如何快速得到的?
先假设寄存器所有位的值都是0,如TMP=0000 0000。再将要操作的位置全部改为1,即0100 1100,也就快速得到了这个值 :0X4C。
二、将寄存器中某些位清0而不影响其它位
使用与操作“&+非”
任何值与1相与,保持原值;
任何值与0相与,结果为0。
例如:寄存器TMP
的当前值为0X62,要将2、3、6位清0,用C语言表达:TMP&=~0X4C
,
0X62:0110 0010
0X4C:0