joystick.c

来自「cc2430的好串口」· C语言 代码 · 共 62 行

C
62
字号

/**************************************JOYSTICK.C*******************************************
文件名  :      JOYSTICK.C
目标    :      cc2430
创建日期:      2008/05/2
修改日期:
版本    :      version 1.0
作者    :      刘旭
功能描述:      提供键盘与用户应用程序的接口,此文件提供了操作键盘的接口函数.
***************************************头文件************************************************/
#include"JOYSTICK.H"

//**********************************函数声明******************************************
void   InitKey(void);     //初始化键盘
INT8U  ScanKey(void);    //键盘扫描函数

//**********************************键盘扫描******************************************
// 函数:  INT8U ScanKey(void)
// 描述:  键盘扫描
// 参数:  无
// 说明:  对键盘扫描一次,取得返回值
// 例如:  ScanKey(void)
//***************************************************************************************
void  InitKey(void)
{
 IO_DIR_PORT_PIN(0, 4, IO_IN);    //设置P0_4为输入
 IO_DIR_PORT_PIN(0, 5, IO_IN);    //设置P0_5为输入
}
//**********************************键盘扫描******************************************
// 函数:  INT8U ScanKey(void)
// 描述:  键盘扫描
// 参数:  无
// 说明:  对键盘扫描一次,取得返回值
// 例如:  ScanKey(void)
//***************************************************************************************
INT8U  ScanKey(void)
{
    INT8U adcValue, i,direction[2];
    for(i = 0; i < 2; i++)
    {
      if(KEY_OK == 0)                  {direction[i]=K_OK;continue;     }     //确认键
      if(KEY_CANCEL == 0)              {direction[i]=K_CANCEL;continue; }     //取消键
      adcValue=HalAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_AIN6);         //AD采样方向断口数据
      if(adcValue < 105&&adcValue>93)  {direction[i] = K_UP;   continue;}     //下移键
      if(adcValue < 35 &&adcValue>29)  {direction[i] = K_LEFT; continue;}     //左移键
      if(adcValue < 70 &&adcValue>60)  {direction[i] = K_DOWN; continue;}     //上移键
      if(adcValue < 5)                 {direction[i] = K_RIGHT;continue;}     //右移键
      else                             {return K_NO;                    }     //空键
    }

    if(direction[0] == direction[1])                                          //相当于延时去抖
    {
     while((INT8U)HalAdcSampleSingle(ADC_REF_AVDD, ADC_8_BIT, ADC_AIN6)<110); //等待按键释放
     return direction[0];
    }
    else
    {
     return K_NO;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?