这几天在调CH375,但是开始的测试就不通,不知道是怎么回事,看了别人的贴子检查硬件似乎也没问题.帖一下程序,各位帮我看看吧,谢了
void CH375_WR_CMD_PORT( UINT8 cmd ) { Delay2us(); CH375_CMD_PORT=cmd; Delay2us(); }
void CH375_WR_DAT_PORT( UINT8 dat ) { CH375_DAT_PORT=dat; Delay1us(); /* 如果是MCS51单片机,因其较慢,所以实际上无需延时 */ }
UINT8 CH375_RD_DAT_PORT( void ) { Delay1us(); /* 如果是MCS51单片机,因其较慢,所以实际上无需延时 */ return( CH375_DAT_PORT ); }
/* CH375初始化子程序 */ void CH375_Init( void ) { UINT8 i; UINT8 j;
#define TEST_CH375_FIRST
#ifdef TEST_CH375_FIRST /* 测试CH375与单片机的物理连接是否正常以及是否正常工作,可选操作,通常不需要 */ CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 测试CH375是否正常工作 */ Delay2us( ); /* 如果时钟频率低于16MHz则无需该指令延时 */ CH375_WR_DAT_PORT( 0x55); /* 写入测试数据,任意数据 */ Delay2us( ); i =~ 0x55; /* 返回数据应该是测试数据取反 */ if ( CH375_RD_DAT_PORT( ) != i ) { /* 就是在这出问题,CH375不正常 */ for ( i=80; i!=0; i-- ) { CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* 多次重复发命令,执行硬件复位 */ CH375_RD_DAT_PORT( ); } CH375_WR_CMD_PORT( 0 ); for ( i=250; i!=0; i-- ) for( j=100; j!=0; j-- ) Delay2us( ); /* 延时50mS */ }
#endif