102 lines
2.2 KiB
C
102 lines
2.2 KiB
C
#include<ioCC2530.h>
|
||
#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();
|
||
}
|
||
}
|