请问下,我将P2的3和4脚设置为外部下降沿中断,带上拉输入,用2个按键对应3和4脚来控制,可是为什么我按其中的一个按键3和4脚的标志位为什么都置1了呢,不应该是对应的脚置1么
P1DIR |=BIT0; //P8.1为输出
P8DIR |=BIT1; //P8.1为输出
P8DIR |=BIT2; //P8.1为输出
P2DIR&=~BIT1; //将P2.1脚设置为输入方式
P2DIR&=~BIT3; //将P2.3脚设置为输入方式
P2DIR&=~BIT4; //将P2.4脚设置为输入方式
P2REN|=BIT1+BIT3+BIT4; //使能P2.1、P2.3、P2.4上拉、下拉寄存器
P2OUT|=BIT1+BIT3+BIT4; //将P2.1、P2.3、P2.4设置为上拉输入
P2IES|=BIT1+BIT3+BIT4; //将P2.1、P2.3、P2.4设置下降沿触发中断
P2IFG&=~BIT1;
P2IFG&=~BIT3;
P2IFG&=~BIT4; //清除P2.1、P2.3、P2.4中断标志位
P2IE|=BIT1+BIT3+BIT4; //使能P2.1、P2.3、P2.4中断
这是我的中断程序
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
if((P2IFG&BIT1) == BIT1)
{
P2IFG &= ~BIT1; // Clear P2.1 IFG
P8OUT ^= BIT1;
}
if((P2IFG&BIT3) == BIT3)
{
P2IFG &= ~BIT3; // Clear P2.3 IFG
P8OUT ^= BIT2;
}
if((P2IFG&BIT4) == BIT4)
{
P2IFG &= ~BIT4; // Clear P2.4 IFG
P1OUT ^= BIT0;
}
此帖出自
小平头技术问答
一周热门 更多>