📄 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 + -