买了lunchpad的学习板之后就一直没玩过,这几天才开始玩啊。今天写了一个最简单的程序就不对,不知道错在哪里啊。。。。
#include "io430.h"
int main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR|=BIT0;
P1DIR&=~BIT3;
while(1)
{
if(P1IN&BIT3!=BIT3)
P1OUT&=~BIT0;
else
P1OUT|=BIT0;
}
}
程序很简单啊 但是下载进去之后不对啊,本来是想通过按键s2控制led的亮暗的但是不好使啊,呜呜。。。。
引用: 原帖由 小小白 于 2011-10-30 16:48 发表 买了lunchpad的学习板之后就一直没玩过,这几天才开始玩啊。今天写了一个最简单的程序就不对,不知道错在哪里啊。。。。 #include "io430.h"int main(void){ WDTCTL=WDTPW+WDTHOLD; P1DIR|=BIT0; ...
应该修改成if((P1IN&BIT3)!=BIT3)。
另外,若key没有外接上拉电阻,请开启MCU内部的上拉,否则悬空导致key电平不确定。
引用: 原帖由 小小白 于 2011-10-30 17:56 发表 nnd,优先级坑爹啊。。。。果然是沙发说的优先级的原因啊。。。。谢谢沙发同学啊。。。。看来基础还挺重要的啊。。。。
我前几天也出现过这个问题,不过我是通过开发环境调试例如单步变量值等猜出问题所在的,原来要这样写,不要是编程经验少,记性差,不过以后再也不会这个错误了,
引用: 原帖由 小小白 于 2011-10-30 19:31 发表
悲剧啊。。。。 因为我看书的时候看到两个&一个是取变量运算符另一个是按位与,他们之间的优先级是不一样的,取变量运算符的优先级最高,!=和按位与之间不等于的优先级高于按位与。。。。然后就想明白了,谢谢 ...