按钮未关闭的 MSP430 问题
MSP430 issue with button not switching off
我正在为 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;
}
我没有获得评论的授权,所以我正在写作为答案。如果没记错的话,每次按下按钮时,您都在尝试增加 if。这就是为什么它应该是这样的。
if((P1IN&0x16) == 0x16)
但我还想提一下:
if((P1IN&0x16) == 0x16)
通过编写此语句,您期望 P1.1、P1.2 和 P1.4 较高。
if((P1IN&0x16)!=0x16) ,
当按钮没有被按下时,这个说法是正确的。你应该用等号改变它。
我也不确定0x16是从哪里来的,我想你也应该再看看它。
首先像这样通过掩码写你的按钮引脚
#define MASK 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 和地连接,则必须为此引脚启用上拉/
我正在为 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;
}
我没有获得评论的授权,所以我正在写作为答案。如果没记错的话,每次按下按钮时,您都在尝试增加 if。这就是为什么它应该是这样的。
if((P1IN&0x16) == 0x16)
但我还想提一下:
if((P1IN&0x16) == 0x16)
通过编写此语句,您期望 P1.1、P1.2 和 P1.4 较高。
if((P1IN&0x16)!=0x16) ,
当按钮没有被按下时,这个说法是正确的。你应该用等号改变它。
我也不确定0x16是从哪里来的,我想你也应该再看看它。
首先像这样通过掩码写你的按钮引脚
#define MASK 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 和地连接,则必须为此引脚启用上拉/