|
在代碼下方點復制代碼,然后另存到電腦磁盤即可下載.
- /*****************************************************************************
- 單 位:廣西民族大學物理與電子工程學院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
復制代碼
|
|