功能
上电后灯全灭,按一下按键1流水灯开始工作,再按一下保持流水灯当前状态,再按一下流水灯继续工作
代码
#include "ioCC2530.h"
#define d3 P1_0
#define d4 P1_1
#define sw P1_2
#define d5 P1_3
#define d6 P1_4
int c;
int flag = 1; //如果这里是0就需要按两下按键才能开始流水动作
void delay(unsigned int time){
unsigned int i;
unsigned char j;
for(i = 0;i < time;i++){
for(j = 0;j < 240;j++){
asm("NOP");
asm("NOP");
asm("NOP");
while(flag); //这里是通过中断来改变0和1
}
}
}
void port_init(){
P1SEL &= ~0X1b;
P1DIR |= 0x1B;
P1 &= ~0X1b;
P1DIR |= ~0X04;
P1INP &= ~0x04;
P2INP &= ~0x40;
IEN2 |= 0X10; //
P1IEN |= 0x04; //中断配置
PICTL |= 0x02; //
EA = 1; //
}
void led(){
d4 = 1;
d3 = 0;
d6 = 0;
d5 = 0;
delay(6000);
d4 = 0;
d3 = 1;
d6 = 0;
d5 = 0;
delay(6000);
d4 = 0;
d3 = 0;
d6 = 1;
d5 = 0;
delay(6000);
d4 = 0;
d3 = 0;
d6 = 0;
d5 = 1;
delay(6000);
}
#pragma vector = P1INT_VECTOR
__interrupt void p1int(){
if(P1IFG & 0x04){
if(flag == 0){
flag = 1;
}else{
flag = 0;
}
P1IFG &= ~0X04;
}
P1IF = 0; //清零
}
void main(void){
port_init();
while(1){
if(sw == 0){
delay(5);
if(sw == 0){
while(!sw);
while(1){
led(); //这里是为了中断的执行所以要使它进入while循环下
}
}
}
}
}
_贡献自己的小笔记_```