找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18177|回复: 2
收起左侧

单片机位运算 &运算(与运算)和|运算(或运算)详解

[复制链接]
ID:165212 发表于 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,用 | 运算


评分

参与人数 3黑币 +61 收起 理由
5314039 + 3 很给力!
张小帅1126 + 8 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:99612 发表于 2017-2-19 23:06 | 显示全部楼层
谢谢楼主很详细的说明!很通俗易懂。
回复

使用道具 举报

ID:143694 发表于 2017-2-23 20:34 | 显示全部楼层
适合新手!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表