模擬并口時(shí)序總是通不過(guò)?(急求回復(fù))

本人用Motorola單片機(jī)MC9S12D64和CH375A通信,調(diào)底層通信總是通不過(guò)。 有沒(méi)有人能夠指點(diǎn)一下。單片機(jī)采用模擬并口時(shí)序,三個(gè)讀寫子函數(shù)如下: void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ { mDelay1uS( ); mDelay1uS( ); /* 至少延時(shí)2uS */ CS_HOST=0; A0=1; DDRA=0xFF; PORTA=mCmd; WR=0; DDRA=0xFF; WR=1; CS_HOST=1; DDRA=0x00; mDelay1uS( ); mDelay1uS( ); /* 至少延時(shí)2uS */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ { CS_HOST=0; A0=0; DDRA=0xFF; PORTA=mData; WR=0; DDRA=0xFF; WR=1; A0=1; CS_HOST=1; DDRA=0x00; mDelay1uS( ); /* 至少延時(shí)1.5uS */ }

UINT8 xReadCH375Data( ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù),最小周期為1.5uS,否則之前延時(shí)1.5uS */ { UINT8 mData; mDelay1uS( ); /* 至少延時(shí)1.5uS */ CS_HOST=0; A0=0; DDRA=0x00; RD=0; DDRA=0x00; mData=PORTA; RD=1; A0=1; CS_HOST=1; return(mData); }

測(cè)試底層通信如下: unsigned char TEST_CH375_PORT( ) { unsigned char c,i; xWriteCH375Cmd( CMD_CHECK_EXIST ); xWriteCH375Data( 0x55 ); c =xReadCH375Data( ); if ( c != 0xaa ) { for ( i = 100; i != 0; i -- ) { xWriteCH375Cmd( CMD_RESET_ALL ); c = xReadCH375Data( ); } mDelaymS(30); } return c; }

首先你的三個(gè)讀寫子程序有點(diǎn)問(wèn)題。你改你下面的試試: void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ { mDelay1uS( ); mDelay1uS( ); /* 至少延時(shí)2uS */ A0=1; PORTA=mCmd; DDRA=0xFF; CS_HOST=0; WR=0; DDRA=0xFF; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ WR=1; A0=0; CS_HOST=1; DDRA=0x00; /* 禁止數(shù)據(jù)輸出 */ mDelay1uS( ); mDelay1uS( ); /* 至少延時(shí)2uS */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ { PORTA=mData; DDRA=0xFF; CS_HOST=0; A0=0; WR=0; DDRA=0xFF; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ WR=1; A0=0; CS_HOST=1; DDRA=0x00; mDelay1uS( ); /* 至少延時(shí)1.5uS */ }

UINT8 xReadCH375Data( ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù),最小周期為1.5uS,否則之前延時(shí)1.5uS */ { UINT8 mData; mDelay1uS( ); /* 至少延時(shí)1.5uS */ DDRA=0x00; CS_HOST=0; RD=0; DDRA=0x00; /* 該操作無(wú)意義,僅作延時(shí) mData=PORTA; RD=1; CS_HOST=1; return(mData); } 還有就是你返回的數(shù)據(jù)是什么?如果為0XFF的話,還得查查硬件是不是有問(wèn)題。


返回?cái)?shù)據(jù)總是0XFF,一定是硬件問(wèn)題嗎?


返回0XFF一般先檢查375的晶振有沒(méi)有起振.其次是檢查你的復(fù)位有沒(méi)有完全,具體的你可以用萬(wàn)用表來(lái)測(cè)下375的25腳和26腳的電壓,如果上面說(shuō)的都是正常的話,那么25腳電壓位低,26腳電壓為高,如果2個(gè)腳的電壓都符合的話,那么在檢查你的硬件連線以及你的I/O口的設(shè)置問(wèn)題


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

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