??? 01/23/06 17:36 Modified: 01/23/06 17:45 Read: times |
#108110 - the code to write the descriptor Responding to: ???'s previous message |
Tsuneo said:
Post the code to write the descriptor to the control IN EP. Hi Dear Tsuneo Excuse me if this code hasn't any comments But it seems it is readable.Isn't it? bLength EQU 30H bDescriptorType EQU 31H bcdUSBH EQU 32H bcdUSBL EQU 33H bDeviceClass EQU 34H bDeviceSubclass EQU 35H bDeviceProtocol EQU 36H bMaxPacketSize EQU 37H idVendorH EQU 38H idVendorL EQU 39H idProductH EQU 3AH idProductL EQU 3BH bcdDeviceH EQU 3CH bcdDeviceL EQU 3DH iManufacture EQU 3EH iProducts EQU 3FH iSerialNumber EQU 40H bNumConfigurations EQU 41H wTotallLengthH EQU 32H wTotallLengthL EQU 33H bNumInterface EQU 34H bConfigurationValue EQU 35H iConfiguration EQU 36H bmAttributes EQU 37H MaxPower EQU 38H bInterfaceNumber EQU 32H bAlternateSettings EQU 33H bNumEndpoints EQU 34H bInterfaceClass EQU 35H bInterfaceSubclass EQU 36H bInterfaceProtocol EQU 37H iInterface EQU 38H bEndpointAddress EQU 32H bmAttributes1 EQU 33H wMaxPacketSizeH EQU 34H wMaxPacketSizeL EQU 35H bInterval EQU 36H NUMBER_OF_FRAME EQU 78H WRITE_TO_BUFFER_DEVICE_DESCRIPTORS: MOV bLength,#12H MOV bDescriptorType,#01H MOV bcdUSBL,#10H MOV bcdUSBH,#01H MOV bDeviceClass,#00H MOV bDeviceSubclass,#00H MOV bDeviceProtocol,#00H MOV bMaxPacketSize,#8H MOV idVendorH,#34H MOV idVendorL,#12H MOV idProductH,#01H MOV idProductL,#00H MOV bcdDeviceH,#00H MOV bcdDeviceL,#01H MOV iManufacture,#01H MOV iProducts,#02H MOV iSerialNumber,#03H MOV bNumConfigurations,#01H CALL WRITE_18_BYTE_DESCRIPTORS RET WRITE_18_BYTE_DESCRIPTORS: CALL SELECT_CONTROL_IN_ENDPOINT MOV A,NUMBER_OF_FRAME INC NUMBER_OF_FRAME CJNE A,#0,SECOND_8_BYTES CALL WRITE_BUFFER MOV DYTA,#8 CALL USB_DATA_WRITE FIST_8_BYTE: MOV R0,#30H SAVING1: MOV DYTA,@R0 CALL USB_DATA_WRITE INC R0 MOV A,R0 CJNE A,#38H,SAVING1 RET SECOND_8_BYTES: CJNE A,#1,THIRD_2_BYTES CALL WRITE_BUFFER MOV DYTA,#8 CALL USB_DATA_WRITE MOV R0,#38H SAVING2: MOV DYTA,@R0 CALL USB_DATA_WRITE INC R0 MOV A,R0 CJNE A,#40H,SAVING2 RET THIRD_2_BYTES: MOV NUMBER_OF_FRAME,#0 CALL WRITE_BUFFER MOV R0,#40H MOV DYTA,#2 CALL USB_DATA_WRITE SAVING3: MOV DYTA,@R0 CALL USB_DATA_WRITE INC R0 MOV A,R0 CJNE A,#42H,SAVING3 CALL SEND_ZERO_LENGTH_PACKET RET |