📄 usb.i
字号:
#line 1 "usb.c" /0 #line 1 "common.h" /0 #line 1 "C:\KEIL\C51\INC\REG51.H" /0 sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #line 1 "common.h" /0 #line 1 "C:\KEIL\C51\INC\ABSACC.H" /0 #line 24 "C:\KEIL\C51\INC\ABSACC.H" /1 #line 29 "C:\KEIL\C51\INC\ABSACC.H" /0 #line 2 "common.h" /0 typedef unsigned char UINT8; typedef unsigned short UINT16; typedef unsigned long UINT32; typedef union { struct { UINT8 Type; UINT8 Index; } Descriptor; struct { UINT8 tx0; UINT8 tx1; UINT8 endp; UINT8 c0; } chars; struct { UINT8 c3; UINT8 c2; UINT8 c1; UINT8 c0; } chars0; struct { UINT16 i1; UINT16 i0; } ints; UINT32 u0; } FLEXI_INT32; typedef union { struct { UINT8 c1; UINT8 c0; } chars; UINT16 i0; } FLEXI_INT16, *pFLEXI_INT16; typedef struct _XXG_FLAGS { unsigned char bTimer :1; unsigned char bIN_ISR :1; unsigned char bCOM_ERR :1; unsigned char bTimeout :1; unsigned char bData1 :1; unsigned char bUartInDone :1; unsigned char bMassDevice :1; unsigned char bToggle :1; unsigned char SLAVE_IS_ATTACHED :1; unsigned char SLAVE_REMOVED :1; unsigned char SLAVE_FOUND :1; unsigned char SLAVE_ENUMERATED :1; unsigned char SLAVE_ONLINE :1; unsigned char SLAVE_STALLED :1; unsigned char TIMEOUT_ERR :1; unsigned char DATA_STOP :1; } XXGFLAGS; typedef struct { unsigned int sector; unsigned char offset; } DIR_IDX, *pDIR_IDX; sfr P4 = 0xA1; sfr P0_DDR = 0xA2; sfr P1_DDR = 0xA3; sfr P2_DDR = 0xA4; sfr P3_DDR = 0xA5; sfr P4_DDR = 0xA6; sfr P_PU = 0xA7; sfr P_PD = 0xA9; sfr WDT = 0xAA; sfr SPI_DATA= 0x91; sfr SPI_CTL0= 0x92; sfr SPI_CTL1= 0x93; sfr SPI_STA0= 0x94; sfr SD_CTL0= 0x95; sfr SD_STA0= 0x96; sfr SD_STA1= 0x97; #line 205 "common.h" /1 #line 208 "common.h" /0 unsigned short WordSwap(unsigned short input); void DelayMs(unsigned int nFactor); void DelayUs(unsigned char nFactor); unsigned long SwapINT32(unsigned long dData); unsigned char SendUart(unsigned char *pUsrBuf, unsigned int num); #line 1 "usb.c" /0 #line 1 "usb.h" /0 #line 1 "C:\KEIL\C51\INC\ABSACC.H" /0 #line 10 "C:\KEIL\C51\INC\ABSACC.H" /1 #line 1 "usb.h" /0#line 1 "usb.h" /0 typedef struct { unsigned short wVID, wPID; unsigned char bClass; unsigned char bNumOfEPs; unsigned char iMfg; unsigned char iPdt; unsigned char bId1; unsigned char bId2; unsigned char bEPAddr[0x05]; unsigned char bAttr[0x05]; unsigned short wPayLoad[0x05]; unsigned short bInterval[0x05]; unsigned char bData1[0x05]; } USBDEV, *pUSBDEV; typedef struct { unsigned char bmRequest; unsigned char bRequest; unsigned short wValue; unsigned short wIndex; unsigned short wLength; } SetupPKG, *pSetupPKG; typedef struct { unsigned char usbaddr; unsigned char pid; unsigned char wPayload; unsigned int wLen; unsigned char *buffer; SetupPKG setup; unsigned char epbulkin; unsigned char epbulkout; } XXGPKG, *pXXGPKG; typedef struct { unsigned char bLength; unsigned char bDescriptorType; unsigned short bcdUSB; unsigned char bDeviceClass; unsigned char bDeviceSubClass; unsigned char bDeviceProtocol; unsigned char bMaxPacketSize0; unsigned short idVendor; unsigned short idProduct; unsigned short bcdDevice; unsigned char iManufacturer; unsigned char iProduct; unsigned char iSerialNumber; unsigned char bNumConfigurations; } sDevDesc, *pDevDesc; typedef struct { unsigned char bLength; unsigned char bType; unsigned short wLength; unsigned char bNumIntf; unsigned char bCV; unsigned char bIndex; unsigned char bAttr; unsigned char bMaxPower; } sCfgDesc, *pCfgDesc; typedef struct { unsigned char bLength; unsigned char bType; unsigned char iNum; unsigned char iAltString; unsigned char bEndPoints; unsigned char iClass; unsigned char iSub; unsigned char iProto; unsigned char iIndex; } sIntfDesc, *pIntfDesc; typedef struct { unsigned char bLength; unsigned char bType; unsigned char bEPAdd; unsigned char bAttr; unsigned short wPayLoad; unsigned char bInterval; } sEPDesc, *pEPDesc; void usbBufRead(unsigned char *s, unsigned char c); void usbBufWrite(unsigned char *s, unsigned char c); void usbReset(void); unsigned char usbXfer(unsigned char endPoint); unsigned char ep0Xfer(void); unsigned char epBulkSend(unsigned char *pBuffer,unsigned int len); unsigned char epBulkRcv(unsigned char *pBuffer,unsigned int len); unsigned char setAddress(unsigned char addr); unsigned char setConfiguration(void); unsigned char setDesc(void); unsigned char enumUsbDev(unsigned char usbaddr); void usbInit(void); void checkKeyLED(void); #line 2 "usb.c" /0 unsigned char PassToggleCheckSoftware(); extern XXGFLAGS bdata bXXGFlags; XXGPKG usbstack; extern UINT8 xdata DBUF[512]; USBDEV data uDev; void usbBufRead(unsigned char *s, unsigned char c) { unsigned char i; unsigned char *addr; addr = s; for(i=0;i<c;i++) { ACC = ((unsigned char volatile xdata *) 0)[0xF80E]; *addr = ACC; addr++; } } void usbBufWrite(unsigned char *s, unsigned char c) { unsigned char *addr; addr = s; if(((unsigned char volatile xdata *) 0)[0xF80D]&0x02) return; else { while(c) { ACC = *addr; ((unsigned char volatile xdata *) 0)[0xF80E] = ACC; addr++; c--; } } } void usbReset(void) { unsigned char temp; temp = ((unsigned char volatile xdata *) 0)[0xF800]; ((unsigned char volatile xdata *) 0)[0xF800] = temp|0x04; DelayMs(20); ((unsigned char volatile xdata *) 0)[0xF800] = temp; DelayMs(20); ((unsigned char volatile xdata *) 0)[0xF801] = 0xff; ((unsigned char volatile xdata *) 0)[0xF802] = 0xff; } static unsigned char ConsecutiveNAKCount = 0; unsigned char usbXfer(unsigned char endPoint) { unsigned char xferLen, cmd; unsigned char intr, result; unsigned char devTglSt; bXXGFlags.DATA_STOP=0; bXXGFlags.TIMEOUT_ERR=0; if (usbstack.wLen >= usbstack.wPayload) xferLen = usbstack.wPayload; else xferLen = usbstack.wLen; ((unsigned char volatile xdata *) 0)[0xF806] = xferLen; if (usbstack.pid==0x90) { ((unsigned char volatile xdata *) 0)[0xF80B] = 0x10; ((unsigned char volatile xdata *) 0)[0xF80C] = 0x01; ((unsigned char volatile xdata *) 0)[0xF80C] = 0x00; cmd = 0x04; } else if(usbstack.pid==0x10) { if(xferLen) { ((unsigned char volatile xdata *) 0)[0xF80C] = 0x03; ((unsigned char volatile xdata *) 0)[0xF80C] = 0x00; ((unsigned char volatile xdata *) 0)[0xF80B] = 0x01; usbBufWrite(usbstack.buffer,xferLen); if (xferLen < 64) { ((unsigned char volatile xdata *) 0)[0xF80C] = 0x03; ((unsigned char volatile xdata *) 0)[0xF80C] = 0x00; } } if (bXXGFlags.bToggle) cmd = 0xc2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -