打印

430运算问题

[复制链接]
614|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hrg13579|  楼主 | 2017-7-15 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
麻烦高手解释BCSCTL1&=~XT2OFF的详细执行过程
众所周知,BCSCTL1&=~XT2OFF语句是用来开启XT2OFF(即为0),那这个语句具体是如何达到这个目的的呢?
IRA设置中XT2OFF值为0x80(1000 0000) ,既~XT2OFF=0000 0001 ,那么BCSCTL1和~XT2OFF求与后的值应该是 0000 000x.那我怎么知道BCSCTL1中各位的初始值呢?

相关帖子

沙发
mcu5i51| | 2017-7-15 15:13 | 只看该作者
~ 0x80 = 0x7f

使用特权

评论回复
板凳
kissn123| | 2017-7-16 01:00 | 只看该作者
MSP430是可以位操作的,
这句话的意义是:先读取寄存器的值,然后操作某一位,最后将其写到寄存器中

典型的  读-改-写 流程
BCSCTL1 &=~XT2OFF
这句话是将BCSCTL1寄存器中的XT2OFF位清零而不改变其他位的状态,XT2OFF是一个16bit宏定义,其中只有一位是1,其他位是0,取反后就只有一位为0,其他位为1,而0b与任何二进制位与后都是0b,1b与任何位与后都只会保持原来的位不变,所以就达到了将BCSCTL1的XT2OFF位清零的目的。

分开写就是:BCSCTL1  = BCSCTL1 & (~XT2OFF)
明白?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

300

主题

587

帖子

4

粉丝