大家好! 我的方案是ch372+89c2051实现usb到PS2的转换 但是要模拟读写CH372的时序: 以初始化开始的代码为例: int ch372_init(void) {
unsigned char test; unsigned char temp; int i=0; test= 0X6C;
CH372_INIT_TEST:
_RD=1; A0=1; //ch372_cmd :CMD_CHECK_EXIST _WR=0; P1= CMD_CHECK_EXIST; _WR=1;
_RD=1; A0=0; // ch372_data :写入测试数据 P1=test; WR=0;
P1=0XFF;
_WR=1; A0=0; _RD=0; temp=P1;
if(test!=~temp) goto CH372_INIT_HR; // 测试失败
// 测试通过
//设置USB工作模式 _RD=1; A0=1; _WR=0; P1= CMD_SET_USB_MODE; _WR=1; /设置USB工作模式:参数:02h _RD=1; A0=0; _WR=0; P1= 0x02; _WR=1;
CH372_INIT_WT: //读取操作状态字
_WR=1; A0=0;
temp=P1; _RD=0; _RD=1;
if(temp!=CMD_RET_SUCCESS) //设置中断 goto CH372_INIT_WT; IT0=0; //中断为电平触发 PX0=1; // 设置中断优先级为高 IE0=0; //清除中断标志 EX0=1; //外部中断0容许
return 1;
CH372_INIT_HR: // 测试失败,硬件复位 for(i=0;i<50;i++) {
_RD=1; A0=1; //ch372_cmd :CMD_RESET_ALL _WR=0; P1= CMD_RESET_ALL; _WR=1;
} delay(200000); goto CH372_INIT_TEST; }
为什么开始的第一条命令CHECK_EXIST,ch372就没有反映?当读返回值时,temp=ff; 我测试了硬件电路,没有问题。 是不是我时序模拟的问题? 大家能不能帮我看下?谢谢啦 很急的 :(QQ 472725134