找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 27574|回复: 23
收起左侧

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

  [复制链接]
ID:86913 发表于 2017-6-5 20:21 | 显示全部楼层 |阅读模式
看到一个程序中设置定时器器模式:
TMOD |=0x01;
这个“|=”是位逻辑或赋值吧,用了“|=”是什么意思啊,敬请指教。

回复

使用道具 举报

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,则不出错,否则会出错。因你只提出这一句,因此,无法作出其他评论。若你是一个初学者,不要学这种写法。
回复

使用道具 举报

ID:208197 发表于 2017-6-5 22:06 | 显示全部楼层
这是定义寄存器为工作1状态
回复

使用道具 举报

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

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

使用道具 举报

ID:207204 发表于 2017-6-5 22:52 | 显示全部楼层
等价于TMOD =TMOD | 0x01;//设置定时器方式的语句
回复

使用道具 举报

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

使用道具 举报

ID:111634 发表于 2017-6-6 08:59 | 显示全部楼层
imxuheng 发表于 2017-6-5 22:19
这样做有益于程序稳定,尤其是用多个定时器的时候

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

使用道具 举报

ID:208262 发表于 2017-6-6 09:11 | 显示全部楼层
等价于TMOD =TMOD | 0x01;就是为了设置TMOD的工作方式
回复

使用道具 举报

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

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

使用道具 举报

ID:208291 发表于 2017-6-6 10:22 | 显示全部楼层
就是在不改变TMOD原来的其他位上的值,同时使TMOD的最低位置一。也就是说例如原来TMOD的值是0x40,TMOD|=0X01后,TMOD的值就变成了0x41。
回复

使用道具 举报

ID:86913 发表于 2017-6-9 08:44 | 显示全部楼层
这么多的朋友为我热心指导,万分感谢,祝各位快乐、健康!
回复

使用道具 举报

ID:162242 发表于 2017-6-9 13:11 | 显示全部楼层
TMOD|=0x01等价于TMOD=TMOD|0x01;
回复

使用道具 举报

ID:38727 发表于 2017-6-9 15:26 | 显示全部楼层
意思就是  TMOD =TMOD | 0x01
用来设置TMOD的工作方式的
回复

使用道具 举报

ID:209672 发表于 2017-6-9 21:11 | 显示全部楼层
加不加效果都一样只是一个或运算  相当于TMOD=TMOD|0x01
回复

使用道具 举报

ID:197788 发表于 2017-6-9 23:37 | 显示全部楼层
这个就是设置定时器工作方式1。
回复

使用道具 举报

ID:209712 发表于 2017-6-9 23:54 | 显示全部楼层
TMOD = TMOD | 0x01 ,把最低位置1,其他不变
回复

使用道具 举报

ID:209743 发表于 2017-6-10 09:38 | 显示全部楼层
把最低位置1
回复

使用道具 举报

ID:210264 发表于 2017-6-11 22:15 | 显示全部楼层
定时器T1用方式一工作
回复

使用道具 举报

ID:207302 发表于 2017-6-14 22:17 | 显示全部楼层
应该是设定定时器工作方式1
回复

使用道具 举报

ID:211219 发表于 2017-6-15 10:54 | 显示全部楼层
设置定时器工作方式啊,TO 和T1
回复

使用道具 举报

ID:211605 发表于 2017-6-15 17:02 | 显示全部楼层
定义寄存器为工作1状态
回复

使用道具 举报

ID:211611 发表于 2017-6-15 17:08 | 显示全部楼层
这是设置定时器的工作方式为状态1的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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