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

📄 usb.lis

📁 Cypress cy7c63318 鼠标开发板的源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0027           ;
 0027           ;  ARGUMENTS:
 0027           ;
 0027           ;  RETURNS:
 0027           ;
 0027           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0027           ;
 0027           ;  THEORY of OPERATION or PROCEDURE:
 0027           ;
 0027           ;-----------------------------------------------------------------------------
 0027           .SECTION
 0027            USB_Stop:
 0027           _USB_Stop:
 0027 550000        MOV     [USB_bCurrentDevice], 0    ; The app selects the desired device
 002A           
 002A 550000        MOV     [USB_TransferType], USB_TRANS_STATE_IDLE ; Transaction Idle State
 002D 550000        MOV     [USB_Configuration], 0     ; Unconfigured
 0030 550000        MOV     [USB_DeviceStatus], 0      ; Clear the  device status
 0033 550400        MOV     [USB_bActivity], 0         ; Clear the activity flag
 0036 624000        MOV     REG[USB_ADDR], 0           ; Clear the addfress and Address 0
 0039 41747F        AND     REG[USB_USBXCR], ~USB_PULLUP_ENABLE ; Release D-
 003C 41E1E0        and   reg[INT_MSK1], ~(INT_MSK1_USB_ACTIVITY | INT_MSK1_USB_BUS_RESET | INT_MSK1_USB_EP0 | INT_MSK1_USB_EP1 | INT_MSK1_USB_EP2)              ; disable specified interrupt enable bit
 003F           
 003F 7F            RET
 0040           .ENDSECTION
 0040           ;-----------------------------------------------------------------------------
 0040           ;  FUNCTION NAME: USB_bCheckActivity
 0040           ;
 0040           ;  DESCRIPTION:
 0040           ;
 0040           ;-----------------------------------------------------------------------------
 0040           ;
 0040           ;  ARGUMENTS:
 0040           ;
 0040           ;  RETURNS:
 0040           ;
 0040           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0040           ;
 0040           ;  THEORY of OPERATION or PROCEDURE:
 0040           ;
 0040           ;   The activity interrupt sets a RAM flag indicating activity and disables the
 0040           ;   interrupt.  Disabling the interrupt keeps the bus activity from creating too
 0040           ;   many interrupts.  bCheckActivity checks and clears the flag, the enables
 0040           ;   interrupts for the next interval.
 0040           ;
 0040           ;-----------------------------------------------------------------------------
 0040           .SECTION
 0040            USB_bCheckActivity:
 0040           _USB_bCheckActivity:
 0040 5104          MOV    A, [USB_bActivity]          ; Activity?
 0042 3901          CMP    A, 1                        ; 
 0044 A002          JZ     .active                     ; Jump on Activity
 0046           ; Flow here on no activity
 0046 7F            RET
 0047           ; Jump here if activity was detected
 0047           .active:
 0047 550400        MOV    [USB_bActivity], 0          ; Clear the activity flag for next time
 004A 43E110        or    reg[INT_MSK1], INT_MSK1_USB_ACTIVITY               ; enable specified interrupt enable bit
 004D 7F            RET
 004E           .ENDSECTION
 004E           ;-----------------------------------------------------------------------------
 004E           ;  FUNCTION NAME: USB_bGetConfiguration
 004E           ;
 004E           ;  DESCRIPTION:   Returns the current configuration number
 004E           ;
 004E           ;-----------------------------------------------------------------------------
 004E           ;
 004E           ;  ARGUMENTS:    None
 004E           ;
 004E           ;  RETURNS:      A contains the current configuration number
 004E           ;
 004E           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 004E           ;
 004E           ;  THEORY of OPERATION or PROCEDURE:
 004E           ;
 004E           ;-----------------------------------------------------------------------------
 004E           .SECTION
 004E            USB_bGetConfiguration:
 004E           _USB_bGetConfiguration:
 004E 5100          MOV     A,[USB_Configuration]
 0050 7F            RET
 0051           .ENDSECTION
 0051           ;-----------------------------------------------------------------------------
 0051           ;  FUNCTION NAME: USB_bGetEPState
 0051           ;
 0051           ;  DESCRIPTION:   Returns the current endpoint state
 0051           ;
 0051           ;-----------------------------------------------------------------------------
 0051           ;
 0051           ;  ARGUMENTS:   A: Endpoint Number
 0051           ;
 0051           ;  RETURNS:     A: NO_EVENT_ALLOWED
 0051           ;                  EVENT_PENDING
 0051           ;                  NO_EVENT_PENDING
 0051           ;
 0051           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0051           ;
 0051           ;  THEORY of OPERATION or PROCEDURE:
 0051           ;
 0051           ;-----------------------------------------------------------------------------
 0051           .SECTION
 0051            USB_bGetEPState:
 0051           _USB_bGetEPState:
 0051 3903          CMP     A, (USB_MAX_EP_NUMBER + 1) ; Range check
 0053 D006          JNC     .invalid_ep                ; Bail out
 0055           ; Flow here to enable an endpoint        
 0055 5C            MOV     X, A                       ; Endpoint number is the index
 0056 5200          MOV     A, [X+USB_EndpointAPIStatus]; Get the state
 0058 8003          JMP     .exit                      ; Go to the common exit
 005A           ; Jump here for an invalid endpoint
 005A           .invalid_ep:
 005A 5000          MOV     A, 0                       ; Return 0 for an invalid ep
 005C           ; Jump or flow here for a common exit
 005C           .exit:
 005C 7F            RET                                ; All done
 005D           .ENDSECTION
 005D           ;-----------------------------------------------------------------------------
 005D           ;  FUNCTION NAME: USB_bRWUEnabled
 005D           ;
 005D           ;  DESCRIPTION:   Returns 1 if Remote Wake Up is enabled, otherwise 0
 005D           ;
 005D           ;-----------------------------------------------------------------------------
 005D           ;
 005D           ;  ARGUMENTS:   None
 005D           ;
 005D           ;  RETURNS:     A: 1--Remote Wake Up Enabled
 005D           ;                  0--Remote Wake Up Disabled
 005D           ;
 005D           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 005D           ;
 005D           ;  THEORY of OPERATION or PROCEDURE:
 005D           ;
 005D           ;-----------------------------------------------------------------------------
 005D           .SECTION
 005D            USB_bRWUEnabled:
 005D           _USB_bRWUEnabled:
 005D 470002        TST     [USB_DeviceStatus], USB_DEVICE_STATUS_REMOTE_WAKEUP
 0060 B005          JNZ     .enabled                   ; Jump if enabled
 0062           ; Flow here if RWU is disabled        
 0062 5000          MOV     A, 0                       ; Return disabled
 0064 8003          JMP     .exit                      ; Go to the common exit
 0066           ; Jump when RWU is enabled
 0066           .enabled:
 0066 5001          MOV     A, 1                       ; Return enabled
 0068           ; Jump or flow here for a common exit
 0068           .exit:
 0068 7F            RET                                ; All done
 0069           .ENDSECTION
 0069           ;-----------------------------------------------------------------------------
 0069           ;  FUNCTION NAME: USB_bGetEPCount
 0069           ;
 0069           ;  DESCRIPTION:
 0069           ;
 0069           ;-----------------------------------------------------------------------------
 0069           ;
 0069           ;  ARGUMENTS:
 0069           ;
 0069           ;  RETURNS:
 0069           ;
 0069           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0069           ;
 0069           ;  THEORY of OPERATION or PROCEDURE:
 0069           ;
 0069           ;-----------------------------------------------------------------------------
 0069           .SECTION
 0069            USB_bGetEPCount:
 0069           _USB_bGetEPCount:
 0069 3903          CMP     A, (USB_MAX_EP_NUMBER + 1) ; Range check
 006B D00A          JNC     .invalid_ep                ; Bail out
 006D           ; Flow here to get the endpoint count
 006D 5C            MOV     X, A                       ; Endpoint number is the index
 006E 5E41          MOV     A, REG[X+EP0CNT]           ; Here is the count
 0070 211F          AND     A, 0x1F                    ; Mask off the count
 0072 1102          SUB     A, 2                       ; Ours includes the two byte checksum
 0074 8003          JMP     .exit                      ; Go to the common exit
 0076           ; Jump here for an invalid endpoint
 0076           .invalid_ep:
 0076 5000          MOV     A, 0                       ; Return 0 for an invalid ep
 0078           ; Jump or flow here for a common exit
 0078           .exit:
 0078 7F            RET
 0079           .ENDSECTION
 0079           ;-----------------------------------------------------------------------------
 0079           ;  FUNCTION NAME: USB_LoadEP
 0079           ;
 0079           ;  DESCRIPTION:    This function loads the specified endpoint buffer
 0079           ;                  with the number of bytes previously set in the count
 0079           ;                  register.
 0079           ;
 0079           ;-----------------------------------------------------------------------------
 0079           ;
 0079           ;  ARGUMENTS:  A:X Pointer to the ram buffer containing the data to transfer
 0079           ;              USB_APIEPNumber loaded with the endpoint number
 0079           ;              USB_APICount loaded with the number of bytes to load
 0079           ;
 0079           ;  RETURNS:    NONE
 0079           ;
 0079           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0079           ;
 0079           ;  THEORY of OPERATION or PROCEDURE:
 0079           ;
 0079           ;-----------------------------------------------------------------------------
 0079           .SECTION
 0079            USB_XLoadEP:
 0079           _USB_XLoadEP:
 0079           ; extern void USB_LoadEP(BYTE, BYTE*);
 0079 3C0203        CMP     [USB_APIEPNumber], (USB_MAX_EP_NUMBER + 1) ; Range check
 007C D02C          JNC     .exit                      ; Bail out
 007E           ; Flow here to get the endpoint count
 007E 5A00          MOV     [USB_APITemp], X           ; Use this temp as the MVI pointer
 0080           
 0080 5102          MOV     A, [USB_APIEPNumber]       ; Get the endpoint number
 0082 F026          INDEX   EPREGPTR                   ; Get the address of the endpoint data register array
 0084 5C            MOV     X, A                       ; We are going to use index access to the register array
 0085               
 0085 5103          MOV     A, [USB_APICount]          ; Get the count
 0087 5301          MOV     [USB_APITemp+1], A  

⌨️ 快捷键说明

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