📄 datainput.c
字号:
////////////////////////////////////////////////////////////////////////
// 键盘识别源文件
// 功能:将获得的键盘扫描码放到全局变量的InputData中
#include "at89x52.h"
#include "common.h"
#include "dataInput.h"
#include "display/display.h"
///////////////////////////////////////////////////////////////////////
// 如果需要PC键盘模块
#ifdef NEED_PC_KEYBORD
////////////////////////////////////////////////////////////////////////
unsigned char Buffer[11]; //接受数据缓冲区
unsigned char InputDataBuffer=0x00; //实际数据暂存区,用于组装数据时候
unsigned char DataBitPtr=0x00; //接受数据位指针
BOOL gSymboleE0=0x00;
BOOL SymboleF0=0x00;
//////////////////////////////////////////////////////////////////////////
// 数据校验
// 校验正确返回1
// 否则返回0
BOOL CheckData(void)
{
ACC=InputDataBuffer;
if(~P==Buffer[9]) //检测累加器中1的个数
{
return TRUE;
}
else
{
return FALSE;
}
}
////////////////////////////////////////////////////////////////////////
// 组合数据
// 参数:无
// 返回值:无
// 功能:将缓冲区中数据组合成unsigned char型数据并且调用ExchangeCode()函数
// 为显示作准备
void CombinData(void)
{
unsigned char lInputData=0x00;
unsigned char CircleTemp; //移位循环变量
InputDataBuffer=0; //数据暂存区
////////////////////////////////////////////////////////////////////
// 通过移位的方法将数据进行整合
for(CircleTemp=0x00;CircleTemp<0x08;CircleTemp++)
{
InputDataBuffer=InputDataBuffer+(Buffer[CircleTemp+1]<<CircleTemp);
}
///////////////////////////////////////////////////////////////////
// 数据写入显示缓冲区
if(CheckData())
{
if(InputDataBuffer!=0xE0&&InputDataBuffer!=0xF0)
{
lInputData=InputDataBuffer;
Print(lInputData);
}
if(InputDataBuffer==0xE0)
{
gSymboleE0=1;
return;
}
if(gSymboleE0==1&&lInputData==0xF0)
{
SymboleF0=1;
return;
}
else if(gSymboleE0==1&&SymboleF0==1)
{
lInputData=InputDataBuffer; //数据接受
Print(lInputData);
gSymboleE0=0;
SymboleF0=0;
return;
}
else if(gSymboleE0==1&&SymboleF0==0)
{
lInputData=InputDataBuffer; //数据接受
Print(lInputData);
}
}
else
{
return ;
}
}
/////////////////////////////////////////////////////////////////////////
// 接受数据中断服务函数
// 通过外部跳变电平引发外部中断
// 接受数据线上的数据,放数据接收完成后组装数据
void RecData(void) interrupt 0
{
Buffer[DataBitPtr]=DataLine;
DataBitPtr++;
if(DataBitPtr==11)
{
CombinData(); //组装数据
DataBitPtr=0; //复位数据指针
}
}
///////////////////////////////////////////////////////////////////////////////////
// 文件结束
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -