找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 29886|回复: 23
打印 上一主题 下一主题
收起左侧

请问,TMOD |=0x01;是什么意思?

  [复制链接]
跳转到指定楼层
楼主
ID:86913 发表于 2017-6-5 20:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到一个程序中设置定时器器模式:
TMOD |=0x01;
这个“|=”是位逻辑或赋值吧,用了“|=”是什么意思啊,敬请指教。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:208050 发表于 2017-6-5 21:19 | 只看该作者
TMOD |= 0x01 等价于TMOD = TMOD | 0x01。这里|=是按位或运算并赋值。
本语句意思是,将TMOD表示成二进制数,然后与0x01按位进行或运算,并把最终结果赋值给TMOD。
回复

使用道具 举报

板凳
ID:137239 发表于 2017-6-5 21:27 | 只看该作者
TMOD|=0x01等价于TMOD=TMOD|0x01;意思是将TMOD这个寄存器的最低位置一,这样做的好处是可以保持其他位的值不动;类似的,这样的运算还有:
a != b  等价于  a = a | b  a &= b 等价于  a = a & b
a ^= b 等价于  a = a ^ b
回复

使用道具 举报

地板
ID:111634 发表于 2017-6-5 21:36 | 只看该作者
本帖最后由 zl2168 于 2017-6-5 21:37 编辑

定时器T1工作方式保持不变,定时器T0工作方式设置方式1。但一般不这样用,若定时器T0工作方式未设置或设置为方式0,则不出错,否则会出错。因你只提出这一句,因此,无法作出其他评论。若你是一个初学者,不要学这种写法。
回复

使用道具 举报

5#
ID:208197 发表于 2017-6-5 22:06 | 只看该作者
这是定义寄存器为工作1状态
回复

使用道具 举报

6#
ID:151348 发表于 2017-6-5 22:19 | 只看该作者
zl2168 发表于 2017-6-5 21:36
定时器T1工作方式保持不变,定时器T0工作方式设置方式1。但一般不这样用,若定时器T0工作方式未设置或设置 ...

这样做有益于程序稳定,尤其是用多个定时器的时候
回复

使用道具 举报

7#
ID:207204 发表于 2017-6-5 22:52 | 只看该作者
等价于TMOD =TMOD | 0x01;//设置定时器方式的语句
回复

使用道具 举报

8#
ID:34643 发表于 2017-6-6 06:33 | 只看该作者
TMOD |= 0x01 等价于TMOD = TMOD | 0x01。这里|是按位或运算符。
本语句意思是,将TMOD表示成二进制数,然后与0x01按位进行或运算,并把最终结果赋值给TMOD。
回复

使用道具 举报

9#
ID:111634 发表于 2017-6-6 08:59 | 只看该作者
imxuheng 发表于 2017-6-5 22:19
这样做有益于程序稳定,尤其是用多个定时器的时候

1. 并非多个,TMOD控制的定时器只有2个。
2. 若定时器T0原控制码为1110,执行该指令后,岂非乱套?
回复

使用道具 举报

10#
ID:208262 发表于 2017-6-6 09:11 | 只看该作者
等价于TMOD =TMOD | 0x01;就是为了设置TMOD的工作方式
回复

使用道具 举报

11#
ID:151348 发表于 2017-6-6 09:40 | 只看该作者
zl2168 发表于 2017-6-6 08:59
1. 并非多个,TMOD控制的定时器只有2个。
2. 若定时器T0原控制码为1110,执行该指令后,岂非乱套?

实际上这要做确实要好些,以前做过一些板子,实现功能时都会用到定时器0和定时器1,要是不写成TMOD|=0X01这种形式的话,板子就没法用
回复

使用道具 举报

12#
ID:208291 发表于 2017-6-6 10:22 | 只看该作者
就是在不改变TMOD原来的其他位上的值,同时使TMOD的最低位置一。也就是说例如原来TMOD的值是0x40,TMOD|=0X01后,TMOD的值就变成了0x41。
回复

使用道具 举报

13#
ID:86913 发表于 2017-6-9 08:44 | 只看该作者
这么多的朋友为我热心指导,万分感谢,祝各位快乐、健康!
回复

使用道具 举报

14#
ID:162242 发表于 2017-6-9 13:11 | 只看该作者
TMOD|=0x01等价于TMOD=TMOD|0x01;
回复

使用道具 举报

15#
ID:38727 发表于 2017-6-9 15:26 | 只看该作者
意思就是  TMOD =TMOD | 0x01
用来设置TMOD的工作方式的
回复

使用道具 举报

16#
ID:209672 发表于 2017-6-9 21:11 | 只看该作者
加不加效果都一样只是一个或运算  相当于TMOD=TMOD|0x01
回复

使用道具 举报

17#
ID:197788 发表于 2017-6-9 23:37 | 只看该作者
这个就是设置定时器工作方式1。
回复

使用道具 举报

18#
ID:209712 发表于 2017-6-9 23:54 | 只看该作者
TMOD = TMOD | 0x01 ,把最低位置1,其他不变
回复

使用道具 举报

19#
ID:209743 发表于 2017-6-10 09:38 | 只看该作者
把最低位置1
回复

使用道具 举报

20#
ID:210264 发表于 2017-6-11 22:15 | 只看该作者
定时器T1用方式一工作
回复

使用道具 举报

21#
ID:207302 发表于 2017-6-14 22:17 | 只看该作者
应该是设定定时器工作方式1
回复

使用道具 举报

22#
ID:211219 发表于 2017-6-15 10:54 | 只看该作者
设置定时器工作方式啊,TO 和T1
回复

使用道具 举报

23#
ID:211605 发表于 2017-6-15 17:02 | 只看该作者
定义寄存器为工作1状态
回复

使用道具 举报

24#
ID:211611 发表于 2017-6-15 17:08 | 只看该作者
这是设置定时器的工作方式为状态1的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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