?? 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 + -