在线时间88 小时
UID3325292
注册时间2016-11-2
NXP金币0
TA的每日心情 | 奋斗 2021-2-4 16:14 |
---|
签到天数: 139 天 连续签到: 1 天 [LV.7]常住居民III
高级会员

- 积分
- 881
- 最后登录
- 2021-2-4
|

楼主 |
发表于 2017-5-18 18:34:42
|
显示全部楼层
while (true) //PTE24 作为时钟线; PTE25 作为数据线
{
if ( Wait_PS2_PC() ) //检查数据线是否被拉低,低:有数据,准备接收;高:无数据,不用接收
{
order = receive_byte(); //接收电脑的数据,保存到unsigned char类型中
// manage( order ); //回复电脑命令,现在直接在主函数中实现
if ( ( ( GPIOE->PDIR>>24 ) == 0x01 ) && ( ( GPIOE->PDIR>>25 ) == 0x01 ) ) //判断时钟线和数据线都为高电平,表示主机没有请 //求发送数据,此时时钟线和数据线都是空闲的
{
switch( order )
{
case 0xFF: // 主机通知设备复位
send_byte( 0xFA );
send_byte( 0xAA );
send_byte( 0x00 );
break;
case 0xF2: // 主机通知设备获得ID
send_byte( 0xFA );
send_byte( 0x00 );
break;
case 0xF4: // 使能数据报告
send_byte( 0xFA );
break;
case 0xF5: //禁止数据报告
send_byte( 0xFA );
break;
case 0xE9: //主机通知设备告诉状态信息
send_byte( 0xFA );
send_byte( 0x00 );
send_byte( 0x02 );
send_byte( 0x64 );
break;
case 0x55:
send_byte( 0xFE );
break;
default: //其它命令默认都回复0xFA
send_byte( 0xFA );
break;
}
}
}
按照这样改之后,试验了还是不行。
下面是我51单片机的代码,实验已经成功:
while(1)
{
/* 实现开机自检 */
if(!mouse_data) //检测数据线为低,说明有数据
{
order=receive_byte(); //接收电脑的数据
manage(order); //回复电脑命令
}
}
|
|