这一篇文章将阐明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;
}