BF对鼠标函数的判断
0赞
发表于 6/8/2012 2:32:00 PM
阅读(2571)
* 名称 : getcode
* 功能 :获取键值
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
int_t getcode(void) // 返回0则无操作 返回1 则说明得到响应 返回2 则说明得到数据
{
if(newflag == 1)
{
if(ResOrDat == 1) // 为响应数据
{
if(ResNum == 1)
{
*pFIO_FLAG_C = 0x0020;
*pFIO_MASKA_C= 0x0020; //中断 禁止
mdat1.dat = mkey ;
mdat1.newly = 1;
newflag = 0;
ResNum = ResNum - 1;
return 1;
}
else if(ResNum == 2)
{
mdat2.dat = mkey ;
mdat2.newly = 1;
newflag = 0;
ResNum = ResNum - 1;
return 0;
}
else if(ResNum == 3)
{
mdat3.dat = mkey ;
mdat3.newly = 1;
newflag = 0;
ResNum = ResNum - 1;
return 0;
}
else
{
return 0;
}
}
if(ResOrDat == 0) // 为数据
{
if(RecDat == 1)
{
*pFIO_FLAG_C = 0x0020;
*pFIO_MASKA_C= 0x0020; //中断 禁止
mdat1.dat = mkey ;
mdat1.newly = 1;
newflag = 0;
RecDat = RecDat-1;
return 3;
}
else if(RecDat == 2)
{
mdat2.dat = mkey ;
mdat2.newly = 1;
newflag = 0;
RecDat = RecDat-1;
return 0;
}
else if(RecDat == 3)
{
mdat3.dat = mkey ;
mdat3.newly = 1;
newflag = 0;
RecDat = RecDat - 1;
return 0;
}
else
{
return 0;
}
}
}
else
{
return 0;
}
}
/****************************************************************************
* 名称 : Ps_Mouse_Rec
* 功能 : 读取鼠标键值并打印鼠标动作
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void Ps_Mouse_Rec(void)
{
int_t test ;
ResOrDat = 0; WR = 0;
test =getcode();
if(test==3)
{
Decode_Dat();
RecDat = 3;
*pFIO_MASKA_S = 0x0020;
}
else
{
//*pFIO_MASKA_S = 0x0020;
}
}
/****************************************************************************
* 名称 : Mcmd_Send
* 功能 : 鼠标命令传输
* 入口参数 :cmd:命令
res:偏移量
* 出口参数 :0 或 1
****************************************************************************/
int_t Mcmd_Send (int_t cmd ,int_t res )
{
int_t tim = 100;
int_t test;
ResOrDat = 1;
WR =1;
mcmd = cmd ;
ResNum = res ;
ps_send_start();
do{
tim--;
mdelay(10);
test = getcode();
}while ((test!=1)&(tim !=0));
if ((tim != 0)& (test ==1))
{
return 1;
}
else return 0;
}
/****************************************************************************
* 名称 : Ps2_Mouse_Stream
* 功能 : 判断鼠标是否响应
* 入口参数 :无
* 出口参数 :0 或 1
****************************************************************************/
int_t Ps2_Mouse_Stream(void)
{
int_t tim =100;
int_t test ;
do{
tim--;
test = Mcmd_Send(0xea,1);
}while (((test!=1)|(mdat1.dat !=0xfa))&(tim !=0));
if ((tim == 0)& (mdat1.dat !=0xfa))
{
return 0;
}
*pFIO_MASKA_C= 0x4000;
tim =100;
do{
tim--;
test = Mcmd_Send(0xf4,1);
}while (((test!=1)|(mdat1.dat !=0xfa))&(tim !=0));
if ((tim == 0)&(mdat1.dat !=0xfa))
{
return 0;
}
*pFIO_MASKA_C= 0x0020; //中断禁止
mdelay(0x100);
*pFIO_MASKA_S = 0x0020;
return 1;
}
