430运算问题

[复制链接]
837|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

粉丝
快速回复 在线客服 返回列表 返回顶部