展开全部
没必要使用按键中断
只需检测按键是否按下就行了
我以前也做过一个计步器,用一个按键控制暂停和开始
假设按键检测函数是 int Key_test();//返回值是1的话表示key1按下 ,2表示key2按下,没按下返回0
那么可以这样做
unsigned char Key_Flag == 0;
void mian()
{
Key_Flag = Key_Test();
while(Key_Flag == 1)
{
//上面可以写你想要执行的程序,下面检测到按键2按下就跳出这个循环
Key_Flag = Key_Test();//
if(Key_Flag == 2)
break; //跳出该死循环
}
while(Key_Flag == 2)
{
//上面可以写你想要执行的程序,下面检测到按键1按下就跳出这个循环
Key_Flag = Key_Test();//
if(Key_Flag == 1)
break; //跳出该死循环
}
//这样的话程序只在这两个循环内执行,要么计数,要么暂停,使用一个按键也可以进行切换,原理都差不多
}
只需检测按键是否按下就行了
我以前也做过一个计步器,用一个按键控制暂停和开始
假设按键检测函数是 int Key_test();//返回值是1的话表示key1按下 ,2表示key2按下,没按下返回0
那么可以这样做
unsigned char Key_Flag == 0;
void mian()
{
Key_Flag = Key_Test();
while(Key_Flag == 1)
{
//上面可以写你想要执行的程序,下面检测到按键2按下就跳出这个循环
Key_Flag = Key_Test();//
if(Key_Flag == 2)
break; //跳出该死循环
}
while(Key_Flag == 2)
{
//上面可以写你想要执行的程序,下面检测到按键1按下就跳出这个循环
Key_Flag = Key_Test();//
if(Key_Flag == 1)
break; //跳出该死循环
}
//这样的话程序只在这两个循环内执行,要么计数,要么暂停,使用一个按键也可以进行切换,原理都差不多
}
更多追问追答
追问
还有另外的问题是,不知道暂停和开始是控制ADXL345的什么信号(也就是说不知道按键控制了什么信号致使它开始或暂停)
追答
我记得ADXL345可以用SPI和IIC两种方式与单片机通信,无论哪种方式,ADXL345不会主动输出重力值,必须要由单片机去读取才能知道当前的重力值,假如我第一个循环是计数,第二个循环是暂停的话,当我进入第二个循环后,单片机不去读ADXL345的重力值仅仅显示当前的步数就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询