ch372+89c2051

大家好! 我的方案是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

前面部分你改為下面的試試,還有就是返回是FF的話,很大可能是硬件上的問題,你得好好查查硬件。  P1= CMD_CHECK_EXIST;     A0=1;   _RD=1; CS=0; // 片選 _WR=0; //單片機(jī)速度快的話,可適當(dāng)延時(shí) _WR=1; cs=1; A0=0; delay2us(); //延時(shí)2微秒左右

P1= test;     _RD=1; CS=0; // 片選 _WR=0; //單片機(jī)速度快的話,可適當(dāng)延時(shí) _WR=1; cs=1; delay2us(); //延時(shí)2微秒左右

CS=0; // 片選 _RD=0; temp=P1; CS=1; _RD=1;


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频