大家好! 我的方案是ch372+89c2051實(shí)現(xiàn)usb到PS2的轉(zhuǎn)換 但是要模擬讀寫CH372的時(shí)序: 以初始化開始的代碼為例: 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 :寫入測試數(shù)據(jù) P1=test; WR=0;
P1=0XFF;
_WR=1; A0=0; _RD=0; temp=P1;
if(test!=~temp) goto CH372_INIT_HR; // 測試失敗
// 測試通過
//設(shè)置USB工作模式 _RD=1; A0=1; _WR=0; P1= CMD_SET_USB_MODE; _WR=1; /設(shè)置USB工作模式:參數(shù):02h _RD=1; A0=0; _WR=0; P1= 0x02; _WR=1;
CH372_INIT_WT: //讀取操作狀態(tài)字
_WR=1; A0=0;
temp=P1; _RD=0; _RD=1;
if(temp!=CMD_RET_SUCCESS) //設(shè)置中斷 goto CH372_INIT_WT; IT0=0; //中斷為電平觸發(fā) PX0=1; // 設(shè)置中斷優(yōu)先級為高 IE0=0; //清除中斷標(biāo)志 EX0=1; //外部中斷0容許
return 1;
CH372_INIT_HR: // 測試失敗,硬件復(fù)位 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就沒有反映?當(dāng)讀返回值時(shí),temp=ff; 我測試了硬件電路,沒有問題。 是不是我時(shí)序模擬的問題? 大家能不能幫我看下?謝謝啦 很急的 :(QQ 472725134