mp430利用外部中断实现当1.3出现下降沿时,1.0和1.6led状态翻转
时间: 2023-08-06 11:03:02 浏览: 35
好的,下面是一个修改后的示例代码,实现了当1.3出现下降沿时,1.0和1.6 LED的状态翻转。
```c
#include <msp430.h>
#define LED1 BIT0
#define LED2 BIT6
#define INT1 BIT3
void main()
{
WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器
P1DIR |= (LED1 + LED2); // 配置LED引脚为输出方向
P1IES |= INT1; // 配置1.3引脚为下降沿触发
P1IFG &= ~INT1; // 清除1.3引脚的中断标志位
P1IE |= INT1; // 使能1.3引脚的中断功能
__enable_interrupt(); // 使能总中断
while(1)
{
// 等待外部中断触发
}
}
#pragma vector = PORT1_VECTOR
__interrupt void Port1_ISR(void)
{
if (P1OUT & LED1 && P1OUT & LED2)
{
P1OUT &= ~LED1;
P1OUT |= LED2;
}
else
{
P1OUT |= LED1;
P1OUT &= ~LED2;
}
P1IFG &= ~INT1; // 清除中断标志位
}
```
需要注意的是,在修改后的代码中,当中断服务函数被触发时,会判断1.0和1.6 LED的状态,如果都是亮的则将1.0 LED熄灭、1.6 LED亮起,如果都是熄灭的则将1.0 LED亮起、1.6 LED熄灭。