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

📄 chap9.lis

📁 基于D12
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module CHAP9.C
                        .area lit(rom, con, rel)
 0000           _DeviceDescr::
 0000 12                .byte 18
 0001 01                .byte 1
 0002 0100              .word 1
 0004 00                .byte 0
 0005 00                .byte 0
 0006 00                .byte 0
 0007 10                .byte 16
 0008 0584              .word 33797
 000A 0001              .word 256
 000C 0100              .word 1
 000E 00                .byte 0
 000F 00                .byte 0
 0010 00                .byte 0
 0011 01                .byte 1
 0012                   .dbfile J:\PDIUSBD12-Materials\富昌\优盘5.0\CHAP9.C
 0012                   .dbstruct 0 18 _USB_DEVICE_DESCRIPTOR
 0012                   .dbfield 0 bLength c
 0012                   .dbfield 1 bDescriptorType c
 0012                   .dbfield 2 bcdUSB s
 0012                   .dbfield 4 bDeviceClass c
 0012                   .dbfield 5 bDeviceSubClass c
 0012                   .dbfield 6 bDeviceProtocol c
 0012                   .dbfield 7 bMaxPacketSize0 c
 0012                   .dbfield 8 idVendor s
 0012                   .dbfield 10 idProduct s
 0012                   .dbfield 12 bcdDevice s
 0012                   .dbfield 14 iManufacturer c
 0012                   .dbfield 15 iProduct c
 0012                   .dbfield 16 iSerialNumber c
 0012                   .dbfield 17 bNumConfigurations c
 0012                   .dbend
 0012                   .dbsym e DeviceDescr _DeviceDescr kS[_USB_DEVICE_DESCRIPTOR]
 0012           _ConfigDescr::
 0012 09                .byte 9
 0013 02                .byte 2
 0014 2E00              .word 46
 0016 01                .byte 1
 0017 01                .byte 1
 0018 00                .byte 0
 0019 80                .byte 128
 001A FA                .byte 250
 001B                   .dbstruct 0 9 _USB_CONFIGURATION_DESCRIPTOR
 001B                   .dbfield 0 bLength c
 001B                   .dbfield 1 bDescriptorType c
 001B                   .dbfield 2 wTotalLength s
 001B                   .dbfield 4 bNumInterfaces c
 001B                   .dbfield 5 bConfigurationValue c
 001B                   .dbfield 6 iConfiguration c
 001B                   .dbfield 7 bmAttributes c
 001B                   .dbfield 8 MaxPower c
 001B                   .dbend
 001B                   .dbsym e ConfigDescr _ConfigDescr kS[_USB_CONFIGURATION_DESCRIPTOR]
 001B           _InterfaceDescr::
 001B 09                .byte 9
 001C 04                .byte 4
 001D 00                .byte 0
 001E 00                .byte 0
 001F 04                .byte 4
 0020 08                .byte 8
 0021 06                .byte 6
 0022 50                .byte 80
 0023 00                .byte 0
 0024                   .dbstruct 0 9 _USB_INTERFACE_DESCRIPTOR
 0024                   .dbfield 0 bLength c
 0024                   .dbfield 1 bDescriptorType c
 0024                   .dbfield 2 bInterfaceNumber c
 0024                   .dbfield 3 bAlternateSetting c
 0024                   .dbfield 4 bNumEndpoints c
 0024                   .dbfield 5 bInterfaceClass c
 0024                   .dbfield 6 bInterfaceSubClass c
 0024                   .dbfield 7 bInterfaceProtocol c
 0024                   .dbfield 8 iInterface c
 0024                   .dbend
 0024                   .dbsym e InterfaceDescr _InterfaceDescr kS[_USB_INTERFACE_DESCRIPTOR]
 0024           _EP1_TXDescr::
 0024 07                .byte 7
 0025 05                .byte 5
 0026 81                .byte 129
 0027 03                .byte 3
 0028 0400              .word 4
 002A 0A                .byte 10
 002B                   .dbstruct 0 7 _USB_ENDPOINT_DESCRIPTOR
 002B                   .dbfield 0 bLength c
 002B                   .dbfield 1 bDescriptorType c
 002B                   .dbfield 2 bEndpointAddress c
 002B                   .dbfield 3 bmAttributes c
 002B                   .dbfield 4 wMaxPacketSize s
 002B                   .dbfield 6 bInterval c
 002B                   .dbend
 002B                   .dbsym e EP1_TXDescr _EP1_TXDescr kS[_USB_ENDPOINT_DESCRIPTOR]
 002B           _EP1_RXDescr::
 002B 07                .byte 7
 002C 05                .byte 5
 002D 01                .byte 1
 002E 03                .byte 3
 002F 0400              .word 4
 0031 0A                .byte 10
 0032                   .dbsym e EP1_RXDescr _EP1_RXDescr kS[_USB_ENDPOINT_DESCRIPTOR]
 0032           _EP2_TXDescr::
 0032 07                .byte 7
 0033 05                .byte 5
 0034 82                .byte 130
 0035 02                .byte 2
 0036 4000              .word 64
 0038 0A                .byte 10
 0039                   .dbsym e EP2_TXDescr _EP2_TXDescr kS[_USB_ENDPOINT_DESCRIPTOR]
 0039           _EP2_RXDescr::
 0039 07                .byte 7
 003A 05                .byte 5
 003B 02                .byte 2
 003C 02                .byte 2
 003D 4000              .word 64
 003F 0A                .byte 10
 0040                   .dbsym e EP2_RXDescr _EP2_RXDescr kS[_USB_ENDPOINT_DESCRIPTOR]
                        .area text(rom, con, rel)
 0000                   .dbfile J:\PDIUSBD12-Materials\富昌\优盘5.0\CHAP9.C
 0000                   .dbfunc e reserved _reserved fV
                        .even
 0000           _reserved::
 0000                   .dbline -1
 0000                   .dbline 102
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; #include <string.h>
 0000           ; 
 0000           ; #include "D12CI.H"
 0000           ; #include "MAIN.H"
 0000           ; #include "USB100.H"
 0000           ; #include "CHAP9.H"
 0000           ; 
 0000           ; extern void single_transmit(unsigned char *buf,unsigned char len);
 0000           ; extern void code_transmit(const unsigned char * pRomData,unsigned short len);
 0000           ; extern void stall_ep0(void);
 0000           ; extern void init_unconfig(void);
 0000           ; extern void init_config(void);
 0000           ; 
 0000           ; #define NUM_ENDPOINTS 4
 0000           ; #define CONFIG_DESCRIPTOR_LENGTH  sizeof(USB_CONFIGURATION_DESCRIPTOR)\
 0000           ;                                  +sizeof(USB_INTERFACE_DESCRIPTOR)\
 0000           ;                                  +(NUM_ENDPOINTS*sizeof(USB_ENDPOINT_DESCRIPTOR))
 0000           ; extern CONTROL_XFER ControlData;
 0000           ; extern IO_REQUEST   ioRequest;
 0000           ; extern EPPFLAGS     bEPPflags;
 0000           ; 
 0000           ; const USB_DEVICE_DESCRIPTOR DeviceDescr=
 0000           ; {
 0000           ;   sizeof(USB_DEVICE_DESCRIPTOR),
 0000           ;   USB_DEVICE_DESCRIPTOR_TYPE,
 0000           ;   0x0001,//SWAP(0x0100),
 0000           ;   0,//USB_CLASS_CODE_TEST_CLASS_DEVICE,
 0000           ;   0,
 0000           ;   0,
 0000           ;   EP0_PACKET_SIZE,
 0000           ;   0x8405,//SWAP(0x0471),
 0000           ;   0x0100,//SWAP(0x0666),
 0000           ;   0x0001,//SWAP(0x0100),
 0000           ;   0,
 0000           ;   0,
 0000           ;   0,
 0000           ;   0x01
 0000           ; };
 0000           ; const USB_CONFIGURATION_DESCRIPTOR ConfigDescr=
 0000           ; {
 0000           ;   sizeof(USB_CONFIGURATION_DESCRIPTOR),
 0000           ;   USB_CONFIGURATION_DESCRIPTOR_TYPE,
 0000           ;   CONFIG_DESCRIPTOR_LENGTH,//SWAP(CONFIG_DESCRIPTOR_LENGTH),
 0000           ;   1,
 0000           ;   1,
 0000           ;   0,
 0000           ;   0x80,
 0000           ;   0xfa
 0000           ; };
 0000           ; const USB_INTERFACE_DESCRIPTOR InterfaceDescr=
 0000           ; {
 0000           ;   sizeof(USB_INTERFACE_DESCRIPTOR),
 0000           ;   USB_INTERFACE_DESCRIPTOR_TYPE,
 0000           ;   0,
 0000           ;   0,
 0000           ;   NUM_ENDPOINTS,
 0000           ;   USB_DEVICE_CLASS_STORAGE,
 0000           ;   0x06,//SCSI
 0000           ;   0x50,//bulk only Transport
 0000           ;   0
 0000           ; };
 0000           ; const USB_ENDPOINT_DESCRIPTOR EP1_TXDescr=
 0000           ; {
 0000           ;   sizeof(USB_ENDPOINT_DESCRIPTOR),
 0000           ;   USB_ENDPOINT_DESCRIPTOR_TYPE,
 0000           ;   0x81,
 0000           ;   USB_ENDPOINT_TYPE_INTERRUPT,
 0000           ;   EP1_PACKET_SIZE,//SWAP(EP1_PACKET_SIZE),
 0000           ;   10
 0000           ; };
 0000           ; const USB_ENDPOINT_DESCRIPTOR EP1_RXDescr=
 0000           ; {
 0000           ;   sizeof(USB_ENDPOINT_DESCRIPTOR),
 0000           ;   USB_ENDPOINT_DESCRIPTOR_TYPE,
 0000           ;   0x1,
 0000           ;   USB_ENDPOINT_TYPE_INTERRUPT,
 0000           ;   EP1_PACKET_SIZE,//SWAP(EP1_PACKET_SIZE),
 0000           ;   10
 0000           ; };
 0000           ; const USB_ENDPOINT_DESCRIPTOR EP2_TXDescr=
 0000           ; {
 0000           ;   sizeof(USB_ENDPOINT_DESCRIPTOR),
 0000           ;   USB_ENDPOINT_DESCRIPTOR_TYPE,
 0000           ;   0x82,
 0000           ;   USB_ENDPOINT_TYPE_BULK,
 0000           ;   EP2_PACKET_SIZE,//SWAP(EP2_PACKET_SIZE),
 0000           ;   10
 0000           ; };
 0000           ; const USB_ENDPOINT_DESCRIPTOR EP2_RXDescr=
 0000           ; {
 0000           ;   sizeof(USB_ENDPOINT_DESCRIPTOR),
 0000           ;   USB_ENDPOINT_DESCRIPTOR_TYPE,
 0000           ;   0x2,
 0000           ;   USB_ENDPOINT_TYPE_BULK,
 0000           ;   EP2_PACKET_SIZE,//SWAP(EP2_PACKET_SIZE),
 0000           ;   10
 0000           ; };
 0000           ; //USB Protocol layer
 0000           ; void reserved(void)
 0000           ; {
 0000                   .dbline 103
 0000           ;   stall_ep0();
 0000 0E940000          xcall _stall_ep0
 0004                   .dbline -2
 0004           L1:
 0004                   .dbline 0 ; func end
 0004 0895              ret
 0006                   .dbend
 0006                   .dbfunc e get_status _get_status fV
 0006           ;              c -> R20
 0006           ;           endp -> R22
 0006           ;          txdat -> y+0
 0006           ;     bRecipient -> R20
                        .even
 0006           _get_status::
 0006 0E940000          xcall push_gset2
 000A 2297              sbiw R28,2
 000C                   .dbline -1
 000C                   .dbline 107
 000C           ; }
 000C           ; //USB standard device requests
 000C           ; void get_status(void)
 000C           ; {
 000C                   .dbline 109
 000C           ;   unsigned char endp,txdat[2];
 000C           ;   unsigned char bRecipient=ControlData.DeviceRequest.bmRequestType&USB_RECIPIENT;
 000C 40910000          lds R20,_ControlData
 0010 4F71              andi R20,31
 0012                   .dbline 111
 0012           ;   unsigned char c;
 0012           ;   if(bRecipient==USB_RECIPIENT_DEVICE)
 0012 A1F4              brne L3
 0014                   .dbline 112
 0014           ;   {
 0014                   .dbline 113
 0014           ;     if(bEPPflags.bits.remote_wakeup==1)
 0014 80910000          lds R24,_bEPPflags
 0018 8695              lsr R24
 001A 8695              lsr R24
 001C 8695              lsr R24
 001E 8170              andi R24,1
 0020 8130              cpi R24,1
 0022 19F4              brne L5
 0024                   .dbline 114
 0024           ;        txdat[0]=3;
 0024 83E0              ldi R24,3
 0026 8883              std y+0,R24
 0028 02C0              xjmp L6
 002A           L5:
 002A                   .dbline 116
 002A           ;     else
 002A           ;        txdat[0]=1;
 002A 81E0              ldi R24,1
 002C 8883              std y+0,R24
 002E           L6:
 002E                   .dbline 117
 002E           ;     txdat[1]=0;
 002E 2224              clr R2
 0030 2982              std y+1,R2
 0032                   .dbline 118
 0032           ;     single_transmit(txdat,2);
 0032 22E0              ldi R18,2
 0034 8E01              movw R16,R28
 0036 0E940000          xcall _single_transmit
 003A                   .dbline 119
 003A           ;   }
 003A 34C0              xjmp L4
 003C           L3:
 003C                   .dbline 120
 003C           ;   else if(bRecipient==USB_RECIPIENT_INTERFACE)
 003C 4130              cpi R20,1
 003E 41F4              brne L8
 0040                   .dbline 121
 0040           ;   {
 0040                   .dbline 122
 0040           ;     txdat[0]=0;
 0040 2224              clr R2
 0042 2882              std y+0,R2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -