历史上的今天
返回首页

历史上的今天

今天是:2025年01月13日(星期一)

正在发生

2020年01月13日 | MSP430-中断的使用

2020-01-13 来源:eefocus

因为MSP430的操作是在寄存器上进行直接操作的,所以学习起来有一点繁琐,不像32,他有自己分装好的库可以提供大家使用,介绍中断,那就要了解下中断有关的寄存器:

这里写按键中断作为测试程序:


#ifndef  __CLOCK_H

#define  __CLOCK_H

#define uchar unsigned char 

#define uint unsigned int

void Int_Clk(void);

#endif

 


#include

#include "clock.h"

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

                初始化时钟

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

void Int_Clk(void)

{

  uchar i;

  BCSCTL1&=~XT2OFF;     //开启XT2振荡器

  BCSCTL2|=SELM_2+SELS;    //选择MCLK时钟源为XT2CLK;选择SMCLK时钟源为XT2CLK

  

  do

  {

    IFG1&=~OFIFG;

    for(i=0;i<100;i++)

      _NOP();

  } 

  while((IFG1&OFIFG)!=0);

  IFG1&=~OFIFG;  

}

 

 

#include

#include "clock.h"

 

#define keyin    (P1IN & 0x03)

 

uchar KeyVal = 0;   // 按键的键值

uchar i=0;

 

void delay(void);

 

int main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  Int_Clk();

  P1IES = 0x03;               // P1.0~P1.3选择下降沿中断

  P1IE  = 0x03;               // 打开中断使能

  P1DIR &=~ (BIT0+BIT1);               //设置P1.0~P1.3为输入状态

  P2DIR = 0xff;    

  P2OUT = 0xff;

  _EINT();                    //打开全局中断控制位

  while(1)

  {

    switch(KeyVal)    //转换键值    

              {

               case 1:P2OUT&=~BIT0;KeyVal=0;break;

               case 2:P2OUT&=~BIT1;KeyVal=0;break;

               case 3:P2OUT&=~BIT2;KeyVal=0;break; 

               default:break;

               }

              delay();

              delay();

              delay();

              delay();

              delay();

              delay();

            P2OUT = 0xff;

  }

  return 0;

}

 

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

函数名称:delay

功    能:用于消抖的延时

参    数:无

返回值  :无

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

void delay(void)

{

    uint tmp;

    

    for(tmp = 12000;tmp > 0;tmp--);

}

 

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

函数名称:PORT1_ISR 

功    能:P1端口的中断服务函数

参    数:无

返回值  :无

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

#pragma vector=PORT1_VECTOR

__interrupt void  PORT1_ISR(void)

{

   

        switch(P1IFG)    

        {

        case 0x01:

                    if(keyin == 0x02)  //è?1?ê?μúò???°′?ü±?°′??

                    {

                        delay();

                        if(keyin == 0x02)

                        {

                            while(keyin != 0x03);       //μè′y°′?ü·??a

                            KeyVal = 1;

                            P1IFG = 0;

                            break;   

                        }

                    }

        case 0x02:

                    if(keyin == 0x01)   //è?1?ê?μú?t??°′?ü±?°′??

                    {

                        delay();

                        if(keyin == 0x01)

                        {

                            while(keyin != 0x03);       //μè′y°′?ü·??a

                            KeyVal = 2;

                            P1IFG = 0;

                            break;

                        }

                    }

        default:P1IFG = 0;break;

                 

        }

 

    }

推荐阅读

史海拾趣

Elpakco Inc公司的发展小趣事

面对全球化的市场竞争,Elpakco Inc公司积极实施全球化战略。公司先后在欧美、亚洲等地设立了分支机构,与当地企业开展合作,共同开拓市场。同时,公司还积极参加国际电子展会,展示公司的最新技术和产品,提升了公司的国际知名度和影响力。

Easy Magnet Corp公司的发展小趣事

为了拓宽市场渠道,Easy Magnet Corp公司积极寻求与国际知名企业的合作。通过与国外企业的技术交流和合作研发,公司不仅获得了先进的生产技术和管理经验,还成功地将产品推向了国际市场。这一过程中,公司不仅提升了品牌影响力,还增强了自身的研发实力和市场竞争力。

DCCOM [ DC COMPONENTS ]公司的发展小趣事

DCCOM公司自创立之初,就注重技术创新和研发投入。在成立初期,公司研发团队成功开发出一种具有高性能和低功耗特点的电子元件,这一创新技术迅速赢得了市场的认可。随着技术的不断迭代和升级,DCCOM逐渐在电子元件市场上占据了一席之地。

Carlo Gavazzi公司的发展小趣事

为了进一步拓展市场,Carlo Gavazzi公司开始实施国际化战略。公司先后在多个国家和地区设立销售和服务团队,将产品和服务推向全球市场。这一过程中,公司不仅面临着文化差异和市场环境的挑战,也积极寻求与当地企业的合作与共赢。通过不断努力,公司逐渐在全球范围内建立起自己的品牌形象和市场地位。

Digilent公司的发展小趣事

在全球节能意识日益增强的背景下,DIALIGHT致力于推动绿色照明的发展。公司的LED产品具有高效节能、长寿命和环保等优点,有助于减少能源消耗和环境污染。此外,DIALIGHT还积极参与各种绿色照明项目,为推动可持续发展贡献自己的力量。

Datatronic公司的发展小趣事

随着全球化趋势的加速,Datatronic公司开始将目光投向国际市场。公司通过参加国际展览、设立海外办事处等方式,积极拓展海外市场。同时,公司还加强了与国际企业的合作,引进先进的技术和管理经验。这些努力使得Datatronic公司在国际市场上逐渐获得了认可,品牌影响力得到了提升。

问答坊 | AI 解惑

一种新型雷达信号模拟器设计

摘 要:设计了一种新型雷达信号模拟器,能够提供多种特殊雷达信号,并且设置灵活方便,当用户需要时,可进行软件升级。介绍了该雷达信号模拟器的功能、特点、性能指标和研制方案,提供一种雷达信号产生的解决方法。…

查看全部问答>

基本功放问题,

我是一个才进入应用电子的学生,今年的学习是模拟电子技术,而老师的第一堂课就是这个图,要求我们今年做一个这个功放为成绩,但是我拿着这个电路是蒙的,撒意思都不懂(电容在里面干撒的...等等),麻烦大哥们给我解释这个电路(详细点)!!还有 ...…

查看全部问答>

【招聘】奥笙北京软件招聘信息(新增深圳软件技术支持职位)(论坛xdjm优先)

由于不能删帖,只能重新发一篇招聘信息了,注意哦,论坛的兄弟姐妹们优先。论坛的兄姐妹们有意可以直接发邮件给我:jandy.wang@orpheusys.com, 奥笙公司软件部门招聘信息(北京职位) 公司简介    奥笙时代科技(北京)有限公司(www. ...…

查看全部问答>

求助。。LED数码管型号问题

我想问下,下面图是电子脉搏计的图,那个四脚的LED接四个脚就可以控制0-9显示了,(仿真软件里有看到8脚和4脚的两种)但它是什么型号的LED呢?我现在想做实物要用到那种四脚的,可不知道那种到底有没有,上网查也没查到。。在下超级小白,希望各位 ...…

查看全部问答>

嵌入式安全芯片在电子产品版权保护领域的应用

PC软件的盗版一直是困扰软件行业发展的主要问题,同样,在嵌入式应用领域,随着近些年黑客技术和芯片解剖技术的发展,嵌入式系统所面临的攻击也越来越多,随之而生的防抄板技术也引起了产品设计者的重视。 有一款加密芯片ESPU0808是针对防抄设计的 ...…

查看全部问答>

WCE下的ToolTip

我最近研究WCE下的SDK编程的ToolTip的使用,发现同样的代码,VC可以正常,而EVC就是不能正常使用ToolTip,大家有任何关于WCE的ToolTip的代码不,发个来参考下。 贴上来或者发到我邮箱都可以:magic_kaoya@163.com…

查看全部问答>

不安全状态一定导致死锁状态吗?

不安全状态一定导致死锁状态吗? 不安全状态是指不存在任何一个安全序列,那最终结果将导致死锁吧, 有没可能当前处于不安全状态,有不会导致死锁呢? 我搜了搜,有的说一定会,一定说不一定,到底答案是什么?…

查看全部问答>

MSP430学习笔记之十一:RF2500库

我这几天又有点忙,不过我有空还是搞了下EZ430-RF2500 看了下库: 觉得不错唉: 首先这个库可以在任何MSP430单片机上实现,设立这个库的目地就是为了RF2500能很方便地同MSP430单片机接口 传一下我找的资料从资料来看这个库很好理解,只要修下定 ...…

查看全部问答>

求助[中断向量链接错误]

Error[e16]: Segment INTVEC (size: 0x10000 align: 0x1) is too long for segment definition. At least 0xffe0 more bytes needed. The pro××em occurred while processing the segment placement command "-Z(CODE)INTVEC=FFE0-FFFF", whe ...…

查看全部问答>