zoujixing 发表于 2013-9-12 22:01:45

关于if((P1IN&temp)==(!temp))解释

MSP430的按键中断程序中有这样写到:
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
    unsigned int i;
    unsigned char temp;
    temp = P1IFG;
    for(i=0;i<0x1fff;i++);
    if((P1IN&temp)==(!temp))
    {
      switch(temp)
            {
            case 1: P2OUT ^= BIT1;break;
            case 2: P2OUT ^= BIT2;break;
            case 4: P2OUT ^= BIT3;break;
            case 8: P2OUT ^= BIT4;break;
            }
    }
    P1IFG = 0;
}

其中这句if((P1IN&temp)==(!temp))感觉解释不通,当有按键中断时(比如是BIT1),则P1IN=0XFD,temp=0X02,PIN&temp=0X00;不可能等于(!temp)=0xfd; 求高手指点.....

HadesHe 发表于 2013-9-12 22:04:43

丫的那里有个延时啊,延时完了差不多久弹起来了,不然就是手贱

lcofjp 发表于 2013-9-12 22:11:00

永远不要分析傻屄的程序,否则将被拉到相应水平。
编程要有自己的想法。

zoujixing 发表于 2013-9-12 22:15:30

延时完那P1IN=0XFF,,P1IN&temp=0X02;也不等于(!temp)=0xfd啊。。

HadesHe 发表于 2013-9-12 22:15:56

就没见过在中段里面搞延时的SB啊

HadesHe 发表于 2013-9-12 22:18:23

zoujixing 发表于 2013-9-12 22:15 static/image/common/back.gif
延时完那P1IN=0XFF,,P1IN&temp=0X02;也不等于(!temp)=0xfd啊。。

兄弟,你知道!和〜的区别吗?孔乙己估计知道

lcofjp 发表于 2013-9-12 22:22:01

zoujixing 发表于 2013-9-12 22:15 static/image/common/back.gif
延时完那P1IN=0XFF,,P1IN&temp=0X02;也不等于(!temp)=0xfd啊。。

你的智商现在已经被拉低了,!temp只有两个结果,0 或者1

zoujixing 发表于 2013-9-12 22:24:40

多谢提醒,了解了

zoujixing 发表于 2013-9-12 22:28:09

各位大神别再说了,我都想挖个坑跳下去了

HadesHe 发表于 2013-9-12 22:30:01

zoujixing 发表于 2013-9-12 22:28 static/image/common/back.gif
各位大神别再说了,我都想挖个坑跳下去了

不是你的错,你这属于被别人带到沟里去了

Lin_abc 发表于 2013-9-12 23:15:42

!是逻辑非得意思,而不是取反~, 所以存在满足的时候。
页: [1]
查看完整版本: 关于if((P1IN&temp)==(!temp))解释