我正在为 msp430 编写一个程序。
第一次单击按钮时增量就会消失。释放按钮时它不会停止。
如何将增量限制为每次单击按钮一次增量?
#include <msp430.h>
int main(void)
{
int i; //delay variable
int dimeRead=0;
int desired=1000;
volatile int total=0;
P1OUT=0; //Supposed to get rid of it hanging at the top
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
while(total<desired)
{
if((P1IN&0x16)!=0x16) // check if switch is pressed or not
{
dimeRead=dimeRead+1;
total=total + 10;
}
//Goal is to flip an out put on to turn on light when desired number is hit.
}
return 0;
}
最佳答案
首先像这样用掩码写下你的按钮引脚
#define 掩码 PIN1 | PIN2
(1 和 2 更改为您的引脚)更适合视觉错误控制。
在第二个语句中,检查所有按下的按钮if ((P1IN&MASK)==MASK)
。
现在你的语句if((P1IN&0x16)!=0x16)
检查3个引脚(PIN1、PIN2、PIN4)是否处于Hi状态,当它是错误的时生成代码
{
dimeRead=dimeRead+1;
total=total + 10;
}
如果你想在按下一个或两个按钮时递增,语句必须像这样 if((P1IN&MASK)!=0)
对于按下时向上推(HI 状态)的按钮,所有这些都成立,对于向下拉(LOW 状态)的按钮,则为 if((P1IN&MASK)!=MASK)
。
在 debounse 按钮增量后添加一些延迟。 如果您的按钮通过 PIN 和接地连接,则必须为此引脚启用上拉/
关于c - MSP430 按钮未关闭的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779334/