MSP430:P1OUT=4、P1OUT |=4、P1OUT &-=~8|P3DIR|=BIT0、P3OUT&=~BIT0 的含义的意思

首先,msp430没有P0口的,按P1口来说明
P1OUT = 4; P1.2引脚输出高电平,P1其余引脚输出低电平;
P1OUT |= 4;P1.2置高电平,P1其余引脚不变;
P1OUT &= ~8;即P1OUT &= 0xf7,P1.3置低电平,P1其余引脚不变;

|是或运算符,&是与运算符,具体请参考C语言应用运算符部分!
没有P0口把就把P0当成P1讲解把
P1OUT=4=0100;所以P1.0,P1.1,P1.3输入P1.2输出
P1OUT |=4=0100 ;所以P1.2输出
P1OUT &-=~8=-(1000)=0111;P1.3输入
不一定对,我自己的理解,我也刚看书,还望高手指点 

下边是 与 或 的详细说明,你仔细看看,这是我当时学习的时候整理的
(1)位于&经常用于测试某个位是1还是0,下面程序测试变量flag的第四位是1还是0.
#define TEST 8
main()
{
  int flag;
  ...;
  if ((flag&TEST)!=0)
    {
      printf("fourth bit is set");
    }
}
注意逻辑运算符优先级比关系运算符优先级低,必须加括号。
位与还常用来对操作数的某些位清零,或者保留某些位: a=a&0xffff 高16位清零,保留低
16位.

(2)位或经常用于把标识符中某个位设置为1
#define SET 8
main()
{
  int flag;
  ...;
  flag=flag | SET;         //与flag |=SET相同
  if((flag & TEST)!=0)
  {
    printf("flag is set")
  }
}

(3)求反运算符经常与位与运算一起使用,用于关闭某个位。
  x=8;
  flag=flag &~x;           //flag &=~x
  将把flag的第四位关闭。
 
(4)位移运算符 << , >>
位移运算经常用于乘以或除以2的幂。
x=y<<1;  该语句把y左移一位,然后赋值给x,x的十进制值等于y乘以2的值。
同理,右移一位等于y除以2的值 

P3DIR|=BIT0、P3OUT&=~BIT0 的含义

 P5OUT |= BIT5

P5OUT 与 BIT5 或,然后赋给 P5OUT 。

P3OUT&=~BIT0

BIT0其实就是0x0001;那么P3OUT&=~BIT0;等效于P3OUT=P3OUT&(~0X0001) 
实际上为P3OUT=P3OUT&0XFFFE(1111111111111110)将P3口的最低位清零其余位保持原态。

BIT0:0x0001(0000 0000 0000 0001),~BIT0:0xFFFE(1111 1111 1111 1110),P3OUT与~BIT0与,然后赋给P3OUT,既最低位置清零,其他位不变

posted on 2022-10-04 01:31  bdy  阅读(180)  评论(0编辑  收藏  举报

导航