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

📄 key.h

📁 主要有基于51的I2c读写24c64的测试程序
💻 H
字号:
/*
********************************************************************
** 文件名   : key.H
** 创建人   :qixi.qin
** 创建日期 :2008.11.4
** 说明     :改用其它端口时主意有宏定义, 本驱动使用P2口
** 联系     : 广西民族大学 06自动化 dongxixiaonanbi@163.com
********************************************************************
*/
#ifndef  _KEY_H_
#define  _KEY_H_

#include <AT89x52.h>

#define uchar unsigned char
#define uint  unsigned int

//宏定义
#define KEYPORT P2


//函数声明
uchar KeyScan44( void );

/*
********************************************************************
** 函数名			:4*4按键扫描程序
** 例子  			: uchar key;        key = KeyScan44();  
** 说明             : 内部延时1ms除抖动
** 宏定义按键端口	:KEYPORT
********************************************************************
*/
uchar KeyScan44( void )
{
    uchar PL = 0;         //低四位作输入时    
    uchar PH = 0;         //高四位
    uchar i  = 0;
    uchar key = 0;
    
    KEYPORT = 0x0f;     //初始时, 低四位输入,高四位输出
    if( ( KEYPORT & 0x0f ) != 0x0f )           //如果有键按下
    {
        delay_nms( 1 );              //消抖动
        if( ( KEYPORT & 0x0f ) != 0x0f )       //确定有键按下
		{
            PL = ~( KEYPORT | 0xf0 );     //PL存的是低四位中有键按下的位置位,用1标志。如PL = 0000 0010, 表明位1的口线有键按下

        	KEYPORT = 0xf0;                    //反过来,高四位输入,低四位输出
            PH = ~( KEYPORT | 0x0f );          //PH存的是高四位中有键按下的位置位, 同以上说明
        
			//初始化i
        	//查看这是第几位出现按键
			i = 4;
        	while( PL )
        	{
            	PL >>= 1;
             	i--;
        	}
        
        	if( PH == 0x80 )
        	key = i;
        	else if( PH == 0x40 )
        	key = 4 + i;
        	else if( PH == 0x20 )
        	key = 8 + i;
        	else if( PH == 0x10 )
        	key = 12 + i;
		}
        
        return key;
    }
}

#endif

⌨️ 快捷键说明

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