📄 usb_isr.asm
字号:
;;Established date: 2005/09/01
;;********************************************************************
ISR_USB:
M_PUSH
clr intc.1
set INTC.0
MOV A,C_USBRegisterBank
MOV BP,A
;;--------------------------------------------------------------------
SNZ F_Suspend
JMP L_CheckAccessFIFO
MOV A,11111100B
ANDM A,USR
;;--------------------------------------------------------------------
SZ F_Resume
JMP L_TurnOnUSB
JMP L_Exit_ISRUSB
L_TurnOnUSB:
SET F_USBClockOn ;;
JMP L_Exit_ISRUSB
;;--------------------------------------------------------------------
L_CheckAccessFIFO:
SET F_USBClockOn
CLR F_Suspend2
SZ F_AccessEP0
JMP L_AccessFIFO0
SZ F_AccessEP1
JMP L_AccessFIFO1
JMP L_Exit_ISRUSB
;;--------------------------------------------------------------------
L_AccessFIFO0:
SET F_USBReset
CLR F_AccessEP0
MOV A,C_MISC
MOV MP1,A
SNZ F_ControlEvent
JMP L_CheckSetupStage
SNZ R1.@Packet0
JMP L_ProcessOutDataPacket
;;--------------------------------------------------------------------
L_StatusStage:
CLR R1.@Packet0
SNZ R1.@SetupToken
JMP L_Exit_ISRUSB0
;;--------------------------------------------------------------------
L_CheckSetupStage:
SNZ R1.@SetupToken
JMP L_Exit_ISRUSB0
L_SetupStage:
CLR R1.@SetupToken
CLR R1.@Packet0
SET F_ControlEvent
SET F_SetupData
JMP L_Exit_ISRUSB0
;;--------------------------------------------------------------------
L_ProcessOutDataPacket:
SZ R1.@SetupToken
JMP L_SetupStage
CALL SBR_FIFO0_RD_Check
CLR R1.@USB_REQ
SNZ Z
JMP L_SendFIFO0
; JMP L_ReadFIFO0
;;--------------------------------------------------------------------
L_ReadFIFO0:
SZ F_SetupData
JMP L_GetSetupStage_Data
CALL SBR_FIFO0_RD_Check
CALL SBR_ReadFIFO0
MOV A,R_ReportIndex
ADDM A,PCL
JMP L_Exit_ISRUSB
JMP L_SetFeature
jmp L_Exit_ISRUSB
;;--------------------------------------------------------------------
;;--------------------ouput data from host to device------------------
;;--------------------------------------------------------------------
;;--------------------------------------------------------------------
L_SetFeature:
CLR R_ReportIndex
JMP L_StallPipe0
;;--------------------------------------------------------------------
L_GetSetupStage_Data:
CLR F_SetupData
CALL SBR_FIFO0_RD_Check
CALL SBR_ReadFIFO0
MOV A,C_Stall
MOV MP1,A
CLR R_Stall.0
MOV A,R_Stall
MOV R1,A
CLR F_SendData
CLR R_ReportIndex
MOV A,C_FIFOSize
XOR A,R_DataPacketLength
SNZ Z
JMP L_StallPipe0
MOV A,C_RequestType
AND A,T_RequestType
SWAP ACC
RR ACC
ADDM A,PCL
JMP L_StandardRequest ;0
JMP L_ClassRequest ;1
JMP L_StallPipe0
;;--------------------------------------------------------------------
L_SendFIFO0:
SZ F_SetupData
JMP L_Exit_ISRUSB0
CALL SBR_FIFO0_WR_Check
CLR R1.@USB_Req
SNZ Z
JMP L_Exit_ISRUSB0
SNZ F_SendContinue
JMP L_Exit_ISRUSB0
MOV A,R_TBLPFIFO
MOV TBLP,A
JMP L_WriteDataToBuffer
;;--------------------------------------------------------------------
L_WriteDataToFIFO_AnyBytes:
MOV R_DataPacketLength,A
CLR F_ControlEvent
JMP L_WriteDataToFIFO
;;--------------------------------------------------------------------
L_WriteDataToFIFO:
CLR F_BufferFull
CALL SBR_FIFO0_WR_Check
SZ Z
JMP L_WriteDataToFIFOOK
CLR R1.@USB_Req
SZ R1.@Packet0
JMP L_Exit_ISRUSB0
SZ R1.@SetupToken
JMP L_Exit_ISRUSB0
JMP L_WriteDataToFIFO
L_WriteDataToFIFOOK:
CALL SBR_WriteFIFO0
SET F_DataUpdate
JMP L_Exit_ISRUSB0
;;--------------------------------------------------------------------
L_WriteDataToFIFO_0_Packet:
CLR F_BufferFull
CALL SBR_FIFO0_WR_Check
SZ Z
JMP L_Write0PacketToFIFO
CLR R1.@USB_Req
SZ R1.@Packet0
JMP L_Exit_ISRUSB0
SZ R1.@SetupToken
JMP L_Exit_ISRUSB0
JMP L_WriteDataToFIFO_0_Packet
L_Write0PacketToFIFO:
CALL SBR_Write_0_Packet
CLR F_ControlEvent
JMP L_Exit_ISRUSB0
;;--------------------------------------------------------------------
L_Stallpipe0:
MOV A,C_STALL
MOV MP1,A
SET R_STALL.0
SET R1.0
JMP L_Exit_ISRUSB
;;--------------------------------------------------------------------
L_Exit_ISRUSB0:
CLR USR.0
JMP L_Exit_ISRUSB
;;********************************************************************
;;**************************input data to host************************
;;********************************************************************
L_AccessFIFO1:
SZ R_ReportIndex
JMP L_ExitISRUSB1
CALL SBR_FIFO1_WR_Check
SNZ Z
JMP L_ExitISRUSB1
MOV A,R_ReBufferAddress
XOR A,R_TrBufferAddress
SZ Z
JMP L_ExitISRUSB1
L_COMToUSBInterruptIn: ;盢钡Μ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -