MSP430G2553代码总结
1. 点亮一个LED
// PxOUT 控制IO输出电平, 又决定上下拉电阻的接法
// PxDIR 重置: 00000000 0->输入, 1->输出
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P1DIR = BIT0; // BIT0 -> 00000001, 使P1.0设置为输出
// P1DIR &= ~BIT0; // 将P1.0设置为输入状态. ~:按位取反
P1OUT |= BIT0; // 将P1.0设置为高电平
while(1)
{
}
return 0;
2. LED2闪烁
// 将寄存器/变量某一位置为1: |= (按位或)
// 将寄存器/变量某一位清零: &= (按位与)
// 不断改变寄存器/变量某一位: ^= (按位异或)
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P1DIR |= BIT6; // 初始化LED2所在的IO口P1.6为输出, BIT6 x1xxxxxx
P1OUT &= ~P1OUT; // 初始化LED2所在的IO口P1.6为低电平, LED灯初始状态为灭, P1OUT: x0xxxxxx
while(1)
{
P1OUT ^= BIT6; // 按位异或运算, 第一次: x1xxxxxx, LED2点亮. 第二次: x0xxxxxx, LED2熄灭.
__delay_cycles(500000); // 执行时间大致为500ms.
}
return 0;
3. 按键控制LED
// P1IN寄存器是输入寄存器, 能反映外部IO口的电平状态, 只读, 不可赋值
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P1DIR |= BIT6; // 初始化LED2所在的IO口P1.6为输出, BIT6 x1xxxxxx
P1OUT &= ~P1OUT; // 初始化LED2所在的IO口P1.6为低电平, LED灯初始状态为灭, P1OUT: x0xxxxxx
P1DIR &= ~BIT3; // 初始化按键所在IO口P1.3为输入
// 使能P1.3口为上拉电阻
P1REN |= BIT3;
P1OUT |= BIT3;
while(1)
{
if(P1IN & BIT3) // P1.3口为高电平, 证明没有被按下, 第三位跟随原来的状态, 其余置零
{
P1OUT &= ~BIT6; // 熄灭LED2
}
else
{
P1OUT |= ~BIT6; // 点亮LED2
}
}
return 0;