zigbeeCC2530的按键触发题型
题目:单片机
- 按键按下抬起led灯点亮
- 按键按下led灯点亮
按键按下抬起led灯点亮
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0 //LED1为P1.0口控制
#define KEY1 P0_4 //KEY1为P0.1口控制
void Delayms(uint); //延时函数
void InitLed(void); //初始化LED1
void KeyInit(); //按键初始化
uchar KeyScan(); //按键扫描程序
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--);
}
void InitLed(void)
{
P1DIR |= 0x01; //P1_0定义为输出
LED1 = 1; //LED1灯熄灭
}
void InitKey()
{
P0SEL &= ~0X10; //设置P04为普通IO口
P0DIR &= ~0X10; //按键在P04 口,设置为输入模式
P0INP &= ~0x10; //打开P04上拉电阻,不影响
}
uchar KeyScan(void)
{
if(KEY1==0)
{Delayms(10);
if(KEY1==0)
{
while(!KEY1); //松手检测
return 1; //有按键按下
}
}
return 0; //无按键按下
}
void main(void)
{
InitLed(); //调用初始化函数
InitKey();
while(1)
{
if(KeyScan()) //按键改变LED状态
LED1=~LED1;
}
}
按键按下led灯点亮
#include <ioCC2530.h>
#define D1 P1_0
#define SW1 P0_0
#define uint unsigned int
#define uchar unsigned char
void init()
{
P1SEL &=~0X01;
P1DIR |=0X01;
D1=0;
P0SEL &=~0X01;
P0DIR &=~0X01;
}
void delay(uint xms)
{
uint i,j;
for (i=0;i<xms;i++)
for (j=0;j<240;j++)
{
asm("NOP");
asm("NOP");
asm("NOP");
}
}
uint keyscan()
{
if(SW1==0)
{
delay(100);
if(SW1==0){
while(!SW1);
return 1;
}
}
return 0;
}
int main(void)
{
init();
while(1)
{
if(keyscan()==1)
D1=!D1;
}
}
由于该博客不涉及到中断操作,使用的是简单的触发方式。