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

📄 usb_ctrl.asm

📁 使用5509A的usb的程序代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*******************************************************************************
;* TMS320C55x C/C++ Codegen                                    PC Version 2.56 *
;* Date/Time created: Fri Mar 07 11:38:10 2008                                 *
;*******************************************************************************
	.mmregs
	.cpl_on
	.arms_on
	.c54cm_off
	.asg AR6, FP
	.asg XAR6, XFP
	.asg DPH, MDP
	.model call=c55_std
	.model mem=large
	.noremark 5549  ; code avoids SE CPU_28
	.noremark 5558  ; code avoids SE CPU_33
	.noremark 5570  ; code avoids SE CPU_40
	.noremark 5571  ; code avoids SE CPU_41
	.noremark 5573  ; code avoids SE CPU_43
	.noremark 5584  ; code avoids SE CPU_47
	.noremark 5599  ; code avoids SE CPU_55
	.noremark 5503  ; code avoids SE CPU_84 MMR write
	.noremark 5505  ; code avoids SE CPU_84 MMR read
	.noremark 5673  ; code avoids SE CPU_89
	.noremark 5002  ; code respects overwrite rules
;*******************************************************************************
;* GLOBAL FILE PARAMETERS                                                      *
;*                                                                             *
;*   Architecture       : TMS320C55x                                           *
;*   Optimization       : Always Choose Smaller Code Size                      *
;*   Memory             : Large Model (23-Bit Data Pointers)                   *
;*   Calls              : Normal Library ASM calls                             *
;*   Debug Info         : Standard TI Debug Information                        *
;*******************************************************************************
	.file	"usb_ctrl.c"

	.sect	".cinit"
	.align	1
	.field  	IR_1,16
	.field  	_USB_Setup+0,24
	.field  	0,8
	.field  	0,16			; _USB_Setup._New @ 0
	.field  	0,16			; _USB_Setup._bmRequestType @ 16
	.field  	0,16			; _USB_Setup._bRequest @ 32
	.field  	0,16			; _USB_Setup._wValue @ 48
	.field  	0,16			; _USB_Setup._wIndex @ 64
	.field  	0,16			; _USB_Setup._wLength @ 80
IR_1:	.set	6

	.sect	".text"
	.global	_USB_Setup
	.bss	_USB_Setup,6,0,0
	.sym	_USB_Setup,_USB_Setup, 8, 2, 96, $$fake5

	.sect	".cinit"
	.align	1
	.field  	2,16
	.field  	_fpRequestHandler+0,24
	.field  	0,8
	.field  	_USB_reqUnknown,32		; _fpRequestHandler @ 0

	.sect	".text"
	.global	_fpRequestHandler
	.bss	_fpRequestHandler,2,0,2
	.sym	_fpRequestHandler,_fpRequestHandler, 154, 2, 32, $$fake6

	.sect	".cinit"
	.align	1
	.field  	2,16
	.field  	_data+0,24
	.field  	0,8
	.field  	32768,32			; _data @ 0

	.sect	".text"
	.global	_data
	.bss	_data,2,0,2
	.sym	_data,_data, 29, 2, 23
;	d:\ti\c5500\cgtools\bin\acp55.exe -@C:\DOCUME~1\wxy\LOCALS~1\Temp\TI388_4 

	.sect	".text"
	.align 4
	.global	_USB_ctl_handler
	.sym	_USB_ctl_handler,_USB_ctl_handler, 32, 2, 0
	.func	102
;*******************************************************************************
;* FUNCTION NAME: _USB_ctl_handler                                             *
;*                                                                             *
;*   Function Uses Regs : T0,AR0,XAR0,AR1,XAR1,SP,M40,SATA,SATD,RDM,FRCT,SMUL  *
;*   Stack Frame        : Compact (No Frame Pointer, w/ debug)                 *
;*   Total Frame Size   : 2 words                                              *
;*                        (2 return address/alignment)                         *
;*******************************************************************************
_USB_ctl_handler:
	.line	2
        AADD #-1, SP
	.line	5
        AMOV #_usbEpObjOut0, XAR1 ; |106| 
        AMOV #_usbEpObjIn0, XAR0 ; |106| 
        MOV #0, T0
        CALL #_USB_ctl ; |106| 
                                        ; call occurs [#_USB_ctl]	; |106| 
	.line	6
        AADD #1, SP
        RET
                                        ; return occurs
	.endfunc	107,000000000h,1



	.sect	".text"
	.align 4
	.global	_USB_ctl
	.sym	_USB_ctl,_USB_ctl, 32, 2, 0
	.func	139
;*******************************************************************************
;* FUNCTION NAME: _USB_ctl                                                     *
;*                                                                             *
;*   Function Uses Regs : AC0,AC0,AC1,T0,T1,T2,AR0,XAR0,AR1,XAR1,AR2,XAR2,SP,  *
;*                        TC1,M40,SATA,SATD,RDM,FRCT,SMUL                      *
;*   Save On Entry Regs : T2                                                   *
;*   Stack Frame        : Compact (No Frame Pointer, w/ debug)                 *
;*   Total Frame Size   : 12 words                                             *
;*                        (2 return address/alignment)                         *
;*                        (9 local values)                                     *
;*                        (1 register save area)                               *
;*******************************************************************************
_USB_ctl:
	.line	2
;* T0    assigned to _DevNum
	.sym	_DevNum,12, 10, 17, 16, $$fake1
;* AR0   assigned to _hEp0In
	.sym	_hEp0In,17, 24, 17, 23, $$fake2
;* AR1   assigned to _hEp0Out
	.sym	_hEp0Out,19, 24, 17, 23, $$fake2
	.sym	_DevNum,0, 10, 1, 16, $$fake1
	.sym	_hEp0In,2, 24, 1, 23, $$fake2
	.sym	_hEp0Out,4, 24, 1, 23, $$fake2
	.sym	_Request,6, 13, 1, 16
	.sym	_ReqHandlerRet,7, 10, 1, 16, $$fake6
	.sym	_USB_ctl_events,8, 13, 1, 16
        PSH T2
        AADD #-10, SP
        MOV XAR1, dbl(*SP(#4))
        MOV XAR0, dbl(*SP(#2))
        MOV T0, *SP(#0) ; |140| 
	.line	4
        MOV #0, *SP(#7) ; |142| 
	.line	10
        MOV dbl(*SP(#4)), XAR0
        CALL #_vUSB_getEvents ; |148| 
                                        ; call occurs [#_vUSB_getEvents]	; |148| 
        MOV T0, T2 ; |148| 
        MOV dbl(*SP(#2)), XAR0
        CALL #_vUSB_getEvents ; |148| 
                                        ; call occurs [#_vUSB_getEvents]	; |148| 
        OR T2, T0 ; |148| 
        MOV T0, *SP(#8) ; |148| 
	.line	15
        BTST #0, *SP(#8), TC1 ; |153| 
        BCC L1,!TC1 ; |153| 
                                        ; branch occurs	; |153| 
	.line	17
        MOV *SP(#0), T0 ; |155| 
        CALL #_vUSB_abortAllTransaction ; |155| 
                                        ; call occurs [#_vUSB_abortAllTransaction]	; |155| 
	.line	18
        MOV #0, *(#_usbCurConfigStat) ; |156| 
	.line	19
        MOV #128, T1 ; |157| 
        MOV #0, T0
        AMOV #_myUsbConfig, XAR0 ; |157| 
        CALL #_vUSB_init ; |157| 
                                        ; call occurs [#_vUSB_init]	; |157| 
L1:    
	.line	22
        BTST #2, *SP(#8), TC1 ; |160| 
        BCC L2,!TC1 ; |160| 
                                        ; branch occurs	; |160| 
	.line	24
        MOV #0, T0
        CALL #_vUSB_issueRemoteWakeup ; |162| 
                                        ; call occurs [#_vUSB_issueRemoteWakeup]	; |162| 
L2:    
	.line	31
        MOV *SP(#8), AR1 ; |169| 
        MOV #16, AR2 ; |169| 
        AND #0x0010, AR1, AR1 ; |169| 

        CMPU AR1 != AR2, TC1 ; |169| 
||      NOP       ; 	avoids Silicon Exception CPU_24

        BCC L4,TC1 ; |169| 
                                        ; branch occurs	; |169| 
	.line	35
        MOV *SP(#0), T0 ; |173| 
        AMOV #_USB_Setup, XAR0 ; |173| 
        CALL #_vUSB_getSetupPacket ; |173| 
                                        ; call occurs [#_vUSB_getSetupPacket]	; |173| 
        BCC L3,T0 != #0 ; |173| 
                                        ; branch occurs	; |173| 
	.line	37
        MOV #1, *SP(#7) ; |175| 
	.line	38
        B L4      ; |176| 
                                        ; branch occurs	; |176| 
L3:    
	.line	51
        MOV *(#(_USB_Setup+1)), AR1 ; |189| 
        MOV *(#(_USB_Setup+2)), AC0 ; |189| 
        AND #0x00c0, AR1, AC1 ; |189| 
        OR AC1 << #8, AC0 ; |189| 
        MOV AC0, *SP(#6) ; |189| 
	.line	52
        AMOV #_USB_ReqTable, XAR0 ; |190| 
        MOV AC0, T0
        CALL #_USB_lookupReqHandler ; |190| 
                                        ; call occurs [#_USB_lookupReqHandler]	; |190| 
        MOV AC0, dbl(*(#_fpRequestHandler)) ; |190| 
L4:    
	.line	59
        MOV *SP(#7), AR1 ; |197| 
        BCC L5,AR1 != #0 ; |197| 
                                        ; branch occurs	; |197| 
	.line	61
        MOV *SP(#0), T0 ; |199| 
        MOV dbl(*SP(#2)), XAR1
        MOV dbl(*SP(#4)), XAR2
        MOV dbl(*(#_fpRequestHandler)), AC0 ; |199| 
        AMOV #_USB_Setup, XAR0 ; |199| 
        CALL AC0  ; |199| 
                                        ; call occurs [AC0]	; |199| 
        MOV T0, *SP(#7) ; |199| 
        B L11     ; |199| 
                                        ; branch occurs	; |199| 
L5:    
	.line	63
L6:    
        B L6      ; |201| 
                                        ; branch occurs	; |201| 
L7:    
	.line	72
        MOV dbl(*SP(#2)), XAR0
        AMOV #0, XAR1 ; |210| 
        MOV #0, T1
        MOV #0, T0
        CALL #_vUSB_postTransaction ; |210| 
                                        ; call occurs [#_vUSB_postTransaction]	; |210| 
	.line	73
        MOV #(_USB_reqUnknown >> 16) << #16, AC0 ; |211| 
        OR #(_USB_reqUnknown & 0xffff), AC0, AC0 ; |211| 
        MOV AC0, dbl(*(#_fpRequestHandler)) ; |211| 
	.line	78
        B L12     ; |216| 
                                        ; branch occurs	; |216| 
L8:    
	.line	84
        MOV dbl(*SP(#4)), XAR0
        AMOV #0, XAR1 ; |222| 
        MOV #0, T1
        MOV #0, T0
        CALL #_vUSB_postTransaction ; |222| 
                                        ; call occurs [#_vUSB_postTransaction]	; |222| 
	.line	85
        MOV #(_USB_reqUnknown >> 16) << #16, AC0 ; |223| 
        OR #(_USB_reqUnknown & 0xffff), AC0, AC0 ; |223| 
        MOV AC0, dbl(*(#_fpRequestHandler)) ; |223| 
	.line	91

⌨️ 快捷键说明

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