历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-09-06 来源:eefocus

该程序由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();

}


推荐阅读

史海拾趣

达方(DARFON)公司的发展小趣事

达方电子股份有限公司于1997年在台北市创立,初始阶段主要致力于IT周边组件的研发与生产。创始人凭借对市场趋势的敏锐洞察,决定专注于笔记本键盘的生产,并逐步在行业中崭露头角。通过不断的技术创新和产品优化,达方电子的笔记本键盘逐渐获得了市场的认可,为公司的发展奠定了坚实的基础。

General Transistor Corp公司的发展小趣事

随着全球化进程的加速推进,GTC将目光投向了更广阔的国际市场。公司积极在亚洲、欧洲等地区设立分支机构和生产基地,加强与全球客户的合作与交流。同时,GTC还注重可持续发展,致力于绿色生产和环保技术的研发与应用。公司通过采用环保材料、优化生产工艺等措施,降低了产品对环境的影响,实现了经济效益与社会效益的双赢。

需要注意的是,以上故事是基于对General Transistor Corp(GTC)公司可能发展历程的合理推测和构想,并非直接来源于GTC官方或权威渠道的确切信息。如需了解更多关于GTC公司的具体发展情况,建议直接访问其官方网站或查阅相关行业报告。

Fastron公司的发展小趣事

在电感器领域取得成功后,Fastron并没有止步不前。相反,公司积极拓展业务领域,实现了多元化发展。除了电感器业务外,Fastron还成功运营了大型钣金生产业务,专门生产精密金属外壳和机电组件。此外,Fastron集团还拥有位于德国的Rapid Biomedical公司,为MRI扫描仪定制MR线圈,进一步拓宽了公司的业务范围。

Analogic Corporation公司的发展小趣事

Fastron公司深知产品质量对于企业的重要性。因此,公司建立了严格的质量控制体系,从原材料采购到产品生产、检测等各个环节都实行严格的质量控制和管理。Fastron还引进了先进的检测设备和技术手段,确保每一款产品都符合高标准的质量要求。这种对品质的执着追求使得Fastron的产品在市场上具有极高的竞争力。

Don Connex Electronics Co Ltd公司的发展小趣事

Don Connex Electronics始终将研发创新作为公司的核心竞争力。公司每年将大量资金投入到新技术、新产品的研发中,不断推出具有市场竞争力的产品。同时,公司还积极与高校、科研机构合作,引进高端人才,加强技术研发力量。这些举措使Don Connex Electronics在激烈的市场竞争中始终保持领先地位。

Easy Braid公司的发展小趣事

在技术创新和品质保证的基础上,Easy Braid开始积极拓展市场。公司不仅在国内市场取得了良好的业绩,还逐步将目光投向了国际市场。通过与国外知名企业的合作,Easy Braid成功地将自己的产品打入国际市场,实现了品牌的全球化布局。这一过程中,Easy Braid展现出了强大的市场竞争力和适应能力。

问答坊 | AI 解惑

寻无线防丢器方案或兼职开发

315M到2.4G频率范围,双向带搜寻功能,有效距离在100米以内,一拖五到十. 请联系 陆先生 138 2355 1141…

查看全部问答>

转速传感器

转速传感器 [ 本帖最后由 xhe332523 于 2008-12-10 15:24 编辑 ]…

查看全部问答>

大家看看FPGA PCB调试通的

这个是我调试通的 EP2c8Q208 的FPGA 设计图哈…

查看全部问答>

如何选择传感器

    我想买个采集脉搏信号的的传感器,与电源电路和放大滤波电路相连。大家帮我推荐几款便宜的吧?…

查看全部问答>

nandflash分区问题

现在的情况如下:我用的AT91sam9261的ARM+三星1G的Nandflash,现在是分为了一个32MB的作为内核的区,剩下的作为WINCE下使用,我现在是想把WINCE下面的这部分分成两块来分别使用,一块拿来存注册表,一块拿来存一些数据。请问有没有人做过类似的,或 ...…

查看全部问答>

一个不知道是CE还是ARM的问题?

现在有这样一个情况,有两个系统,A是votex86,B是ARM 7,A上跑CE 6,B上裸奔,A向B通过串口发送数据,串口采用115200bps,1停止位,1偶校验位. 现象是: A向B发送一个字节,B立刻向A回复两字节,如果在B上不做延时(大概进行1500次加法),A就不能保证收到B发送 ...…

查看全部问答>

有没有小型电路板制造设备?

由于科研与教学需要,我们想购买一套用于制作电路板的小型设备,请知道这方面的信息的朋友提供相关信息。设备最好操作简单,不要太复杂。…

查看全部问答>

LED芯片工艺技术介绍

LED 的应用面很广,然而芯片本身价格过高和发光效率有待提升的问题,始终困扰着LED照明 技术的推广普及。发光效率要提升,就要有效增加取出效率。而LED的发光??色和发光效率与制作LED的材料和工艺有关,制造LED的材料不同,可以产生具有不同能量的光子 , ...…

查看全部问答>

9b96

如果想要看懂9b96开发板有关以太网的例程有没有好一点的参考资料啊…

查看全部问答>