📄 comusb9604.h
字号:
//ComUSB9603.h
#define USC unsigned char
bit RamWriting , RamReading;
sbit RamRW=P1^2;
sbit RS232=P1^3;
sbit Ints=P1^4;
sbit SqWave=P3^4;
USC command,staddr;
unsigned long endaddr,k=0;
#define FLUSHTX0{write_usb(TXC0,FLUSH);}
#define FLUSHTX1{write_usb(TXC1,FLUSH);}
#define FLUSHTX2{write_usb(TXC2,FLUSH);}
#define FLUSHTX3{write_usb(TXC3,FLUSH);}
#define FLUSHRX0{write_usb(RXC0,FLUSH);}
#define FLUSHRX1{write_usb(RXC1,FLUSH);}
#define FLUSHRX2{write_usb(RXC2,FLUSH);}
#define FLUSHRX3{write_usb(RXC3,FLUSH);}
#define TXEN0_PID \
{ if(dtapid_TGL0PID)write_usb(TXC0,TX_TOGL+TX_EN+TX_LAST); /* DATA1 */\
else write_usb(TXC0,TX_EN); /*DATA0*/\
dtapid_TGL0PID=!dtapid_TGL0PID;}
#define TXEN1_PID_NO_TGL \
{ if(dtapid_TGL1PID)write_usb(TXC1,TX_TOGL+TX_LAST+TX_EN); \
else write_usb(TXC1,TX_LAST+TX_EN); /*DATA0*/\
}
#define TXEN2_PID_NO_TGL \
{ if(dtapid_TGL1PID)write_usb(TXC2,TX_TOGL+TX_LAST+TX_EN); \
else write_usb(TXC2,TX_LAST+TX_EN); /*DATA0*/ \
}
#define TXEN3_PID_NO_TGL \
{ if(dtapid_TGL3PID)write_usb(TXC3,TX_TOGL+TX_LAST+TX_EN); \
else write_usb(TXC3,TX_LAST+TX_EN); /*DATA0*/ \
}
#define TXEN1_PID \
{ TXEN1_PID_NO_TGL; \
dtapid_TGL1PID=!dtapid_TGL1PID;}
#define TXEN2_PID \
{ TXEN2_PID_NO_TGL;\
dtapid_TGL2PID=!dtapid_TGL2PID;}
#define TXEN3_PID \
{ TXEN3_PID_NO_TGL;\
dtapid_TGL3PID=!dtapid_TGL3PID;}
void init_89C51();
void RamRD(void);
void RamWR(void);
void init_9604();
void write_usb(USC addr,USC dat);
void bitset(USC adr,USC mask);
void bitclr(USC adr,USC mask);
USC read_usb(USC addr);
void delay1();
void nak0(void);
void rxevent_0(void);
void txevent_0(void);
void rxevent_1(void);
void rxevent_2(void);
void rxevent_3(void);
void txevent_1(void);
void txevent_2(void);
void txevent_3(void);
void usb_alt(void);
void getdescriptor(void);
void setconfiguration(void);
void clrfeature(void);
void get_desc(void);
void getstaus(void);
void setfeature(void);
USC evnt,usb_cfg,usb_buf[8],n;
USC desc_typ,desc_idx=0, desc_sze,buf,txstat,rxstat;
bit status_GETDESC,dtapid_TGL0PID,dtapid_TGL1PID,dtapid_TGL3PID;
bit stall0,stall1,stall2,stall3,stall4,stall5,stall6;
#define DEV_DESC_SIZE 18
code USC DEV_DESC[]=
{18, /*描述符长度*/
0x01, /*设备描述符*/
0x00,0x01, /*设备版本号BCD码*/
0x00, /*设备类*/
0x00, /*设备子类*/
0x00, /*协议码*/
0x08, /*端点0的最大包的大小*/
0x00, 0x04, /*厂商标志ID*/
//以下ID 根据需要自己定制
0x07,0x00,/*产品标志ID*/
0x63,0x00,/*设备发行号ID(BCD)码*/
0, /*描述厂商信息的字符串索引*/
0, /*描述产品信息的字符串索引*/
0, /*描述设备序列号信息的字符串索引*/
0x01, /*配置数*/
};
#define CEG_DESC_SIZE 60
code USC CFG_DESC[]={
/****基本配置描述符,具体含义见2.2.5节****/
0x09,
0x02,
0x3C,0x00,/*完整配置描述符总长度0x3C*/
0x01,/*配置中的接口数*/
0x01,
0x00,
0x40,
0x50,
/**接口描述符,具体含义见2.2.5节**/
0x09,
0x04,
0x00, /*接口号*/
0x00,
0x06,/*接口中的端点数*/
0x00,
0x00,
0x00,
0x00,
/*端点描述符定义,Pipe1~6(端点在主机软件中称为Pipe),具体含义见2.2.5节*/
/*Pipe1*/
0x07,
0x05,
0x81, /*发送端点,端点号未1*/
0x02, /*块传输(bulk)端点*/
0x40,0x00, /*最大数据包尺寸为64字节*/
0x01,
/*Pipe2*/
0x07,
0x05,
0x02, /*发送端点,端点号未2*/
0x02,
0x40,0x00,
0x01,
/*Pipe3*/
0x07,
0x05,
0x83, /*发送端点,端点号未3*/
0x02,
0x40,0x00,
0x01,
/*Pipe4*/
0x07,
0x05,
0x04, /*发送端点,端点号未4*/
0x02,
0x40,0x00,
0x01,
/*Pipe5*/
0x07,
0x05,
0x85, /*发送端点,端点号未5*/
0x02,
0x40,0x00,
0x01,
/*Pipe1*/
0x07,
0x05,
0x06, /*发送端点,端点号未6*/
0x02,
0x40,0x00,
0x01
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -