📄 usb_main.lst
字号:
1062
1063 //P81厂商请求函数-PROTODMA.C
1064 //===============================================================
1065 //===============================================================
1066 void get_firmware_version()
1067 {
1068 1 unsigned char i;
1069 1
1070 1 i = 0x30; // firmware version number
1071 1 single_transmit((unsigned char *)&i, 1);
1072 1
1073 1 }
1074
1075 void get_buffer_size()
1076 {
1077 1 unsigned char i[4];
1078 1
1079 1 if(bNoRAM == TRUE) {
1080 2 i[0] = EP2_PACKET_SIZE;
1081 2 i[1] = 0;
1082 2 i[2] = 0;
1083 2 i[3] = 0;
1084 2 } else {
1085 2 i[0] = 0;
1086 2 i[1] = 1;
1087 2 i[2] = 0;
1088 2 i[3] = 0;
1089 2 }
1090 1 single_transmit(i, 4);
1091 1
1092 1 }
1093
1094 void setup_dma_request()
1095 {
1096 1 memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
1097 1 ControlData.dataBuffer,
1098 1 ControlData.DeviceRequest.wLength);
1099 1
1100 1 ioRequest.uSize = SWAP(ioRequest.uSize);
1101 1 ioRequest.uAddressL = SWAP(ioRequest.uAddressL);
1102 1
1103 1 if(ioRequest.uSize > DMA_BUFFER_SIZE) { // Unaccepted request
1104 2 stall_ep0();
1105 2 }
1106 1 else if(bNoRAM == TRUE && ioRequest.uSize > EP2_PACKET_SIZE) {
1107 2 stall_ep0();
1108 2 }
1109 1 else {
C51 COMPILER V6.23a USB_MAIN 12/24/2005 14:35:50 PAGE 19
1110 2 if(bEPPflags.bits.dma_state == DMA_IDLE) {
1111 3 DISABLE;
1112 3 bEPPflags.bits.setup_dma ++;
1113 3 ENABLE;
1114 3 }
1115 2 else {
1116 3 DISABLE;
1117 3 bEPPflags.bits.dma_state = DMA_PENDING;
1118 3 ENABLE;
1119 3 }
1120 2
1121 2 } // else if accepted request
1122 1 }
1123
1124 void read_write_register(void)
1125 {
1126 1 unsigned char i;
1127 1
1128 1 if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
1129 2
1130 2 if(bEPPflags.bits.verbose)
1131 2 printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
1132 2 ControlData.DeviceRequest.wValue,
1133 2 ControlData.DeviceRequest.wLength,
1134 2 ControlData.DeviceRequest.wIndex);
1135 2
1136 2 if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
1137 2 ControlData.DeviceRequest.wValue == 0 &&
1138 2 ControlData.DeviceRequest.wLength == 1)
1139 2 get_firmware_version();
1140 2 else
1141 2 if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
1142 2 ControlData.DeviceRequest.wValue == 0 &&
1143 2 ControlData.DeviceRequest.wLength == 4)
1144 2 get_buffer_size();
1145 2 else
1146 2 stall_ep0();
1147 2
1148 2 } // if read register
1149 1 else{
1150 2 if(bEPPflags.bits.verbose) {
1151 3
1152 3 //printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
1153 3 // ControlData.DeviceRequest.wValue,
1154 3 // ControlData.DeviceRequest.wLength,
1155 3 // ControlData.DeviceRequest.wIndex);
1156 3
1157 3 //printf("Data: ");
1158 3 for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
1159 3 printf("0x%bx, ", *((ControlData.dataBuffer)+i));
1160 3 printf("\n");
1161 3 }
1162 2
1163 2 if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
1164 2 ControlData.DeviceRequest.wValue == 0 &&
1165 2 ControlData.DeviceRequest.wLength == 6)
1166 2 setup_dma_request();
1167 2 //stall_ep0();
1168 2 else
1169 2 stall_ep0();
1170 2 } // if write register
1171 1 }
C51 COMPILER V6.23a USB_MAIN 12/24/2005 14:35:50 PAGE 20
1172 //P81厂商请求函数-PROTODMA.C ----结束
1173 //===============================================================
1174 //===============================================================
C51 COMPILER V6.23a USB_MAIN 12/24/2005 14:35:50 PAGE 21
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
bNoRAM . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
inportb. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0003H -----
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
_IO_REQUEST. . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 6
uAddressL. . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
bAddressH. . . . . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
uSize. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0003H 2
bCommand . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0005H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
ULONG. . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
stall_ep0. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
USB_STRING_DESCRIPTOR. . . . . . . . . TYPEDEF ----- STRUCT ----- 3
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bString. . . . . . . . . . . . . . . MEMBER ----- ARRAY 0002H 1
InterfaceDescr . . . . . . . . . . . . PUBLIC CODE STRUCT 0062H 9
USB_CONFIGURATION_DESCRIPTOR . . . . . TYPEDEF ----- STRUCT ----- 9
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
wTotalLength . . . . . . . . . . . . MEMBER ----- U_INT 0002H 2
bNumInterfaces . . . . . . . . . . . MEMBER ----- U_CHAR 0004H 1
bConfigurationValue. . . . . . . . . MEMBER ----- U_CHAR 0005H 1
iConfiguration . . . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
bmAttributes . . . . . . . . . . . . MEMBER ----- U_CHAR 0007H 1
MaxPower . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0008H 1
USB_HUB_DESCRIPTOR . . . . . . . . . . TYPEDEF ----- STRUCT ----- 71
bDescriptorLength. . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bNumberOfPorts . . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
wHubCharacteristics. . . . . . . . . MEMBER ----- U_INT 0003H 2
bPowerOnToPowerGood. . . . . . . . . MEMBER ----- U_CHAR 0005H 1
bHubControlCurrent . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
bRemoveAndPowerMask. . . . . . . . . MEMBER ----- ARRAY 0007H 64
PUSB_POWER_DESCRIPTOR. . . . . . . . . TYPEDEF ----- PTR ----- 3
P0_0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0080H 1
init_config. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
P1_0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
P0_1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0081H 1
FL . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D1H 1
P2_0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A0H 1
P1_1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
P0_2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0082H 1
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
reconnect_USB. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
clk_cnt. . . . . . . . . . . . . . . AUTO DATA U_LONG 0000H 4
_D12_SelectEndpoint. . . . . . . . . . PUBLIC CODE PROC 0000H -----
bEndp. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
c. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
P3_0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
P2_1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A1H 1
C51 COMPILER V6.23a USB_MAIN 12/24/2005 14:35:50 PAGE 22
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1_2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0092H 1
P0_3 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0083H 1
P3_1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
P2_2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A2H 1
P1_3 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0093H 1
P0_4 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0084H 1
_D12_ReadLastTransactionStatus . . . . PUBLIC CODE PROC 0000H -----
bEndp. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
USB_ENDPOINT_DESCRIPTOR. . . . . . . . TYPEDEF ----- STRUCT ----- 7
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bEndpointAddress . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
bmAttributes . . . . . . . . . . . . MEMBER ----- U_CHAR 0003H 1
wMaxPacketSize . . . . . . . . . . . MEMBER ----- U_INT 0004H 2
bInterval. . . . . . . . . . . . . . MEMBER ----- U_CHAR 0006H 1
P3_2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
P2_3 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A3H 1
P1_4 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0094H 1
P0_5 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0085H 1
PUSB_INTERFACE_DESCRIPTOR. . . . . . . TYPEDEF ----- PTR ----- 3
EXF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
P3_3 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
P2_4 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A4H 1
P1_5 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0095H 1
P0_6 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0086H 1
_epp_flags . . . . . . . . . . . . . . * TAG * ----- UNION ----- 2
bits . . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 2
value. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
P3_4 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
P2_5 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A5H 1
P1_6 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1
P0_7 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0087H 1
P3_5 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
P2_6 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A6H 1
P1_7 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0097H 1
set_address. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
P3_6 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
P2_7 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1
P3_7 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
_D12_AcknowledgeEndpoint . . . . . . . PUBLIC CODE PROC 0000H -----
endp . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
main_rxdone. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
len. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
_D12_SetMode . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
bConfig. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
bClkDiv. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
main_txdone. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
len. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
set_feature. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
endp . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
C51 COMPILER V6.23a USB_MAIN 12/24/2005 14:35:50 PAGE 23
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
bRecipient . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
_outportdata . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
value. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_USB_POWER_DESCRIPTOR. . . . . . . . . * TAG * ----- STRUCT ----- 18
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bCapabilitiesFlags . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
EventNotification. . . . . . . . . . MEMBER ----- U_INT 0003H 2
D1LatencyTime. . . . . . . . . . . . MEMBER ----- U_INT 0005H 2
D2LatencyTime. . . . . . . . . . . . MEMBER ----- U_INT 0007H 2
D3LatencyTime. . . . . . . . . . . . MEMBER ----- U_INT 0009H 2
PowerUnit. . . . . . . . . . . . . . MEMBER ----- U_CHAR 000BH 1
D0PowerConsumption . . . . . . . . . MEMBER ----- U_INT 000CH 2
D1PowerConsumption . . . . . . . . . MEMBER ----- U_INT 000EH 2
D2PowerConsumption . . . . . . . . . MEMBER ----- U_INT 0010H 2
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
get_configuration. . . . . . . . . . . PUBLIC CODE PROC 0000H -----
c. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
_USB_INTERFACE_DESCRIPTOR. . . . . . . * TAG * ----- STRUCT ----- 9
bLength. . . . . . . . . . . . . . . MEMBER ----- U_CHAR 0000H 1
bDescriptorType. . . . . . . . . . . MEMBER ----- U_CHAR 0001H 1
bInterfaceNumber . . . . . . . . . . MEMBER ----- U_CHAR 0002H 1
bAlternateSetting. . . . . . . . . . MEMBER ----- U_CHAR 0003H 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -