标题:
51单片机模拟PS2键盘的问题, 无法通过电脑主板上电自检
[打印本页]
作者:
ping264888
时间:
2019-1-26 11:13
标题:
51单片机模拟PS2键盘的问题, 无法通过电脑主板上电自检
根据网络上找到的资料, 实现了模拟键盘的发送和接收, 使用USB转PS2的转接线可以正常使用, 但直接接在主板的PS2键盘接口. 无法通过系统的上电自检, 操作系统无法识别. 我觉得问题应该出在应答函数这一块, 但网络上关于PS2键盘上电检测应答的资料太少了. 下面是应答的函数. 所有的代码在附件中. 请帮忙看看这个上电检测应答的问题在哪里. 或者帮忙提供PS2键盘上电检测的相关资料. 感谢.
PS: 这是在CSDN上找到的一个代码, 对着我的环境修改了一些. 之前我写的也是同样的结果.
单片机源码:
unsigned char PS2Response(void) //开机应答,使电脑能识别到键盘
{
unsigned char PS2RecChar;
//while(PS2RecChar != 0xFF)
PS2RecChar = PS2Rece();
if(PS2RecChar != 0xCC)
switch(PS2RecChar)
{
// delayms(4);
case 0xFF: //主机命令设备复位(0xff),设备必须应答0xfa后回复0xaa;
PS2Send(0xFA);
delayms(3);
PS2Send(0xAA);
break;
case 0xF2: // 主机请求获得设备ID命令(0xf2),设备必须应答0xfa后回复0xab,0x83;
PS2Send(0xFA);
delayms(3);
PS2Send(0xAB);
delayms(3);
PS2Send(0x83);
// LED = 1;
break;
case 0xEE: //主机ECHO命令(0xee),设备直接回复0xee;
PS2Send(0xEE);
break;
case 0xEF:
PS2Send(0xFA);
delayms(3);
PS2Send(0xBF);
delayms(3);
PS2Send(0xB0);
break;
//除以上命令之外的其它命令,设备只要回复0xfa即可,当然要视设备的功能作相应的动作。
/*case 0xF5:
PS2Send(0xFA);
break;*/
case 0xF3:
PS2Send(0xFA);
break;
case 0x00:
PS2Send(0xFA);
break;
case 0x02:
PS2Send(0xFA);
break;
case 0x20:
PS2Send(0xFA);
break;
case 0xED:
PS2Send(0xFA);
break;
case 0xF0:
PS2Send(0xFA);
break;
case 0xEC:
PS2Send(0xFE);
break;
case 0xFE:
PS2Send(0xFA);
break;
case 0xF1:
PS2Send(0xFA);
break;
case 0xF4:
PS2Send(0xFA);
break;
case 0xAA:
PS2Send(0xAA);
break;
default :break;
}
delayms(4);
return PS2RecChar;
}
复制代码
CSDN上的例程--分析.zip
2019-1-26 11:07 上传
点击文件名下载附件
41.47 KB, 下载次数: 31
作者:
6726234500
时间:
2019-7-15 09:00
你好能加个QQ一起讨论下吗
作者:
fsdgsgsg
时间:
2021-2-6 11:41
请问问题解决了吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1