大家好、
我正在尝试在 MSP430G2333上运行一个简单的按钮代码来进行切换。 我一直在使用以下代码、但它不会通过 if 语句。 问题出在按钮上、因为 LED 在没有 IF 条件的情况下工作正常。 如果有人能帮助我在这里工作、我会很感激。
我使用引脚 P2.7作为连接按钮的输入。
我还阅读了数据表、其中指出 P2.7可用作输入。 如果 XOUT/P2.7被用作一个输入、过多的电流流动直到 P2SEL.7被清除。 这是由于振荡器输出驱动器在复位后连接到这个焊盘。
我怀疑它是否与导致问题的振荡器输出驱动器连接有关、我可能完全关闭。
#include
#include
define delay 150000
int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//按钮
P2DIR = 0x00;
//P2DIR&=~BIT7;//set P2.7 as input (0被计为 input)
//P2REN|=BIT7;//使能 P2.7的上拉/下拉电阻(使能内部上拉电阻、1)
//P2OUT&=~BIT7;//将 P2.7设置为具有下拉电阻器(选择下拉模式、0)
//P2OUT|=BIT7;//将 P2.7设置为具有上拉电阻器
P1DIR|=BIT0;//将 P1.0设置为输出
P1OUT|=BIT0;//最初关闭红色 LED (LED-1R)
// P1OUT&=~BIT0;//最初打开 LED
while (1)
{
if ((P2IN&BIT7)=BIT7)//如果按下开关
{
P1OUT^= BIT0;//切换 LED
_DELAY_CYCLES (DELAY);//等待开关被取消按下
}
}
返回0;
}