⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comusb9604.h

📁 USBN9604的初始化函数(C51),以及寄存器头文件,USB接口开发技术[西安电子科技大学出版社] 这本书上有更详细的电路以及代码介绍
💻 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 + -