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

📄 8279key.c

📁 8279键盘程序
💻 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 + -