MSP430G2553(一)IO外部中断说明…

这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。

在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。

所有寄存器的具体名称和地址,可以查看M430G2553 datasheet 第 21页中对于P1的寄存器定义


在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮

1.按键的中断配置

要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性,

P1DIR &= ~BIT3;//设置P1.3为输入
  P1REN |= BIT3;//启用P1.3电阻

在启用电阻后,由P1OUT来配置下拉还是上拉
  P1OUT |= BIT3;//设置上拉电阻

通过P1IES寄存器设置上升沿,0为下降沿
  P1IES |= BIT3;//P1.3中断边缘选择


需要对P1的中断进行使能,除了这里还有总中断需要使能(在main函数中)
  P1IE |= BIT3;//P1.3中断使能

=====================================================================

2.中断处理函数


在中断处理函数中处理LED程序

编译器指示
#pragma vector=PORT1_VECTOR


__interrupt void PORT1_ISR(void)
{
 
  delay(100);//约100ms
    P1OUT ^= (1<<6);                  //反向P1.0和P1.6
    P1OUT ^= (1<<0);
    P1IFG = 0;//清除中断标识

}







=====================================================================





源代码:


//P1.0---------Red Led
//P1.3---------Button
//P1.6---------Green Led

#include "msp430g2553.h"



//名称:delay(int time)
//功能:延时程序
void delay(int time)
{
  static int i,j;
 
 
  for(i=0;i
      for(j=0;j<100;j++)
      {
      }
}


//名称:InitLed()
//功能:初始化LED
void InitLed()
{
  P1DIR |= BIT0+BIT6;//设置BIT0和BIT6为输出
  P1OUT &= ~0x01; //设置BIT0和BIT6低电平
  P1OUT |= 0x40; //设置BIT0和BIT6低电平
}



//名称:InitIOInterrupt()
//功能:初始化P1的按键中断配置
void InitIOInterrupt()
{
  P1DIR &= ~BIT3;//设置P1.3为输入
  P1REN |= BIT3;//启用P1.3电阻
  P1OUT |= BIT3;//设置上拉电阻
  P1IES |= BIT3;//P1.3中断边缘选择
  P1IE |= BIT3;//P1.3中断使能
  P1IFG = 0x00;//清除中断标识
}





//名称:PORT1_ISR(void)
//功能:按键中断的处理函数
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
 
  delay(100);//约100ms
    P1OUT ^= (1<<6);
    P1OUT ^= (1<<0);
    P1IFG = 0;//清除中断标识

}

int main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
  InitLed();                                        //初始化LED端口
  InitIOInterrupt();                        //初始化IO中断
  _EINT();                                                //开总中断
  while(1);
  return 0;
}









  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值