1.新建IAR工程文件,完成按键控制Zigbee单片机上的LED的亮灭功能,模拟社区灯光控制,具体要求如下:(简单)
(1)程序开始运行,D4灯闪烁,D3、D5、D6灯灭
(2)按下模块上的“SW1”键,实现D5、D6灯轮流闪烁;
(3)再次按下,D5、D6灯灭
(4)重复上述二个步骤
解题思路:1.闪烁?d4 = 1;延迟 d4 = 0;进行循环执行,其他灯保持灭的状态
2.按键?实现按键初始化判断按键是否按下 闪烁?和1.一样先执行d5再闪烁再执行d6
3.判断按键按下,实现灯熄灭
4.重复?让程序返回到最开始进行循环执行
#include "ioCC2530.h"
#define d3 P1_0
#define d4 P1_1
#define d5 P1_3
#define d6 P1_4
#define sw1 P1_2
void delay(unsigned int z)
{
unsigned int i,j;
for(i=0;i<z;i++)
for(j=0;j<535;j++);
}
void Init_prot()
{
P1DIR &= ~0x1b;
P1DIR |= 0x1b;
P1 &= ~0x1b;
}
int f = 0;
int count = 0;
int c = 0;
int flag =0;
void Scan_prot()
{
if(sw1 == 0)
{
delay(5);
if(sw1 == 0)
{
while(!sw1);
count++;
}
}
}
void main()
{
int d = 0;
Init_prot();
while(1)
{
++d;
if(d==1)
{
d4 = 1;
}
if(d==5)
{
d4 = 0;
d = 0;
}
if(sw1 == 0)
{
delay(5);
if(sw1 == 0)
{
while(sw1 == 0);
count++;
}
}
if(count == 1)
{
c = 1;
}
if(count == 2)
{
c = 2;
count = 0;
}
if(c == 1)
{
if(flag==1)
{
d5 = 1;
}
if(flag==3)
{
d5 = 0;
}
if(flag==5)
{
d6 = 1;
}
if(flag==7)
{
d6 = 0;
}
if(++flag == 9)
{
flag = 1;
}
}
if(c == 2)
{
delay(1);
d5 = d6 = 0;
}
delay(50);
}
}