TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430简单的C问题?

先放一段程序:

    

#include <msp430.h>

int main(void)
{
  volatile unsigned int i;

  WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
  P1DIR |= BIT0;                            // P1.0 set as output

  while(1)                                  // continuous loop
  {
    P1OUT = ^BIT0;                          // XOR P1.0
    for(i=50000;i>0;i–);                   // Delay
  }
}

P1DIR的物理地址为0X0204,BIT0为CCS5.3定义为0X0001;P1OUT物理地址为0X0202;

按照C语言法则:

  P1DIR |= BIT0;     则可解释0X0204或上0X0001,则为0X0205;

 P1OUT = ^BIT0;             同理0X0202异或0X0001,则为0X0203;

 但是始终觉得应该不是这样子理解的,要不然就物理地址跟赋值都交叉在一起拉,可是我又不知道怎么解释!!!

 

 

Shi JianHua:

此命令只能理解为430的位操作指令,16位的单片机,没有单独的位操作,所以用与或运算代替, 

P1DIR |= BIT0;     则可解释P1DIR 这个寄存器里面的值和 BIT0相或的结果付给P1DIR ;

 P1OUT = ^BIT0;             同理P1OUT 这个寄存器里面的值和 BIT0相或的结果付给P1OUT ;

Shi JianHua:

回复 Shi JianHua:

刚才错了,都是拷贝惹的祸。

此命令只能理解为430的位操作指令,16位的单片机,没有单独的位操作,所以用与或运算代替, 

P1DIR |= BIT0;     则可解释P1DIR 这个寄存器里面的值和 BIT0相或的结果付给P1DIR ;

 P1OUT = ^BIT0;             同理P1OUT 这个寄存器里面的值和 BIT0相异或的结果付给P1OUT ;就是P1.0电平翻转一下。

yffy:

应该理解为地址的内容和BIT0或

赞(0)
未经允许不得转载:TI中文支持网 » MSP430简单的C问题?
分享到: 更多 (0)