单片机
返回首页

MSP430F149按键中断寄存器配置

2020-03-17 来源:eefocus

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为头文件中定义了的

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 如何构建一个触摸传感器电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章