当前位置: 代码迷 >> 单片机 >> 关于按键去抖等的一些有关问题,基础(附完整代码、注释)
  详细解决方案

关于按键去抖等的一些有关问题,基础(附完整代码、注释)

热度:97   发布时间:2016-04-28 15:20:07.0
关于按键去抖等的一些问题,基础(附完整代码、注释)
/******************************************************************************
XWWK-CC2530A模块按键测试程序
Filename:     CC2530KeyTest.c
Target:       cc2530
Revised:      2012-01
Revision:     1.0
Description:

问题:两个按键控制不同灯的状态,但是必须轮流按,才起作用,也即是说,单独按一个键,只执行一次。
备注:每个按键我都独立测试过的,硬件上没有问题,独立测试也都可以实现相应功


******************************************************************************/

#include <ioCC2530.h>
#define uint  unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define RLED   P1_0   //定义LED1为P10口控制
#define GLED   P1_1   //定义LED2为P11口控制
//#define KEY1   P1_2       //定义按键为P12口控制(配置XWWk供电底板)

#define KEY1 P0_1
#define KEY2 P2_0
#define KEY3 P1_2

//函数声明
void Delay(uint); //延时函数声明
void InitIO(void); //初始化函数声明
void InitKey(void);             //初始化按键函数声明
uchar KeyScan(void);            //按键扫描函数声明

uchar Keyvalue = 0 ;           //定义变量记录按键动作
uint  KeyTouchtimes = 0 ;           //定义变量记录按键次数
/****************************
//延时
*****************************/
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
        for(i = 0;i<n;i++);
}
/****************************
//按键初始化
*****************************/
void InitKey(void)
{
    P0SEL &= ~0x01;//按键K1
  P0DIR &= ~0x01;
  P0INP |= 0x01;
  
  P2SEL &= ~0x00;//按键K2
  P2DIR &= ~0x00;
  P2INP |= 0x00;
  
  P1SEL &= ~0x04;//按键K3
  P1DIR &= ~0x04;
  P1INP |= 0x04;  
  
 
  
}
/****************************
//初始化程序,将P10、P11、P14定义为输出口,并将LED灯初始化为灭
*****************************/
  相关解决方案