#include "studio.h"
unsigned char flag;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TACCTL0=CCIE;//开启定时器A中断
TACCR0=1000-1;
TACTL=TASSEL_1+ID_3+TACLR+MC_1;//选择ACLK作为时钟源,时钟八分频,定时器清除位
P1DIR = 0x9F;
P1OUT = 0x00;
P2DIR = 0xFF;
P2OUT = 0x00;
P3DIR = 0xFF;
P3OUT = 0x00;
P4DIR = 0xFF;
P4OUT = 0x00;
P5DIR = 0xFF;
P5OUT = 0x00;
P6DIR = 0xFF;
P6OUT = 0x00;
/****P1.5中断触发********/
P1IES^=BIT5;//设置为上升沿触发
P1IFG&=~BIT5;//清除终端标志位
P1IE|=BIT5;//设置终端使能
/*****P1.6中断触发******/
P1DIR&=~BIT6;//中断引脚P1.6设置为输入端口
P1IES|=BIT6;//设置为下降沿触发
P1IFG&=~BIT6;//清除终端标志位
P1IE|=BIT6;//设置终端使能
//P1DIR|=BIT0;//MCU工作状态标志
_EINT();
__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
while(1)
{
//__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
}
}
#pragma vector =PORT1_VECTOR
__interrupt void P1_Interrupt(void)
{
if((P1IFG&0X40)==BIT6)//判断TLV3691是否产生低电平中断信号
{
P1IFG&=~BIT6;//中断标志清除
P2OUT&= ~(BIT7);//P2.0 LED等灭
flag=0;
//__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
}
else if((P1IFG&0X20)==BIT5)//判断TLV3691是否产生高电平中断信号
{
P1IFG&=~BIT5;//中断标志清除
//__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
P2OUT|=BIT7;//P2.0 LED灯亮
flag=1;
}
}
#pragma vector =TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
if(flag==1)
{
P1OUT^=BIT1;
}
else if(flag==0)
{
P1OUT&=~(BIT1);
}
}
#include "studio.h"
unsigned char flag;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TACCTL0=CCIE;//开启定时器A中断
TACCR0=1000-1;
TACTL=TASSEL_1+ID_3+TACLR+MC_1;//选择ACLK作为时钟源,时钟八分频,定时器清除位
P1DIR = 0x9F;
P1OUT = 0x00;
P2DIR = 0xFF;
P2OUT = 0x00;
P3DIR = 0xFF;
P3OUT = 0x00;
P4DIR = 0xFF;
P4OUT = 0x00;
P5DIR = 0xFF;
P5OUT = 0x00;
P6DIR = 0xFF;
P6OUT = 0x00;
/****P1.5中断触发********/
P1IES^=BIT5;//设置为上升沿触发
P1IFG&=~BIT5;//清除终端标志位
P1IE|=BIT5;//设置终端使能
/*****P1.6中断触发******/
P1DIR&=~BIT6;//中断引脚P1.6设置为输入端口
P1IES|=BIT6;//设置为下降沿触发
P1IFG&=~BIT6;//清除终端标志位
P1IE|=BIT6;//设置终端使能
//P1DIR|=BIT0;//MCU工作状态标志
_EINT();
__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
while(1)
{
//__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
}
}
#pragma vector =PORT1_VECTOR
__interrupt void P1_Interrupt(void)
{
if((P1IFG&0X40)==BIT6)//判断TLV3691是否产生低电平中断信号
{
P1IFG&=~BIT6;//中断标志清除
P2OUT&= ~(BIT7);//P2.0 LED等灭
flag=0;
//__bis_SR_register(LPM3_bits ); // Enter LPM3, enable interrupts
}
else if((P1IFG&0X20)==BIT5)//判断TLV3691是否产生高电平中断信号
{
P1IFG&=~BIT5;//中断标志清除
//__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)
P2OUT|=BIT7;//P2.0 LED灯亮
flag=1;
}
}
#pragma vector =TIMERA0_VECTOR
__interrupt void TIMER_A(void)
{
if(flag==1)
{
P1OUT^=BIT1;
}
else if(flag==0)
{
P1OUT&=~(BIT1);
}
}
举报