标题: 单片机位运算 &运算(与运算)和|运算(或运算)详解 [打印本页]

作者: luotechnically    时间: 2017-2-19 17:39
标题: 单片机位运算 &运算(与运算)和|运算(或运算)详解

今天,将两个单片机里用的比较多的位运算。

&运算(与运算)和|运算(或运算)


一般来说,定时器用的比较多。

比如,定时器的TMOD(定时器模式寄存器),这个寄存器是不可位寻址的,也就是不能单独的用sbit来操作这个寄存器的每一位。


TMOD——定时器模式寄存器的位分配(地址 0x89、不可位寻址

76543210
符号
GATE
(T1)
C/T
(T1)
M1
(T1)
M0
(T1)
GATE
(T0)
C/T
(T0)
M1
(T0)
M0
(T0)
复位值
00000000

这里,TMOD有8位,低4位是控制T0定时器的,而高4位控制T1定时器。

如果想要选择定时器T0的模式1,怎么做呢?

我们假设,这8位数为yyyyxxxx

1、我们先清零低4位,同时,不能影响到高4位yyyy。即(yyyy0000),我们的做法是这样的:

(yyyyxxxx) & 0xf0

写作:TMOD &= 0xf0;

2、我们选择定时器0的模式一,即(yyyy0001)。我们的做法是这样的:

(yyyy0000) |= 0x01

写作:TMOD |= 0x01;


总结一下:

1、如果要保留一些位不变的同时,其他位清零,用 & 运算

2、如果要保留一些位不变的同时,其他位置1,用 | 运算



作者: 5314039    时间: 2017-2-19 23:06
谢谢楼主很详细的说明!很通俗易懂。
作者: 张小帅1126    时间: 2017-2-23 20:34
适合新手!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1