⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c

📁 arm7 实验箱 关于步进直流电机驱动程序和步进电机的一些应用
💻 C
字号:
/****************************************Copyright (c)**************************************************/
/**                                
;**                                 西南科技大学计算机科学学院
;**                                   
;**                                http://www.cs.suswt.edu.cn
;**            
;**             日期:   2007/10/08
;**             描述:   西南科技大学计算机学院CS-II型实验板键盘驱动工作程序,实现键盘轮转扫描,并显示相应 
;**                      数据
;**             作者:
;**
;**--------------key.c文件
;**------------------------------------------------------------------------------------------------------*/

/**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define _KEY_C_
#ifdef  _KEY_C_

/************************************************
 *          Header File                         * 
 ***********************************************/
 #include"config.h"
 #include"key.h"
/************************************************
 *          Globale variable					*
 ***********************************************/
 uint8 key_data=0x0f;//键盘初始状态 
/*******************************************************************************
Function Name:	void KEYShift(uint8 mode)   								   *
Function Description :	进行轮转扫描时进行数据移位操作						   *	
*******************************************************************************/
void KEYShift(uint8 mode)                      //如果mode是0就将KEY_SI置零 如果mode是1就将KEY_SI置1
{
  
     IO0CLR=KEY_RCLK;                          //RCLK=0x00
     	
	 IO0CLR=KEY_SRCLK;                         //SRCLK=0
		if((mode&0x01)==0x00)                  //该位为0
		    {
		        IO0CLR = KEY_SI;
		    }
		else
		    {
		        IO0SET = KEY_SI;
		    } 
	IO0SET=KEY_SRCLK;                           //SLK=1
	 
    IO0SET=KEY_RCLK;                           //RCK=0x00 
}

/*******************************************************************************
Function Name:	 uint8 KEYScan(void)										   *
Function Description :	键盘扫描函数,进行轮转扫描							   *	
*******************************************************************************/
uint8 tmp = 0x00; 
uint8 KEYScan(void)
{
 
 //KeyData变化范围为0x00----0x0f
 //扫描过程
 //先进行键盘判断上次键盘的判断
  
  if((IO0PIN&KEY_KEY)==0)                     //有键按下(IO0PIN&KEY_KEY)== 0,即key位为0
    {       
       tmp = key_data;             
       return key_data;
    }                                         //如果有键盘按下,连续对该键进行扫描,返回该键键值。
  else
    {
       if(key_data==0x0f)
         {
           key_data=0x00;
           KEYShift(0);
         }
       else
         {
           key_data++;
           KEYShift(1);
         }   
      return tmp;//0x10;    
    }                                         //没有键盘按下,进行扫描轮转。
}

/*******************************************************************************
Function Name        : void KEYInit(void)									   *
Function Description : 键盘的初始化程序,包括设置引脚链接模块,引脚输入输出设置*	
*******************************************************************************/
void KEYInit(void)
{
    PINSEL0&=KEY_PINSEL;                      //端口选择,这里选择P0.4~P0.7实现GPIO功能
    IO0DIR|=KEY_SRCLK;                        //方向输出
    IO0DIR|=KEY_RCLK;                         //方向输出
    IO0DIR|=KEY_SI;                           //方向输出
    IO0DIR&=(KEY_KEY^0XFFFFFFFF);             //方向输入    
}

#endif
/*****************************************************************************
 *                         End of Entire File                                *
 ****************************************************************************/


⌨️ 快捷键说明

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