cc2530-projects/waterfullLight/source/code.c
2021-09-24 23:06:46 +08:00

102 lines
2.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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();
}
}