我是用LPC2103與CH375相連的, INT---P0.3 A0----P0.4 RD#---P0.5 WR#---P0.6 CS#---P0.7 D0-D7---P0.8-P0.16 請問命令返回值的地址是多少,如何讀取,謝謝.
你按照并口時序去讀就可以了,你這個不是標準的并口是模擬時序.給你發(fā)一段代碼供你參考: /* LPC2114單片機的引腳 CH375芯片的引腳 P0.3 INT# P0.4 A0 P0.7 CS# P0.6 WR# P0.5 RD# P0.15-P0.8(8位端口) D7-D0 */
void CH375_PORT_INIT( ) /* 由于使用通用I/O模塊并口讀寫時序,所以進行初始化 */ { IO0SET |= 0x000000E0; /* 設置CS,WR,RD默認為高電平 */ IO0DIR &= 0xFFFF00F7; /* 設置8位并口和INT#為輸入 */ IO0DIR |= 0x000000F0; /* 設置CS,WR,RD,A0為輸出 */ }
void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫調用的子程序,向CH375寫命令 */ { mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時1uS */ IO0CLR |= 0x0000FF00; /* 清并口輸出 */ IO0SET |= ( (UINT32)mCmd << 8 ) | 0x00000010; /* 向CH375的并口輸出數(shù)據(jù), 輸出A0(P0.4)=1; */ IO0DIR |= 0x0000FFF0; /* 寫操作所以數(shù)據(jù)輸出, 設置CS,WR,RD,A0為輸出 */ IO0CLR |= 0x000000C0; /* 輸出有效寫控制信號, 寫CH375芯片的命令端口, A0(P0.4)=1; CS(P0.7)=0; WR=(P0.6)=0; RD(P0.5)=1; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 該操作無意義,僅作延時,CH375要求讀寫脈沖寬度大于100nS */ IO0SET |= 0x000000E0; /* 輸出無效的控制信號, 完成操作CH375芯片, A0(P0.4)=1; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ IO0CLR |= 0x00000010; /* 輸出A0(P0.4)=0; 可選操作 */ IO0DIR &= 0xFFFF00FF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫調用的子程序,向CH375寫數(shù)據(jù) */ { IO0CLR |= 0x0000FF00; /* 清并口輸出 */ IO0SET |= (UINT32)mData << 8; /* 向CH375的并口輸出數(shù)據(jù) */ IO0DIR |= 0x0000FF00; /* 寫操作所以數(shù)據(jù)輸出 */ IO0CLR |= 0x000000D0; /* 輸出有效寫控制信號, 寫CH375芯片的數(shù)據(jù)端口, A0(P0.4)=0; CS(P0.7)=0; WR=(P0.6)=0; RD(P0.5)=1; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 該操作無意義,僅作延時,CH375要求讀寫脈沖寬度大于100nS */ IO0SET |= 0x000000E0; /* 輸出無效的控制信號, 完成操作CH375芯片, A0(P0.4)=0; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ IO0DIR &= 0xFFFF00FF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); /* 至少延時1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫調用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; mDelay1_2uS( ); /* 至少延時1.2uS */ IO0DIR &= 0xFFFF00FF; /* 讀操作所以數(shù)據(jù)輸入 */ IO0CLR |= 0x000000B0; /* 輸出有效讀控制信號, 讀CH375芯片的數(shù)據(jù)端口, A0(P0.4)=0; CS(P0.7)=0; WR=(P0.6)=1; RD(P0.5)=0; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 該操作無意義,僅作延時,CH375要求讀寫脈沖寬度大于100nS */ mData = (UINT8)( IO0PIN >> 8 ); /* 從CH375的并口P0.15-P0.8輸入數(shù)據(jù) */ IO0SET |= 0x000000E0; /* 輸出無效的控制信號, 完成操作CH375芯片, A0(P0.4)=0; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ return( mData ); }
按照您的程序的話 讀出返回值之后其值應該在mData中,那我在ADS中應該如何看出其值,謝謝!
這個是你自己程序的問題,如果是有仿真器的話,你采用仿真器去看,如果沒有的話你可以通過串口把數(shù)據(jù)發(fā)送出來