历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2019年09月06日 | MSP430F149按键检测程序

发布者:咖啡小熊 来源: eefocus关键字:MSP430F149  按键检测 手机看文章 扫描二维码
随时随地手机看文章

该程序由IAR编译运行,使用单片机的P1.0~P1.3口作为四个独立按键。由外部中断的下降沿触发。


/**********************************************

*程序描述:单片机的P1.0~P1.3连接四个独立按键,外部中断下触发

*作者    :huasir

*时间    :2017.10.28   22:10

***********************************************/

#include

#define keyin (P1IN & 0X0F)

unsigned int KeyVal = 0;   // 键值,0表示异常,1,2,3,4分别为四个按键按下

 

void DelayXms(unsigned int i);

void keyInit(void);   //键盘设置的初始化

int main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  keyInit();         //键盘初始化

  LPM0;              //进入低功耗模式 

  return 0;

}

/****************************************************************************

*函数名: PORT1_ISR()                                                         /

*作用  :外部中断服务函数                                                   /

*返回值:无                                                                  /

*参数  :无                                                                  /

*作者  :huasir                                                              / 

*时间  :2017.10.28                                                          / 

*****************************************************************************/

#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void){

  if(P1IFG&0x0f){

  switch(P1IFG){

      case 0x01:

         if(keyin==0x0e)

         {

            DelayXms(5);            //延时消抖

            while(keyin==0x0e);     //松手检测

            KeyVal = 1;

            LPM0_EXIT;

            P1IFG = 0;

            return;

          } 

      case 0x02:

         if(keyin==0x0d)

         {

            DelayXms(5);          //延时消抖

            while(keyin==0x0d);   //松手检测

            KeyVal = 2;

            LPM0_EXIT;

            P1IFG = 0;

            return;

         } 

      case 0x04:

         if(keyin==0x0b)

         {

            DelayXms(5);        //延时消抖

            while(keyin==0x0b); //松手检测

            KeyVal = 3;

            LPM0_EXIT;

            P1IFG = 0;

            return;

         } 

      case 0x08:

      if(keyin==0x07)

      {

            DelayXms(5);        //延时消抖

            while(keyin==0x07); //分手检测

            KeyVal = 4;

            LPM0_EXIT;

            P1IFG = 0;

            return;

      } 

      default:

       {

            KeyVal = 0;

            LPM0_EXIT;

            P1IFG = 0;

         

       }

    }

  } 

}

void DelayXms(unsigned int i){

    unsigned int j;

    for( ; i>0; i--){

      for(j=0;j<200;j++); 

    }

  

}

/****************************************************************************

*函数名: keyInit()                                                           /

*作用  :设置与四个独立按键相关的IO的配置,包括输入输出方向,中断触发方式    /

*返回值:无                                                                  /

*参数  :无                                                                  /

*作者  :huasir                                                              / 

*时间  :2017.10.28                                                          /               

*****************************************************************************/

void keyInit(void){

  P1DIR &= ~(BIT0+BIT1+BIT2+BIT3);//设置四个按键的接受口为输入,注意,使用外部中断并不属于第二功能

  P1IES |= BIT0+BIT1+BIT2+BIT3;  //设置四个按键的中断触发方式为下降沿触发

  P1IE  |= BIT0+BIT1+BIT2+BIT3;  //打开四个按键的外部中断

   _EINT();

}


关键字:MSP430F149  按键检测 引用地址:MSP430F149按键检测程序

上一篇:MSP430按键控制LED闪烁频率
下一篇:MSP430串口接收程序(使用中断)

推荐阅读

随着科技的快速发展,人工智能逐渐渗透到了生活中的各个方面,与工业制造业相结合就是智能制造,与机器人相结合就是智能机器人,与汽车相结了,与语音交互相结合是智能通话。 在刚刚举办的中国(上海)国际人工智能展会中,硅基智能公司展出了其的智能通话产品——全自动电话机器人。 硅基智能公司成立于2017年,是一家专注于智能语音和等交互技术的研...
三星发布其最新的移动处理器Exynos 980,该芯片内集成5G基带。基于先进的8纳米(nm) FinFET工艺技术,Exynos 980是三星第一款集成5G基带的人工智能(AI)移动处理器。与单独的5G基带芯片相比,支持5G功能的Exynos 980不仅有助于降低功耗,还提高了设备内的空间利用率。此外,值得注意的是,Exynos 980支持兼容2G到5G多模,在4G LTE中提供千兆下行速度,...
配图来自Canva近日,小米生态链企业之一,石头科技发布了2020年上半年财报。财报数据显示,2020 年上半年,石头科技公司实现营业收入 177,629.70 万元,同比减少 16.42%;实现利润总额 54,294.04万元,同比增长 18.94%;实现归属于母公司所有者的净利润 46,037.49 万元,同比增长 19.42%。其中,2020 年二季度,石头科技整体销售收...
为争夺晶圆代工头把交椅的竞赛已趋白热化,台积电和三星都不惜撒下重金来获得工艺上的领先。但是,在双方全力争夺的3nm工艺节点开发上,近期却相继有开发遇阻的消息传来。在先进工艺已逼近物理极限之时,每进一步都要突破层层阻力。晶圆代工之间的争夺,不单是资金投入的比拼,还是与时间的一场赛跑。与时间赛跑苹果iPhone下一代的处理器无法采用台积电的3...

史海拾趣

问答坊 | AI 解惑

变频器维修经验

A、 变频器品牌的选定:       不要只看价格,有的变频器价格低,但质量、性能极差。其偷工减料,寿命短,配件少,难维修,    如果换整个新的电路板则维修费会是天价。有的公司能承诺保修服务 ...…

查看全部问答∨

GPS定位跟踪方案

• 采用GPS/GSM复合定位技术。全球互联网络查询,全国覆盖漫游,无障碍、无盲点、全天候。 • 具有手机、PC机自助查询操作和运营商呼叫服务中心三种服务方式,方便、及时,适用于各类用户群。 • 体积小、重量轻、携带方便、操 ...…

查看全部问答∨

PCI的VHDL源码

喜好PCI的朋友可以下啦!! …

查看全部问答∨

一个单片机程序性能优化的小例子(转)

一个单片机程序性能优化的小例子 好久没玩51了,昨天帮人看一个点阵屏的程序 屏是64*16的 用2片138做行选择(8*2=16),用8片4094做列输出(8*8=64) 原来程序的关键数据发送部分如下 void xianshi() { unsigned char out_data = 0xff; unsigned ch ...…

查看全部问答∨

求助:提供正负电压的芯片

锂电池电压:3.6V,求一芯片可以把3.6V电压转换成正负5V。 [ 本帖最后由 lzcqust 于 2010-2-5 08:34 编辑 ]…

查看全部问答∨

模拟与数字之间的隔离

电子电路中隔离的全面介绍之                      ——模拟与数字之间的隔离(连载5) 作者:北京 jerrymiao 一般地说,模拟电路与数字电路之间的转换通过模数 ...…

查看全部问答∨

寻liunx下抓USB数据包工具

我在试着linux连接USB(HID)设备,写数据到设备,想找一款能看到数据交换的一个工具,希望达人帮我推荐一个!…

查看全部问答∨

像语音识别这样的AP怎么写啊?捕捉线程跟识别线程怎么通信?他们通信的时间点怎么界定?就是捕捉线程什么时候去通知识别线程?在什么情况下?

像语音识别这样的AP怎么写啊?捕捉线程跟识别线程怎么通信?他们通信的时间点怎么界定?就是捕捉线程什么时候去通知识别线程?在什么情况下?…

查看全部问答∨

有谁用过PCL6045BL

有谁用过PCL6045BL,控制CPU是MCS51系列的, 可否把资料传我一份…

查看全部问答∨

关于HIVE注册表实现中的一些问题。。。

我在使用hive注册表保存方式的时候。。在系统进入到定位程序的时候就不动了。点屏幕定位针不动。。按esc也不行。。。但是点屏幕的时候在pb的debug中可以看到点的坐标。。。。按道理说系统应该是卡死了才对。。可是为什么那里还可以打印出来坐标了? ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved