This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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;

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

 

 

  • xiaolu liao1, 

     P1DIR |= BIT0;  应该理解为0X0204物理地址中存放的内容 或 0x0001; 

     P1OUT = ^BIT0;  同理, 应该理解为0X0202物理地址中存放的内容异或0x0001.

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

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

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

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

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

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

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

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