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

📄 key.h

📁 一个比较通用的行列键盘程序,c语言的
💻 H
字号:
#ifdef KEY
#define KEY
#else
#define KEY extern 
#endif

#define  KEY_BUF_SIZE               10      //键盘缓冲区长度

#define  KEY_MAX_ROWS                5      //键盘最大行
#define  KEY_MAX_COLS                6      //键盘最大列

#define  KEY_RPT_DLY                 2      //键自动重复的延时
#define  KEY_RPT_START_DLY          10      //键自动重复启动时间

#define  KEY_SCAN_TASK_DLY          50      //键盘任务的执行周期

#define  KEY_SHIFT1_MSK           0x80      //第7列为SHIFT1键
                                            
#define  KEY_SHIFT1_OFFSET          00      //SHIFT1键的键值移位值

#define  KEY_SHIFT2_MSK           0x40      //第6列为SHIFT2键
                                            
#define  KEY_SHIFT2_OFFSET          00      //SHIFT2键的键值移位值

#define  KEY_SHIFT3_MSK           0x20      //第5列为SHIFT2键
                                            
#define  KEY_SHIFT3_OFFSET           0      //SHIFT2键的键值移位值

#define  KEY_ALL_ROWS             0xFF      //选择所有行

#define KEY_STATE_UP                 1     //键状态,未按下
#define KEY_STATE_DEBOUNCE           2	   //键状态,未回弹
#define KEY_STATE_RPT_START_DLY      3	   //键状态,等待启动自动重复
#define KEY_STATE_RPT_DLY            4	   //键状态,等待下一次重复

KEY xdata unsigned char KeyBuf[KEY_BUF_SIZE];   //键值缓冲区
KEY xdata unsigned char KeyBufInIx;             //键值写入的指针
KEY xdata unsigned char KeyBufOutIx;            //键值读出的指针
KEY xdata unsigned int  KeyDownTmr;             //键按下的时间
KEY xdata unsigned char KeyNRead;               //缓冲区内键值的个数
KEY xdata unsigned char KeyRptStartDlyCtr;      //自动重复启动计时
KEY xdata unsigned char KeyRptDlyCtr;           //下一次重复计时
KEY xdata unsigned char KeyScanState;           //键状态


void KeyFlush(void);                		//清空键盘缓冲区
unsigned char KeyGetKey(void);			//从缓冲区中读取出一个键值
unsigned int KeyGetKeyDownTime(void);       	//读取上一次按键的时间
unsigned char KeyHit(void);                 	//判断缓冲区中是否有键值
void KeyInit(void);                 	    	//键盘模块初始化
unsigned char KeyGetCol(void);              	//读取列                                                 */
void KeySelRow(unsigned char);        	    	//设置行                                                 */
void KeyBufIn(unsigned char);          	   	//把一个键值写入缓冲区
unsigned char KeyDecode(void);             	//键值译码
unsigned char KeyIsKeyDown(void);           	//判断是否有键按下
void KeyScanTask(void);				//键盘扫描任务

⌨️ 快捷键说明

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