MSP430F149按键中断寄存器配置

2020-03-17来源: eefocus关键字:MSP430F149  按键中断  寄存器配置

P20~P23为LED,P11为按键。按下为低电平。


使用中断函数按下一次按键则LED状态反转一次。


#include "io430。h"

#include "in430.h"

 

void select_xt2(void){

  unsigned char i;

/*------选择系统主时钟为8MHz-------*/

    BCSCTL1 &= ~XT2OFF;                 

    do{    

        IFG1 &= ~OFIFG;                  //清除晶振失败标志

        for (i = 0xFF; i > 0; i--);     //等待8MHz晶体起振

    }while ((IFG1 & OFIFG));             

    BCSCTL2 |= SELM_2 + SELS  ;        //MCLK和SMCLK选择高频晶振

}

 

void main()

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  P1DIR = 0XFD;   //P1 in or out

  P1IE = 0X02;     //开启P1中断

  P1IES = 0X02;   //中断触发方式

  P1IFG = 0X00;   //中断标志清零

  

  P2DIR = 0XFF;

  P2OUT = 0XFF;

  _EINT();

}

 

#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void)

{

  __delay_cycles(50000);

  if((P1IN&0X02) == 0)

    P2OUT = ~P2OUT;

  __delay_cycles(50000);

}

其中,配置P1端口的中断时要用到的寄存器有:


P1IE,中断使能寄存器,只使能P11的中断:0000,0010 = 0X02


P1IES,中断触发选择寄存器,0上升沿,1下降沿,0000,0010=0X02


P1IFG,中断标志寄存器,清零,0X00


一定要开启全部中断!__EINT();


中断响应函数定义为统一格式:



#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void)

其中,PORT1_VECTOR为头文件中定义了的

关键字:MSP430F149  按键中断  寄存器配置 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic491906.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430F149学习之路——PWM信号
下一篇:MSP432P401R时钟入门

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430F149的DS18B20C语言程序
;   //描述:  延时子程序。    //****************************************************************************   void Delay(unsigned int x)   {       while(x !=0)x--;   }  本程序是以MSP430F149单片机的DS18B20C语言程序,DS18B20的DQ脚连接MSP430单片机的P6.4,把读取到温度值,存放在float类型数组
发表于 2020-03-12
MSP430F149单片机实现uart数据接收中断
******************************************************/#include  <msp430x14x.h>typedef unsigned char uchar;typedef unsigned int  uint;extern void Delays(void);extern uchar GetChar(void);extern void PutChar(uchar c);extern void PutString(uchar *ptr);extern void InitUART(void);static uchar pstr = 'A';/********************主函数
发表于 2020-03-11
MSP430F149单片机实现uart数据接收中断
MSP430F5438内部延时函数的用法
今天看示例程序中出现了__delay_cycles()这个函数,在查找msp430x54x.h这个头文件的时候,发现这个头文件中没有该函数的声明,原来这个函数已经在IAR这个编译器中集成,这里总结一下__delay_cycles();这个函数的具体用法第一步,复制代码:#define CPU_F                               ((double)8000000) #define delay_us(x)   
发表于 2020-03-08
初学MSP430F5529定时器
之前一直感觉定时器有点难,但其实后来发现更多的是中断那块没太懂,中断以后会说的。先简单看下定时器吧。一、基本1.在user’s guide上看到的5529其实有3种定时器,ABD,这三种好像确实有些区别的,但是目前就只看A感觉就够了。2.Timer_A是具有四种操作模式的16位定时器,7个比较器/捕获器3.能够输出PWM波,具有8中PWM波形,但是要注意的是,这种输出只能在外围功能模块里使用,即之前说过的SEL。比如P1.2能够输出Timer_A0的比较器/捕获器1的波形,而在其他管脚上,就没有办法直接输出这种PWM波形。所以如果这个管脚被占用的话,或是不想用这个来整,其实用中断做PWM波也挺好用的。4.能实现串行通信(其实我不太懂
发表于 2020-03-08
MSP430F5529时钟系统深究
1、为什么要进行时钟管理?  时钟系统是一个数字器件的命脉,对于普通的51单片机来说,它的时钟来源只有外部晶振,然后每12个振荡周期完成一个基本操作,所以也叫做12T单片机,但对于当前高级一点的单片机来说,比如MSP430F5529有5个时钟来源,经过UCS(Unified Clock System,通用时钟系统)模块之后,产生MCLK(Master Clock),SMCLK(Subsystem master clock ),ACLK(Auxiliary clock)三个时钟;对于更高端的单片机,比STM32F103ZET6里面有专门用来管理时钟的RCC单元(Reset Clock Control),也就是通常所说的时钟树
发表于 2020-03-08
MSP430F5529时钟系统深究
基于MSP430F5529的按键消抖问题
注:板子:MSP430F5529 开发环境:CCSv5上一篇博文发了按键中断的例程和详细的注释,但是好像把程序烧进单片机之后执行效果并不是很好:每按一次按键灯的状态不一定只改变一次,有时灯本来是亮的,按一次后还是亮的;或者按下去之后灯灭了,按键抬起来之后灯又亮了。造成该现象的原因就是按键的抖动问题。按键的抖动一般是机械性抖动,当开关断开或闭合时接触点处不会一下子接通也不会一下子断开,而是会产生轻微的抖动导致电路的多次接通和断开,这个过程大致会持续5ms-10ms。想像一下如果中断程序是瞬间完成的,那么接触点每抖动一下都会引起一次中断,所以就会引起按下按键后灯的状态改变次数是不确定的,也就是效果和我们的预期不一致;由于按下和抬起时
发表于 2020-03-08
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
澳门赌场送彩金 澳客彩票 在线送彩金真钱赌博 澳门赌场送彩金 时时彩平台推荐网站送彩金 送彩金500的网站大白菜不看id 永利高网上注册送彩金 送彩金扎金花 娱乐平台充值送彩金 下载就送彩金的棋牌