用CH375做读写U盘程序,因系统设计时主控CPU IO资源比较紧,想不使用INT#引脚来查询中断(即INT#引脚悬空,不跟单片机连接),进而采用读CH375读取中断标志(即A0=1时读出的CH375状态)的BIT7来查询INT#引脚的中断,在使用CH375的文件读写库时,调用CH375FileOpen()得到的状态,却是0X23.
1,这种用法可以用吗?
2, 我已经修改头文件中的查询函数. void xQueryInterrupt( void ) /* 查询CH375中断并更新中断状态 */ { //while ( CH375_INT_WIRE ); /* 如果CH375的中断引脚输出高电平则等待 */ while(xReadCH375Status() & 0x80); xWriteCH375Cmd( CMD_GET_STATUS ); /* 获取当前中断状态,发出命令后至少延时2uS */ CH375IntStatus = xReadCH375Data( ); /* 获取中断状态 */ if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; /* 检测到USB设备断开事件 */ else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; /* 检测到USB设备连接事件 */ }
其中UINT8 xReadCH375Status(void) { UINT8 mStatus; mDelay1_2uS( ); mDelay1_2uS( ); IO0DIR &= 0xFFFF00FF; /* 读操作所以数据输入 */ IO0CLR |= 0x000000A0; /* 输出有效读控制信号, 读CH375芯片的数据端口, A0(P0.4)=1; CS(P0.7)=0; WR=(P0.6)=1; RD(P0.5)=0; */ IO0DIR = IO0DIR; IO0DIR = IO0DIR; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mStatus = (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; */ mDelay1_2uS( ); mDelay1_2uS( ); return( mStatus ); }
为什么会出现这种情况呢?