昨天写了个键盘扫描的程序,最开始调试的时候,变量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);
}
文章评论(0条评论)
登录后参与讨论