📄 f34x_msd_usb_std_req.src
字号:
; .\F34x_MSD_USB_Std_Req.SRC generated from: F34x_MSD_USB_Std_Req.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE F34x_MSD_USB_Std_Req.c LARGE OPTIMIZE(9,SPEED) BROWSE NOAREGS DEBUG OBJECTEXTEND SRC(.\F34x_MSD_USB_Std_Req.SRC)
$NOMOD51
NAME F34X_MSD_USB_STD_REQ
CCF2 BIT 0D8H.2
TB80 BIT 098H.3
SPI0CKR DATA 0A2H
CCF3 BIT 0D8H.3
P0 DATA 080H
SPIEN BIT 0F8H.0
CCF4 BIT 0D8H.4
P1 DATA 090H
P2 DATA 0A0H
ADC0CF DATA 0BCH
P3 DATA 0B0H
AC BIT 0D0H.6
P4 DATA 0C7H
EIE1 DATA 0E6H
START_STOP_SPI BIT 0B0H.0
EA BIT 0A8H.7
MCE0 BIT 098H.5
EIE2 DATA 0E7H
USB0XCN DATA 0D7H
PSCTL DATA 08FH
CF BIT 0D8H.7
IT01CF DATA 0E4H
ADC0CN DATA 0E8H
P0MDOUT DATA 0A4H
P1MDOUT DATA 0A5H
TMR2RLH DATA 0CBH
IE DATA 0A8H
P2MDOUT DATA 0A6H
T2CE BIT 0C8H.4
P3MDOUT DATA 0A7H
TMR3RLH DATA 093H
EIP1 DATA 0F6H
P4MDOUT DATA 0AEH
TXBMT BIT 0F8H.1
EIP2 DATA 0F7H
PCA0CPH0 DATA 0FCH
TMR2RLL DATA 0CAH
PCA0CPH1 DATA 0EAH
TMR3RLL DATA 092H
PCA0CPH2 DATA 0ECH
CR BIT 0D8H.6
T2SPLIT BIT 0C8H.3
TF2H BIT 0C8H.7
PCA0CPH3 DATA 0EEH
REN0 BIT 098H.4
PCA0CPH4 DATA 0FEH
PCA0CPL0 DATA 0FBH
EMI0CF DATA 085H
PCA0CPL1 DATA 0E9H
PCA0CPM0 DATA 0DAH
PCA0MD DATA 0D9H
PCA0CN DATA 0D8H
PCA0CPL2 DATA 0EBH
PCA0CPM1 DATA 0DBH
TF2L BIT 0C8H.6
PCA0CPL3 DATA 0EDH
PCA0CPM2 DATA 0DCH
IP DATA 0B8H
ARBLOST BIT 0C0H.2
PCA0CPL4 DATA 0FDH
PCA0CPM3 DATA 0DDH
PCA0CPM4 DATA 0DEH
CY BIT 0D0H.7
SI BIT 0C0H.0
XBR0 DATA 0E1H
SMB0CF DATA 0C1H
XBR1 DATA 0E2H
PFE0CN DATA 0AFH
EMI0CN DATA 0AAH
XBR2 DATA 0E3H
REF0CN DATA 0D1H
REG0CN DATA 0C9H
AD0INT BIT 0E8H.5
SP DATA 081H
EMI0TC DATA 084H
OV BIT 0D0H.2
SMB0CN DATA 0C0H
MODF BIT 0F8H.5
SBCON1 DATA 0ACH
START_STOP_WRITE_TO BIT 0B0H.2
S0MODE BIT 098H.7
VDM0CN DATA 0FFH
P0MDIN DATA 0F1H
CPT0MD DATA 09DH
CPT0CN DATA 09BH
P1MDIN DATA 0F2H
CPT1MD DATA 09CH
CPT1CN DATA 09AH
P2MDIN DATA 0F3H
TF2LEN BIT 0C8H.5
P3MDIN DATA 0F4H
P4MDIN DATA 0F5H
SBRLH1 DATA 0B5H
SPI0CN DATA 0F8H
PCON DATA 087H
SBRLL1 DATA 0B4H
SPIF BIT 0F8H.7
TMOD DATA 089H
TCON DATA 088H
WCOL BIT 0F8H.6
NSSMD0 BIT 0F8H.2
NSSMD1 BIT 0F8H.3
TMR2CN DATA 0C8H
P0SKIP DATA 0D4H
TMR3CN DATA 091H
START_STOP_READ_TO BIT 0B0H.1
T2XCLK BIT 0C8H.0
P1SKIP DATA 0D5H
P2SKIP DATA 0D6H
P3SKIP DATA 0DFH
IE0 BIT 088H.1
CPT0MX DATA 09FH
IE1 BIT 088H.3
OSCICL DATA 0B3H
CPT1MX DATA 09EH
CLKSEL DATA 0A9H
B DATA 0F0H
ADC0H DATA 0BEH
OSCICN DATA 0B2H
OSCLCN DATA 086H
ADC0L DATA 0BDH
ACC DATA 0E0H
ES0 BIT 0A8H.4
AD0EN BIT 0E8H.7
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
CLKMUL DATA 0B9H
ET2 BIT 0A8H.5
RI0 BIT 098H.0
TF1 BIT 088H.7
TH0 DATA 08CH
EX0 BIT 0A8H.0
TI0 BIT 098H.1
IT0 BIT 088H.0
PCA0H DATA 0FAH
TH1 DATA 08DH
MASTER BIT 0C0H.7
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
ACK BIT 0C0H.1
OSCXCN DATA 0B1H
TL0 DATA 08AH
PCA0L DATA 0F9H
TL1 DATA 08BH
TXMODE BIT 0C0H.6
PS0 BIT 0B8H.4
PT0 BIT 0B8H.1
RS0 BIT 0D0H.3
PT1 BIT 0B8H.3
RS1 BIT 0D0H.4
PT2 BIT 0B8H.5
TR0 BIT 088H.4
AD0TM BIT 0E8H.6
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
ADC0GTH DATA 0C4H
DPL DATA 082H
ADC0GTL DATA 0C3H
SBUF0 DATA 099H
ESPI0 BIT 0A8H.6
SBUF1 DATA 0D3H
ADC0LTH DATA 0C6H
RSTSRC DATA 0EFH
SCON0 DATA 098H
SMOD1 DATA 0E5H
SCON1 DATA 0D2H
AMX0N DATA 0BAH
ADC0LTL DATA 0C5H
AMX0P DATA 0BBH
STA BIT 0C0H.5
PSPI0 BIT 0B8H.6
SMB0DAT DATA 0C2H
TMR2H DATA 0CDH
SPI0CFG DATA 0A1H
TMR3H DATA 095H
CKCON DATA 08EH
T2CSS BIT 0C8H.1
RXOVRN BIT 0F8H.4
TMR2L DATA 0CCH
ACKRQ BIT 0C0H.3
USB0ADR DATA 096H
TMR3L DATA 094H
F0 BIT 0D0H.5
FLSCL DATA 0B6H
USB0DAT DATA 097H
AD0CM0 BIT 0E8H.0
F1 BIT 0D0H.1
STO BIT 0C0H.4
AD0CM1 BIT 0E8H.1
SPI0DAT DATA 0A3H
AD0CM2 BIT 0E8H.2
AD0WINT BIT 0E8H.3
AD0BUSY BIT 0E8H.4
PSW DATA 0D0H
CCF0 BIT 0D8H.0
RB80 BIT 098H.2
FLKEY DATA 0B7H
CCF1 BIT 0D8H.1
?PR?Get_Status?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Clear_Feature?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Set_Feature?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Set_Address?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Get_Descriptor?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Get_Configuration?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Set_Configuration?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Get_Interface?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?Set_Interface?F34X_MSD_USB_STD_REQ SEGMENT CODE
?CO?F34X_MSD_USB_STD_REQ SEGMENT CODE
?PR?F34X_MSD_USB_STD_REQ SEGMENT CODE
EXTRN XDATA (Data_Ptr)
EXTRN XDATA (Setup)
EXTRN XDATA (Ep_Status)
EXTRN XDATA (String_Desc_Table)
EXTRN CODE (Device_Desc)
EXTRN CODE (Config_Desc)
EXTRN XDATA (USB_State)
EXTRN CODE (Force_Stall)
EXTRN CODE (Endpoint1_Desc)
EXTRN CODE (Endpoint2_Desc)
EXTRN XDATA (Data_Sent)
EXTRN CODE (Interface_Desc)
EXTRN XDATA (Data_Size)
EXTRN CODE (?C?CLDPTR)
PUBLIC ZERO_PACKET
PUBLIC ONES_PACKET
PUBLIC Set_Interface
PUBLIC Get_Interface
PUBLIC Set_Configuration
PUBLIC Get_Configuration
PUBLIC Get_Descriptor
PUBLIC Set_Address
PUBLIC Set_Feature
PUBLIC Clear_Feature
PUBLIC Get_Status
RSEG ?CO?F34X_MSD_USB_STD_REQ
ONES_PACKET:
DB 001H
DB 000H
ZERO_PACKET:
DB 000H
DB 000H
; //-----------------------------------------------------------------------------
; // F34x_MSD_USB_Std_Req.c
; //-----------------------------------------------------------------------------
; // Copyright 2006 Silicon Laboratories, Inc.
; // http://www.silabs.com
; //
; // Program Description:
; //
; // This source file contains the subroutines used to handle incoming setup
; // packets. These are called by Handle_Setup in F34x_USB_ISR.c and used for
; // USB chapter 9 compliance.
; //
; //
; //
; // How To Test: See Readme.txt
; //
; //
; // FID: 34X000066
; // Target: C8051F34x
; // Tool chain: Keil
; // Command Line: See Readme.txt
; // Project Name: F34x_USB_MSD
; //
; // Release 1.1
; // -All changes by PKC
; // -09 JUN 2006
; // -Replaced SFR definitions file "c8051f320.h" with "c8051f340.h"
; //
; // Release 1.0
; // -Initial Release
; //
;
; //-----------------------------------------------------------------------------
; // Includes
; //-----------------------------------------------------------------------------
;
; #include "c8051f340.h"
; #include "F34x_MSD_USB_Register.h"
; #include "F34x_MSD_USB_Main.h"
; #include "F34x_MSD_USB_Descriptor.h"
; #include "F34x_MSD_Msd.h"
;
; extern device_descriptor Device_Desc; // These are created in F34x_USB_Descriptor.h
; extern configuration_descriptor Config_Desc;
; extern interface_descriptor Interface_Desc;
; extern endpoint_descriptor Endpoint1_Desc;
; extern endpoint_descriptor Endpoint2_Desc;
; extern BYTE* String_Desc_Table[];
;
; extern setup_buffer Setup; // Buffer for current device request information
; extern xdata unsigned int Data_Size;
; extern xdata unsigned int Data_Sent;
; extern BYTE* Data_Ptr;
;
; extern BYTE Ep_Status[]; // This array contains status bytes for EP 0-2
;
; code BYTE ONES_PACKET[2] = {0x01, 0x00}; // These are response packets used for
; code BYTE ZERO_PACKET[2] = {0x00, 0x00}; // communication with host
;
; extern xdata BYTE USB_State; // Determines current USB device state
;
;
; //----------------------------------------------------------------------------
; // Get_Status
; //----------------------------------------------------------------------------
; //
; // This routine returns a two byte status packet
; // to the host
; //
; // Parameters :
; // Return Value :
; //----------------------------------------------------------------------------
;
RSEG ?PR?F34X_MSD_USB_STD_REQ
Com009B:
L?0156:
USING 0
L?0157:
MOV USB0ADR,#011H
MOV USB0DAT,#040H
MOV DPTR,#Ep_Status
MOV A,#01H
MOVX @DPTR,A
CLR A
MOV DPTR,#Data_Sent
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
RET
L?0158:
USING 0
L?0159:
MOV DPTR,#Data_Ptr
L?0160:
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (ZERO_PACKET)
MOVX @DPTR,A
INC DPTR
MOV A,#LOW (ZERO_PACKET)
RET
L?0161:
USING 0
MOV USB0ADR,#0EH
CLR A
MOV USB0DAT,A
L?0162:
MOV DPTR,#Ep_Status
MOVX A,@DPTR
XRL A,#04H
RET
L?0163:
USING 0
L?0164:
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (ONES_PACKET)
MOVX @DPTR,A
INC DPTR
MOV A,#LOW (ONES_PACKET)
RET
L?0165:
USING 0
L?0166:
MOVX @DPTR,A
MOV DPTR,#Data_Size
CLR A
MOVX @DPTR,A
INC DPTR
RET
L?0167:
USING 0
L?0168:
MOV USB0ADR,#011H
MOV USB0DAT,#048H
RET
L?0169:
USING 0
L?0170:
MOV DPTR,#Data_Ptr
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
RET
L?0171:
USING 0
L?0172:
MOV DPTR,#USB_State
MOVX A,@DPTR
XRL A,#04H
RET
L?0173:
USING 0
L?0174:
MOV USB0ADR,#0EH
MOV USB0DAT,#01H
RET
; END OF Com009B
; void Get_Status(void)
RSEG ?PR?Get_Status?F34X_MSD_USB_STD_REQ
Get_Status:
USING 0
; SOURCE LINE # 74
; {
; SOURCE LINE # 75
;
; if (Setup.wValue.c[MSB] || Setup.wValue.c[LSB] ||
; SOURCE LINE # 77
MOV DPTR,#Setup+02H
MOVX A,@DPTR
JNZ ?C0002
INC DPTR
MOVX A,@DPTR
JNZ ?C0002
MOV DPTR,#Setup+06H
MOVX A,@DPTR
JNZ ?C0002
INC DPTR
MOVX A,@DPTR
XRL A,#02H
JZ ?C0001
?C0002:
; // If non-zero return length or data length not
; Setup.wLength.c[MSB] || (Setup.wLength.c[LSB] != 2))
; // equal to 2 then send a stall
; { // indicating invalid request
; SOURCE LINE # 81
; Force_Stall();
; SOURCE LINE # 82
LCALL Force_Stall
; }
; SOURCE LINE # 83
?C0001:
;
; switch(Setup.bmRequestType) // Determine if recipient was device, interface, or EP
; SOURCE LINE # 85
MOV DPTR,#Setup
MOVX A,@DPTR
ADD A,#07FH
JZ ?C0008
DEC A
JZ ?C0012
ADD A,#02H
JNZ ?C0024
; {
; SOURCE LINE # 86
; case OUT_DEVICE: // If recipient was device
; SOURCE LINE # 87
?C0004:
; if (Setup.wIndex.c[MSB] || Setup.wIndex.c[LSB])
; SOURCE LINE # 88
MOV DPTR,#Setup+04H
MOVX A,@DPTR
JNZ ?C0139
INC DPTR
MOVX A,@DPTR
JZ ?C0140
?C0006:
; {
; SOURCE LINE # 89
; Force_Stall(); // Send stall if request is invalid
; SOURCE LINE # 90
; }
; SOURCE LINE # 91
LJMP ?C0145
; else
; {
; Data_Ptr = (BYTE*)&ZERO_PACKET; // Otherwise send 0x00, indicating bus power and no
; Data_Size = 2; // remote wake-up supported
; }
; break;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -