CMD_RD_USB_DATA0 使用问题

还是不行 麻烦帮看一下我的程序那里会有问题: #define rwzl XBYTE[0X0100] /*指令读写端口地址*/ #define rwdata XBYTE[0X0000] /*数据读写端口地址*/ sbit Pcs = P1^0; /*并口的片先信号。低电平有效*/ sbit RSTI = P1^1; /*硬件复位信号,高电平有效。*/ error_daima = main_check_ch376();/*检测ch376是否工作正常*/

Initialization();/*初始化USB工作模式为6*/

rwzl = DISK_CONNECT;/*检测磁盘是否连接*/ DelayMs(250);

rwzl = DISK_MOUNT; /*初始化磁盘并测试磁盘是否就绪*/ DelayMs(250);

rwzl = DISK_CAPACITY;/*查询物理磁盘容量*/ DelayMs(250); /*以上步骤都能正常,该产生中断的指令都会引起中断,而且在中断子程序读取中断值都能成功 USB_INT_SUCCESS 即14h*/ rwzl = RD_USB_DATA0; temp = rwdata; /*读出的数据为零,不懂为什么*/

for(i=0;i { aa = rwdata; }

发送RD_USB_DATA0命令是不需要等待中断状态的,直接读出9字节数据即可。


rwzl = DISK_CAPACITY;/*查询物理磁盘容量*/ 这指令不是会引起中断吗 引起中断之后在中断子程序里使用读取中断状态值 (rwzl = GET_STATUS)来取消中断请求后 在主程序里才能再使用 rwzl = RD_USB_DATA0;指令来读取 物理磁盘容量的数据吗。 要不,读取物理磁盘容量的数据要怎么来读取呢?还请指教。


DISK_CAPACITY命令会产生中断,只有中断状态正确才能发送RD_USB_DATA0命令读取数据。但是RD_USB_DATA0命令是不会产生中断的。


是啊 我就是在发出DISK_CAPACITY 产生中断后 在中断里读取的中断状态值为 14h (USB_INT_SUCCESS)后。回到主程序再使用指令RD_USB_DATA0 后 紧跟着就用 读取数据指令 去读取数据的(如 temp = rwdata)。没有说还要等待中断后再去读数据。就是这样读不到数据 ,所以才感到奇怪?? rwzl = RD_USB_DATA0; temp = rwdata; /*这是紧跟着RD_USB_DATA0指令来读取数据的,可是读出的数据为零,不懂为什么*/

for(i=0;i { aa = rwdata; }


那就应该没有问题,检查一下RD_USB_DATA0命令码(27H),最好进入到rwdata监控一下。


命令代码是27H 没错的,还会有其它什么原因吗


只有登录才能回复,可以选择微信账号登录