基于MSP430G2553的IO外部中断配置说明

控制/MCU

1811人已加入

描述

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

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

在实例代码中,配置了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;

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分