我编了一个中断唤醒的程序,对应的键按下则对应的LED点亮,没有中断时处于低功耗模式3,中断来了就唤醒,可是编好了程序烧进去单片机并没有反应,有没有哪个老师知道我错在哪了
#include <msp430x14x.h>
#include "config.h"
void key_process_0(void);
void key_process_1(void);
void key_process_2(void);
void key_process_3(void);
void key_check(void);
uint key_value=0x00;
void main()
{
WDT_Init();
Clock_Init();
Port_init();
delay_ms(100);
key_value=0x00;
_EINT();
LPM3;
while(1){
P1IE &=~0x0f;
P1IFG &=~0x0f;
key_check();
if(key_value==0x01)
{
key_process_0();
}
if(key_value==0x02)
{
key_process_1();
}
if(key_value==0x03)
{
key_process_2();
}
if(key_value==0x04)
{
key_process_3();
}
key_value=0x00;
P1IE |=0x0f;
P1IFG &=~0x0f;
LPM3;
}
}
void key_check(void)
{
delay_ms(100);
if(0xff!=P1IN|0xf0)
{
while(0xff!=P1IN|0xf0);
}
else
{
key_value=0x00;
}
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT_1(void)
{
switch(P1IFG&0x0f)
{
case 0x01:key_value=0x01;
break;
case 0x02:key_value=0x02;
break;
case 0x04:key_value=0x03;
break;
case 0x08:key_value=0x04;
break;
default:P1IFG=0x00;
break;
}
P1IFG &=~0x0f;
LPM3_EXIT;
}
void key_process_0(void)
{
P6OUT &=~BIT0;
delay_ms(1000);
P6OUT |=BIT0;
delay_ms(1000);
P6OUT &=~BIT0;
delay_ms(1000);
P6OUT |=BIT0;
}
void key_process_1(void)
{
P6OUT &=~BIT1;
delay_ms(1000);
P6OUT |=BIT1;
delay_ms(1000);
P6OUT &=~BIT1;
delay_ms(1000);
P6OUT |=BIT1;
}
void key_process_2(void)
{
P6OUT &=~BIT2;
delay_ms(1000);
P6OUT |=BIT2;
delay_ms(1000);
P6OUT &=~BIT2;
delay_ms(1000);
P6OUT |=BIT2;
}
void key_process_3(void)
{
P6OUT &=~BIT3;
delay_ms(1000);
P6OUT |=BIT3;
delay_ms(1000);
P6OUT &=~BIT3;
delay_ms(1000);
P6OUT |=BIT3;
}
|