MSP430G2553如下面电路图连接,要求憅现S1按键按下后,憄变LED D1的憆憃,至少4种不同的憆憃。【请修憄LED控制管脚为P2.5】
时间: 2024-02-26 09:57:51 浏览: 116
好的,根据您提供的信息,我可以为您提供以下的四种方案:
1. S1按键按下后,LED D1常亮。
```
#include <msp430g2553.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器
P2SEL &= ~BIT5; // P2.5作为通用I/O口
P2SEL2 &= ~BIT5;
P2DIR |= BIT5; // P2.5口设置为输出模式
P2OUT &= ~BIT5; // 初始化LED D1为熄灭状态
P1REN |= BIT3; // P1.3口设置为上拉电阻输入模式
P1OUT |= BIT3;
while(1)
{
if((P1IN & BIT3) == 0) // S1按键按下
{
P2OUT |= BIT5; // LED D1常亮
}
}
return 0;
}
```
2. S1按键按下后,LED D1闪烁。
```
#include <msp430g2553.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器
P2SEL &= ~BIT5; // P2.5作为通用I/O口
P2SEL2 &= ~BIT5;
P2DIR |= BIT5; // P2.5口设置为输出模式
P2OUT &= ~BIT5; // 初始化LED D1为熄灭状态
P1REN |= BIT3; // P1.3口设置为上拉电阻输入模式
P1OUT |= BIT3;
while(1)
{
if((P1IN & BIT3) == 0) // S1按键按下
{
P2OUT ^= BIT5; // LED D1闪烁
__delay_cycles(500000); // 延时一段时间
}
}
return 0;
}
```
3. S1按键按下后,LED D1呼吸灯效果。
```
#include <msp430g2553.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器
P2SEL &= ~BIT5; // P2.5作为通用I/O口
P2SEL2 &= ~BIT5;
P2DIR |= BIT5; // P2.5口设置为输出模式
P2OUT &= ~BIT5; // 初始化LED D1为熄灭状态
P1REN |= BIT3; // P1.3口设置为上拉电阻输入模式
P1OUT |= BIT3;
int i;
while(1)
{
if((P1IN & BIT3) == 0) // S1按键按下
{
for(i = 0; i <= 1000; i += 50) // 呼吸灯效果
{
P2OUT = i < 1000 ? (i < 500 ? i : 1000 - i) : 0;
__delay_cycles(1000); // 延时一段时间
}
}
}
return 0;
}
```
4. S1按键按下后,LED D1呈现不同的闪烁模式。
```
#include <msp430g2553.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器
P2SEL &= ~BIT5; // P2.5作为通用I/O口
P2SEL2 &= ~BIT5;
P2DIR |= BIT5; // P2.5口设置为输出模式
P2OUT &= ~BIT5; // 初始化LED D1为熄灭状态
P1REN |= BIT3; // P1.3口设置为上拉电阻输入模式
P1OUT |= BIT3;
int i, j;
while(1)
{
if((P1IN & BIT3) == 0) // S1按键按下
{
for(i = 0; i < 5; i++) // 闪烁模式
{
for(j = 0; j < 3; j++)
{
P2OUT |= BIT5; // LED D1亮
__delay_cycles(500000); // 延时一段时间
P2OUT &= ~BIT5; // LED D1灭
__delay_cycles(500000); // 延时一段时间
}
__delay_cycles(2000000); // 闪烁模式之间的延时
}
}
}
return 0;
}
```
阅读全文