msp439f6638按键1实现流水灯 按键2实现关闭三盏灯
时间: 2024-04-30 09:20:12 浏览: 15
下面是 MSP430F6638 的按键1实现流水灯、按键2实现关闭三盏灯的代码实现,你可以参考一下:
```c
#include <msp430.h>
#define LED1 BIT0
#define LED2 BIT1
#define LED3 BIT2
volatile unsigned int count = 0;
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器
P1DIR |= LED1 + LED2 + LED3; // LED1、LED2、LED3 引脚设置为输出
P1IE |= BIT0 + BIT1; // P1.0、P1.1 设置为中断源
P1IES |= BIT0 + BIT1; // 上升沿触发中断
P1IFG &= ~(BIT0 + BIT1); // 清除中断标志位
__enable_interrupt(); // 使能中断
while(1) {
if(count == 0) {
P1OUT = LED1;
} else if(count == 1) {
P1OUT = LED2;
} else if(count == 2) {
P1OUT = LED3;
} else {
count = 0;
}
}
}
#pragma vector=PORT1_VECTOR // P1 中断服务函数
__interrupt void Port_1(void)
{
if(P1IFG & BIT0) { // 按键1被按下
count++;
P1IFG &= ~BIT0; // 清除中断标志位
} else if(P1IFG & BIT1) { // 按键2被按下
P1OUT &= ~(LED1 + LED2 + LED3);
P1IFG &= ~BIT1; // 清除中断标志位
}
}
```
在上面的代码中,我们定义了三个 LED 亮灯的引脚,分别是 P1.0、P1.1、P1.2。按键1被按下时,会让 LED1、LED2、LED3 依次亮起,形成流水灯效果;按键2被按下时,会关闭 LED1、LED2、LED3。同时,我们使用了中断来处理按键的事件,当按键被按下时,会触发中断服务函数 `Port_1`,并根据按键的编号来执行相应的操作。