下面是运用串口进行模块调试返回的数据。
Chek OK
USB work type:51
Set mode OK
INT = 0F
bus rest!
INT = 0F
bus rest!
INT = 0C
Length = 08
Quest = 0x80 0x86 0x80 0x81 0x80 0x80 0xC0 0x80
SETUP = 86
调试 RESET_ALL 实现硬件复位 CHECK_EXIST 测试工作状态 OK
设置 USB 工作模式 51H CMD_RET_SUCCESS 操作成功
但是当插上 USB 数据线后获取上位机机的标准请求码,数据不正常?
0x80 0x86 0x80 0x81 0x80 0x80 0xC0 0x80
最高位为0x80 不知道,请教一下这是哪里出了问题。
下面是代码:
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define hal
tif(cmp,msg) if(cmp){print(msg);halt_}
#define halt_ for(;;){}
sbit INT = P3^2;
sbit A0 = P2^1;
sbit CS = P2^0;
sbit Read = P3^7;
sbit Write = P3^6;
void Delay10ms()//@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void Wr_cmd( unsigned char cmd)
{ /* 向CH375的命令端口写入命令,周期不小于4uS,如果
单片机较快则延时 */
P0 = 0xFF;
_nop_();
_nop_();
CS = 0;
A0 = 1;
Write = 0;
P0 = cmd;
_nop_();
_nop_();_nop_();
Write = 1;
A0 = 0;
_nop_();
P0 = 0xFF;
_nop_();
}
void Wr_Data( unsigned char dat)
{ /* 向CH375的数据端口写入数据,周期不小于1.5uS,如果单片机较快则延时 */
P0 = 0xFF;
_nop_();_nop_();
_nop_();_nop_();
CS = 0;
Write = 0;
P0 = dat;
_nop_();_nop_();
_nop_();_nop_();
Write = 1;
CS = 1;
_nop_();
P0 = 0xFF;
}
void Rd_Data(uchar *dat)
{ /* 从CH375的数据端口读出数据,周期不小于1.5uS,如果单片机较快则延时 */
P0 = 0xFF;
_nop_();_nop_();
_nop_();_nop_();
CS = 0;
Read = 0;
_nop_();
_nop_();
_nop_();_nop_();
*dat = P0;
Read = 1;
CS = 1;
A0 = 1;
_nop_();_nop_();
_nop_();_nop_();
P0=0xFF;
}
void SendOneByte(unsigned char c)
{
SBUF = c; //把数据送往寄存器
while(!TI); //等待发送完成TI=0时一直发送,直到TI=1,发送后硬件自动置1
TI = 0; //发送完成标志
}
void print(unsigned char *p)
{
while(*p!='