TI中文支持网
TI专业的中文技术问题搜集分享网站

请问我现在有一个按键中断程序,我想在按键中断时,打开定时器和定时器中断,应该怎么写呢?

我希望在按键中断中,拉高P1.7,同时定时一分钟,一分钟后拉低P1.7,该怎么写呢?

我目前的代码如下:

#include"msp430g2553.h"

void delay(int time)
{
static int i,j;

for(i=0;i<time;i++)
{ for(j=0;j<128;j++);}

}

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

void InitLed()
{
P1DIR |= BIT7;//设置BIT7为输出
P1OUT &= 0x00; //设置BIT7低电平
}

#pragma vector=PORT1_VECTOR //按键中断
__interrupt void PORT1_ISR(void)
{
static int k;
delay(50);
P1OUT = 0x80;//P1.7置高
P1IFG = 0;//清除中断标识

}

void main()
{

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
//DCOCTL = CALDCO_1MHZ;
//BCSCTL1 = CALBC1_1MHZ;
InitLed(); //初始化输出端口
InitIOInterrupt(); //初始化IO中断
_EINT(); //开总中断
while(1);
}

Susan Yang:

需要注意的是MSP430默认的是关闭中断嵌套的.当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;所以您需要在按键中断中开总中断。

若在中断A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A。注意:进入中断B后总中断同样也会关闭,如 果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;

赞(0)
未经允许不得转载:TI中文支持网 » 请问我现在有一个按键中断程序,我想在按键中断时,打开定时器和定时器中断,应该怎么写呢?
分享到: 更多 (0)