rui631483900 发表于 2012-7-17 15:32:08

初学430问一个弱弱的问题

while((IFG1&OFIFG)!=0)为什么不直接用while(OFIFG!=0)。

anvy178 发表于 2012-7-17 15:40:42

这两个东西的 条件不是一样的吧

rui631483900 发表于 2012-7-17 15:42:55

anvy178 发表于 2012-7-17 15:40 static/image/common/back.gif
这两个东西的 条件不是一样的吧

不就是当OFIFG=1的时候继续执行吗?

anvy178 发表于 2012-7-17 15:49:37

但是 前面是IFG1&OFIFG等于1 才执行啊后面是OFIFG 等于1怎么会一样呢

helloshi 发表于 2012-7-17 15:57:25

IFG1是寄存器,OFIFG是一个数

rui631483900 发表于 2012-7-17 16:02:30

anvy178 发表于 2012-7-17 15:49 static/image/common/back.gif
但是 前面是IFG1&OFIFG等于1 才执行啊后面是OFIFG 等于1怎么会一样呢

当OFIFG=0时,IFG1&OFIFG!=1;当OFIFG=1时,IFG1&OFIFG!=0啊.    这不是跟OFIFG!=1和OFIFG!=0一个效果吗?

GNMXD 发表于 2012-7-17 16:14:30

IFG1是MSP430中的一个寄存器,
而OFIFG 是这个寄存器中的一个位。

见下图,


所以楼主的疑问,那两个while的判断条件是完全不一样的:

while((IFG1&OFIFG)!=0)表示 寄存器IFG1中的OFIFG位是否为0;

while(OFIFG!=0)替换一下为 while ( 0X02 != 0 ) 判断条件一直为假。

{:lol:}

大道必成 发表于 2012-7-17 16:25:14

楼上正解;
while((IFG1&OFIFG)!=0)先按位与运算,目的是只判断寄存器IFG1的第二位是否为零

rui631483900 发表于 2012-7-17 16:53:20

GNMXD 发表于 2012-7-17 16:14 static/image/common/back.gif
IFG1是MSP430中的一个寄存器,
而OFIFG 是这个寄存器中的一个位。



我勒个擦   原来这样啊 来抱一抱。{:3_46:}

sdfd 发表于 2012-7-18 07:54:04

关键是430不能位寻址

sulinux 发表于 2012-7-18 23:55:29

{:lol:}学习了。。
页: [1]
查看完整版本: 初学430问一个弱弱的问题