我是用LPC2103与CH375相连的, INT---P0.3 A0----P0.4 RD#---P0.5 WR#---P0.6 CS#---P0.7 D0-D7---P0.8-P0.16 请问命令返回值的地址是多少,如何读取,谢谢.
你按照并口时序去读就可以了,你这个不是标准的并口是模拟时序.给你发一段代码供你参考: /* 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的并口输出数据, 输出A0(P0.4)=1; */ IO0DIR |= 0x0000FFF0; /* 写操作所以数据输出, 设置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; /* 禁止数据输出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延时2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { IO0CLR |= 0x0000FF00; /* 清并口输出 */ IO0SET |= (UINT32)mData << 8; /* 向CH375的并口输出数据 */ IO0DIR |= 0x0000FF00; /* 写操作所以数据输出 */ IO0CLR |= 0x000000D0; /* 输出有效写控制信号, 写CH375芯片的数据端口, 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; /* 禁止数据输出 */ mDelay1_2uS( ); /* 至少延时1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; mDelay1_2uS( ); /* 至少延时1.2uS */ IO0DIR &= 0xFFFF00FF; /* 读操作所以数据输入 */ IO0CLR |= 0x000000B0; /* 输出有效读控制信号, 读CH375芯片的数据端口, 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输入数据 */ IO0SET |= 0x000000E0; /* 输出无效的控制信号, 完成操作CH375芯片, A0(P0.4)=0; CS(P0.7)=1; WR=(P0.6)=1; RD(P0.5)=1; */ return( mData ); }
按照您的程序的话 读出返回值之后其值应该在mData中,那我在ADS中应该如何看出其值,谢谢!
这个是你自己程序的问题,如果是有仿真器的话,你采用仿真器去看,如果没有的话你可以通过串口把数据发送出来