|
在代码下方点复制代码,然后另存到电脑磁盘即可下载.
- /*****************************************************************************
- 单 位:广西民族大学物理与电子工程学院07物本班
- 文件名称:Key.h
- 文件标识:_KEY_H_
- 摘 要:AVR系列单片机的4*4小键盘驱动头文件
- 当前版本:V1.0
- 作 者: 【白 羽】
- 完成日期:2010年5月1日
- *****************************************************************************/
- #ifndef _KEY_H_
- #define _KEY_H_
- #include <BaiYuAvrKu\DataType.h>
- #include <BaiYuAvrKu\PORT.H>
- /*****************************************************************************
- 编绎控制:以下条件编绎语句保证只有在IO端口正确配置的情况下,才引用并编绎本文件
- *****************************************************************************/
- #if !defined(KEY_PORT)&&!defined(KEY_LINE)&&!defined(KEY_ROW)
- #define KEY_LINE P(PORTB,L)
- #define KEY_ROW P(PORTB,H)
- #elif defined(KEY_PORT)&&!defined(KEY_LINE)&&!defined(KEY_ROW)
- #define KEY_LINE P(KEY_PORT,L)
- #define KEY_ROW P(KEY_PORT,H)
- #elif defined(KEY_LINE)&&defined(KEY_ROW)&&!defined(KEY_PORT)
- #else
- #error 您没有正确设置key.h与AVR单片机的连接
- #endif
- /*****************************************************************************
- 常用控制命令
- *****************************************************************************/
- #define KeyInit() do{OUTS(KEY_LINE);OUTS(KEY_ROW);}while(0) //键盘初始化
- UINT8 GetKey(void); //读取按键值
- /*****************************************************************************
- 获取按键值
- 这种方法稍复杂,但抗干扰能力很强
- *****************************************************************************/
- UINT8 GetKey(void)
- {
- UINT8 i;
- UINT8 temp;
- UINT8 key=16;
- SETS(KEY_ROW);
- CLRS(KEY_ROW);
- temp = (PBITS(KEY_LINE)==L) ? READS(KEY_LINE) : READS(KEY_LINE)>>4;
- SETS(KEY_LINE);
- CLRS(KEY_LINE);
- temp |= (PBITS(KEY_ROW)==H) ? READS(KEY_ROW) : READS(KEY_ROW)<<4;
- for(i = 0; i < 8; temp >>= 1, i++)
- {
- if((temp & BIT(0)) && (i < 4)) key = i << 2;
- else if((temp & BIT(0)) && (i < 8)) key|=i-4;
- }
- return key;
- }
- #endif
复制代码
|
|