历史上的今天
今天是: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; } }
上一篇:MSP430-流水灯和key
史海拾趣
|
摘 要:设计了一种新型雷达信号模拟器,能够提供多种特殊雷达信号,并且设置灵活方便,当用户需要时,可进行软件升级。介绍了该雷达信号模拟器的功能、特点、性能指标和研制方案,提供一种雷达信号产生的解决方法。… 查看全部问答> |
|
【招聘】奥笙北京软件招聘信息(新增深圳软件技术支持职位)(论坛xdjm优先) 由于不能删帖,只能重新发一篇招聘信息了,注意哦,论坛的兄弟姐妹们优先。论坛的兄姐妹们有意可以直接发邮件给我:jandy.wang@orpheusys.com, 奥笙公司软件部门招聘信息(北京职位) 公司简介 奥笙时代科技(北京)有限公司(www. ...… 查看全部问答> |
|
我想问下,下面图是电子脉搏计的图,那个四脚的LED接四个脚就可以控制0-9显示了,(仿真软件里有看到8脚和4脚的两种)但它是什么型号的LED呢?我现在想做实物要用到那种四脚的,可不知道那种到底有没有,上网查也没查到。。在下超级小白,希望各位 ...… 查看全部问答> |
|
PC软件的盗版一直是困扰软件行业发展的主要问题,同样,在嵌入式应用领域,随着近些年黑客技术和芯片解剖技术的发展,嵌入式系统所面临的攻击也越来越多,随之而生的防抄板技术也引起了产品设计者的重视。 有一款加密芯片ESPU0808是针对防抄设计的 ...… 查看全部问答> |
|
我最近研究WCE下的SDK编程的ToolTip的使用,发现同样的代码,VC可以正常,而EVC就是不能正常使用ToolTip,大家有任何关于WCE的ToolTip的代码不,发个来参考下。 贴上来或者发到我邮箱都可以:magic_kaoya@163.com… 查看全部问答> |
|
不安全状态一定导致死锁状态吗? 不安全状态是指不存在任何一个安全序列,那最终结果将导致死锁吧, 有没可能当前处于不安全状态,有不会导致死锁呢? 我搜了搜,有的说一定会,一定说不一定,到底答案是什么?… 查看全部问答> |
|
我这几天又有点忙,不过我有空还是搞了下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 ...… 查看全部问答> |




