2-1将寄存器某位清0或置1

发布时间 2023-10-25 23:35:44作者: 夏日清凉~

将寄存器的某位清0同时不影响其他位

  • 操作:任何值与1相与,保持原值

​ 任何值与0相与,结果为0

  • 例:寄存器TMP的当前值为0x62,要将第2、3、6位清0

0x62: 0110 0010

1011 0011 0x4c: 0100 1100

相与: 0010 0010

用C语言表示:TMP &= ~0x4c

在程序设计中具体操作:

寄存器 &= ?;

0000 0000 --要操作的位置1--> 0100 1100 -- 取反-->1011 0011

寄存器 &= ~0x4c;

例题:

将寄存器P0SEL的第5位,第2位和第0位置1,同时不影响该寄存器的其他位

// 0010 0101 相或置1

即:P0SEL |= 0x25;

将寄存器P1DIR的第6位、第3位和第1位清0,同时不影响该寄存器其他位。

// 1011 0101 相与清0

P1DIR &= 0xb5;