我已经尝试过位操作、十六进制和二进制分配、设置 P1SEL0、P1SEL1。 无论我尝试什么、只有 P1.4 - P1.7按预期工作。 P1.0 - P1.3中没有任何内容。 我在这里遗漏了一些基本的东西、但无法弄清它是什么。
以下代码应切换所有 P1引脚、但仅上部字节有效。 我测试同一 LED 上的所有引脚、因此这不是电路问题:
#include
int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
P1DIR = 0xFF;//P1所有输出
P1OUT = 0x00;//最初将所有引脚设置为低电平
unsigned int i;//delay 变量
while (1)
{
P1OUT ^= 0xFF;//切换所有 P1引脚
for (i=0;i<30000;i++){//切换之间的延迟
}
}
}
以下代码应该只打开 P1.1、但不起作用。 如果我将其更改为'BIT6'或高字节中的任何其他位、它们将相应地工作:
#include
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
P1SEL0 = 0;
P1SEL1 = 0;
P1DIR |= BIT1;
P1OUT |= BIT1;
while (1);
}