×
单片机 > 单片机程序设计 > 详情

按键的长按与短按(基于MSP430F5529)

发布时间:2020-05-27 发布时间:
|

长按与短按的区别只是加上一个适当的延时然后再去判断引脚状态。


定义:


#define KEYDIR P2DIR

#define KEYIN P2IN

#define KEYIFG P2IFG

#define KEYIE P2IE

#define KEYIES P2IES

#define KEYREN P2REN

#define S1 BIT0


extern unsigned char key_key;


在中断中处理长按与短按:


#pragma vector=PORT2_VECTOR  //声明中断向量地址

__interrupt void GPIOIntHandler(void)

{

unsigned int IntState,vextend,cv;

unsigned long i;

IntState=KEYIFG;

if (IntState & S1) //按键按下时

{

vextend=0;

cv=0; //长按标志位清零

while (KEYIN& S1==S1) //按键处于按下状态则一直循环

{

for(i=1000;i>0;i--); //适当的延时

vextend++; //计数值加1

if(vextend==2500) //如果计数值等于2500,则说明处于长按状态(此处时间可以根据自己的需求进行设定)

{

vextend=0; //计数值清零

while(KEYIN& S1==S1)//按键依然处于按下状态

{ //进入长按状态处理

if(key_key==99)

key_key=0;

else

key_key++;

LCD_ShowNum(0,0,key_key,3);

for(i=2000000;i>0;i--);//适当的延时为了不让显示过快的变化

cv=1; //长按状态的标志置1(表示进入过长按处理程序)

}

}

}

if(cv==0)//长按状态的标志为0时

{

if(key_key==99)

key_key=0;

else

key_key++;

LCD_ShowNum(0,0,key_key,3);

}

}

KEYIFG &=~(S1);//中断标志位清零

}



关键字:按键  长按与短按  MSP430F5529

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析