?? 8279key.c
字號:
/*********************************
文件名稱: 8279Key.c
創建人 :
創建日期: 2004-11-7
*********************************/
#include <includes.H>
#include <MAIN.H>
#include <intrins.h>
INT8U uchSFRPAGESave8279;
//INT8U Flag1,Flag2,Flag3,Flag4,Flag5,Flag6;
/*延時程序*/
void Delay(void) reentrant
{
INT16U i;
for(i=0;i<255;i++);
}
/********************************************************
1. 函數名:void SendCom(unsigned char C8279COM)
2. 功能:對8279傳送命令字
3. 參數:C8279COM為命令字代碼
4. 返回值:無
5. 算法描述:
6. 函數過程描述:
7. 使用說明:一定要注意在對8279編程過程中注意其時序
8. 相關資源:8279說明文檔
9. 創建人:
10.創建時間:2004.11.1
11.當前版本號:Ver 0.1
12.最后修改人:
13.最后修改時間:2004.12.12
14.修改記錄:
15.有待完善之處:
*********************************************************/
void SendCom(INT8U C8279COM) reentrant
{
uchSFRPAGESave8279=SFRPAGE;
CS8279Key
SFRPAGE=CONFIG_PAGE;
/*片選8279*/
P2MDOUT |=0x30;
P2 |=0x10;
P2 &=0xDF;
/*245控制方向*/
P1MDOUT |=0x80;
P1 |=0x80;
//P1 |=0x80;
/*指令*/
P2MDOUT |=0x40;
P2 |=0x40;
/*禁止讀*/
P4MDOUT |=0x40;
P4 |=0x40;
/*寫有效*/
P4MDOUT |=0x80;
P4 &=0x7F;
P7MDOUT |=0xFF;
P7=C8279COM;
// Delay();
_nop_();
_nop_();
_nop_();
/*放棄片選,禁止寫,指令*/
P2 |=0x20;
P4 |=0x40;
P2 |=0x40;
SFRPAGE=uchSFRPAGESave8279;
}
/********************************************************
1. 函數名:unsigned char GetData(void)
2. 功能:從8279接收掃描碼
3. 參數:無
4. 返回值:8279 FIFO中的掃描碼
5. 算法描述:
6. 函數過程描述:
7. 使用說明:一定要注意在對8279編程過程中注意其時序
鍵盤的數據格式
D7 D6 D5 D4 D3 D2 D1 D0
CNTL SHIFT 該鍵所在列位置 該鍵所在行位置
8. 相關資源:8279說明文檔
9. 創建人:
10.創建時間:2004.11.1
11.當前版本號:Ver 0.1
12.最后修改人:
13.最后修改時間:2004.12.12
14.修改記錄:
15.有待完善之處:
*********************************************************/
INT8U GetData(void) reentrant
{
INT8U key_data;
CS8279Key
uchSFRPAGESave8279=SFRPAGE;
SFRPAGE=CONFIG_PAGE;
P7MDOUT &=0x0;
P7 =0xFF; //P7口做輸入
/*控制 245 傳輸方向*/
P1MDOUT |=0x80;
P1 &=0x7F;
/*片選8279*/
P2MDOUT |=0x30;
P2 |=0x10;
P2 &=0xDF;
/*數據*/
P2MDOUT |=0x40;
P2 &=0xBF;
/*禁止寫*/
P4MDOUT |=0x80;
P4 |=0x80;
/*讀有效*/
P4MDOUT |=0x40;
P4 &=0xBF;
key_data=P7;
Delay();
/*禁止讀,放棄片選,指令*/
P4 |=0x40;
P2 |=0x20;
P2 |=0x40;
/*控制 245 傳輸方向*/
P1MDOUT |=0x80;
P1 |=0x80;
SFRPAGE=uchSFRPAGESave8279;
return key_data;
}
/********************************************************
1. 函數名:void Init_8279_Key(void)
2. 功能:8279初始化
3. 參數:無
4. 返回值:無
5. 算法描述:
6. 函數過程描述:8279初始化包括復位,分頻(以滿足內部工作頻率為100KHz,來保證5.1ms
的掃描時間和10.3ms的反彈跳時間),編碼方式,雙鍵鎖定。
7. 使用說明:
8. 相關資源:8279說明文檔
9. 創建人:
10.創建時間:2004.11.1
11.當前版本號:Ver 0.1
12.最后修改人:
13.最后修改時間:2004.12.12
14.修改記錄:
15.有待完善之處:
********************************************************/
void Init_8279_Key(void)reentrant
{
CS8279Key
SFRPAGE=CONFIG_PAGE;
/*245控制方向*/
P1MDOUT |=0x80;
P1 |=0x80;
/*片選8279*/
P2MDOUT |=0x30;
P2 |=0x10;
P2 &=0xDF;
/*命令/狀態*/
P2MDOUT |=0x40;
P2 |=0x40;
/*復位*/
P2MDOUT |=0x80;
P2 |=0x80;
Delay();
/*停止復位*/
P2 &=0x7F;
/*禁止讀*/
P4MDOUT |=0x40;
P4 |=0x40;
/*寫有效*/
P4MDOUT |=0x80;
P4 &=0x7F;
/*清除命令:C2H, 只清空FIFO RAM, 不清除顯示RAM(會占用時間)*/
SendCom(0xC2);
Delay();
SendCom(0x32);/*18分頻*/
Delay();
/*設置鍵盤工作方式*/
SendCom(0x00); /*8個字符顯示,左入口;編碼鍵盤掃描,雙鍵鎖定*/
Delay();
/*禁止寫*/
P4 |=0x80;
P2 |=0x20;
}
/********************************************************
1. 函數名:void KeyProcess(unsigned char KeyCode)
2. 功能:鍵盤相應程序
3. 參數:KeyCode為外部中斷0中得到的按鍵碼
4. 返回值:無
5. 算法描述:
6. 函數過程描述:根據具體按鍵碼去執行對應的參數設置程序,并且同時執行提示顯示程序
7. 使用說明:六個標志位的設置是用來判斷相應的按鍵響應與否。
按“參數設置”后,按“1”、“2”、“3”、“4”或“上”、“下”、“確認”
鍵才有響應;按“確認”后,才能進行“開始采集”;只有“停止采集”才能使
程序退出“開始采集”;“分析”必須在“停止采集”后才能進行。
8. 相關資源:
9. 創建人:
10.創建時間:2004.11.1
11.當前版本號:Ver 0.1
12.最后修改人:
13.最后修改時間:2004.12.12
14.修改記錄:
15.有待完善之處:
********************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -