#include #define LED1 P1_0 #define LED2 P1_1 /** * * Ten Group * Member:LXS,CJL,XJW,LHW * DATE:2021-9-17 * */ unsigned char interrupt_flag = 0; //0:未打断 1:打断 unsigned char initial_flag = 1; //初始化标志位 void delay(unsigned int countdown){ unsigned int i,j; for(i = 0; i < countdown; i++){ for(j = 0; j < 1024; j++); } } void initial_gpio(void){ P1SEL &=~0X07; P1DIR |= 0X03; P1DIR &=~0X04; P1INP &=~0X04; P2INP &=~0X40; P1 &=~0X03; } void initial_interrupt(void){ EA = 1; IEN2 |=0X10; P1IEN |=0X04; PICTL |=0X02; } #pragma vector = P1INT_VECTOR __interrupt void interrupt_control(void){ if(P1IFG & 0X04){ if(interrupt_flag){ interrupt_flag = 0; }else{ interrupt_flag = 1; } } P1IF = 0X00; P1IFG = 0X00; } void waterfullLightStatus(void){ unsigned char status_flag = 0; if(!interrupt_flag){ if(initial_flag){ LED1 = 1;delay(50); LED2 = 1;delay(50); LED1 = 0;delay(50); LED2 = 0;delay(50); initial_flag = 0; } if(LED1 == 1 && LED2 == 0){ status_flag = 1; }else if(LED1 == 0 && LED2 ==1){ status_flag = 0; } switch(status_flag){ case 0: LED1 = 0;delay(50); LED2 = 1;delay(50); LED1 = 1;delay(50); LED2 = 0;delay(50); break; case 1: LED1 = 1;delay(50); LED2 = 0;delay(50); LED2 = 1;delay(100); LED1 = 0;delay(50); break; default: status_flag = 0; } }else{ if(LED1){ LED1 = 1; }else if(!LED1){ LED1 = 0; }else if(!LED2){ LED2 = 0; }else if(LED2){ LED2 = 1; } } } void main(void){ initial_gpio(); initial_interrupt(); for(;;){ waterfullLightStatus(); } }