X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
微控制器 MCU
[经验] msp430单片机实现常按键和短按键加去抖功能
moshuiilove520
2016-8-30 14:24
楼主
通过P1口的中断开启定时器,然后利用定时器中断不断扫描相应的端口状态,判断按键的
//定时器设置
void TimerA1Init()
{
_UINT data = 0 ;
TA1CTL = data ;//clear all ,diaable interrupt , claer ifg
TA1CTL |= TASSEL__ACLK | ID_0 | TACLR ; // ACLK, stop mode, ,div:1 ,clear TAR
//TA0CTL |= MC__UP ;//启动定时器
TA1CCTL0 = CCIE ; //ccr0 比较中断允许
TA1CCR0 = 327 ; //ccr0 compare mode , ie disable , ifg clear
}
//P1端口中断程序
#pragma vector = PORT1_VECTOR
__interrupt void Port1ADISR( void )
{
P1IFG &= 0x0f;
switch(P1IFG)
{
case Key_Sel:
TA1CTL |= MC__UP; //启动定时器
Key_Tmp = Key_Sel;
break;
case Key_Menu:
TA1CTL |= MC__UP; //启动定时器
Key_Tmp = Key_Menu;
break;
}
P1IFG &= 0x00;
}
/***********************************************************
函数名称:__interrupt void Timer_A1_Count (void)
函数功能:
入口参数:无
出口参数:无
备 注:
***********************************************************/
#pragma vector = TIMER1_A0_VECTOR
__interrupt void Timer_A1_Count(void)
{
static _UINT i = 0;
_UBYTE P1_Value;
P1_Value = P1IN;
P1_Value &= 0x06;
switch(Key_Tmp)
{
case Key_Menu:
{
if( (P1_Value & BIT2) == 0) //按键按下
{
i++;
if(i >= 300) //常按键处理
{
BUZZER_ON;
i = 0;
//定时器停止
TimerA1_Stop;
}
}
else if((P1_Value & BIT2) != 0)//按键释放
{
if( (i >= 5) && (i < 300) ) //短按键
{
LCD_B1_RT_ON;
TimerA1_Stop;
i= 0;
}
else
{
i = 0; //否则认为是抖动;
}
}
break;
}
case Key_Sel:
{
if( (P1_Value & BIT1) == 0) //按键按下
{
i++;
}
else if( (P1_Value & BIT1) != 0) //按键释放
{
if(i > 5) //短按键处理
{
LCD_B1_RT_OFF;
TimerA1_Stop;
i = 0;
}
else
{
i = 0; //否则认为是抖动;
}
}
break;
}
}
}
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
放假了 塞满你的电纸书/平板吧
[linux学习笔记]之一:ubuntu ch340调试备忘
TI DSP 与 ADI DSP 比较!!!
想买个ARM开发板,请给我点建议
导通电阻小的模拟开关
关于智能天线的提出、工作原理和分类以及TD-SCDMA在智能天线中的技术优势详解
74ls192输出的电压过大
工程中困惑
难忘2017----浑浑噩噩的一年又老了一岁
430通过GPRS远程升级应用程序
MSP430单片机的特点及在接收机中的应用
sensorTag活动之智能水平尺方案
深圳市 做ZigBee方案的厂家/公司
研究
STM32F103ZET6时钟RTC晶振不起振的问题
朋友们,我有个数传台要做,230兆,有有兴趣的吗
DCDC的电流纹波
EVC 界面闪烁问题,在线等
为什么这次团购的MSP430 LaunchPad 中没有了LaunchPad Touch模块了,谁能解释下?
FPGA高级设计进阶.rar
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复