原创 键盘扫描

2008-1-23 09:38 2895 6 6 分类: MCU/ 嵌入式

昨天写了个键盘扫描的程序,最开始调试的时候,变量lCode一直不能赋值,后来将其声明为静态变量,就好了,再改回原来默认的变量也没有问题,不知道什么原因,哪位大侠知道给指点一下


 


/*******************************************************************/
//模 块 名: 键盘扫描
//创 建 者: 好心情
//修 改 者:
//功能描述: 行列线扫描方式驱动 4*4,含有按下去抖和弹起去抖
//其他说明: 51上运行通过,晶振12M
//版    本: V1.0
//日    期:  2008-1-18
/*******************************************************************/


//-------------------------------------------------------------------
#ifndef _keyDriver_h_ //防止重复引用
#define _keyDriver_h_
//-------------------------------------------------------------------


#include"userdefined.h"
#include"yanshi.h"
//#include"ledDriver.h"


/****************************常量定义*******************************/
#define keyPort P2   //定义键盘接口
/****************************函数声明*******************************/
code unsigned char stop[3] _at_ 0x3B;   //Mon51用!


//-------------------------------------------------------------------
#endif



//---------------------------函数实现-------------------------------//
uchar keyScan()
{
   uchar rCode;      //保存行码
 uchar lCode;   //保存列码  


 keyPort = 0xf0;      //初始化端口,准备扫描 11110000


 if(keyPort != 0xf0)      //如果有按键动作 
 {
  delay_1ms(10);     //延时去抖
  if(keyPort != 0xf0)    //再次检测按键,去抖
  {
   rCode = (~keyPort) & 0xf0; //保存列码    
   keyPort = 0x0f;    //翻转行列电平,判断行码 00001111 
   lCode = (~keyPort) & 0x0f; //保存行码
  
   do{       //按键弹起去抖
    keyPort = 0x0f;   
    delay_1ms(10);
   }while(keyPort != 0x0f);
   
   return (rCode | lCode);  //得到特征码并将其返回
  }
 }
 return (0);
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条