?? usb_isr.asm
字號(hào):
;;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_SetOutput
;;--------------------------------------------------------------------
;;--------------------ouput data from host to device------------------
;;--------------------------------------------------------------------
L_SetOutput:
MOV A,R_DataPacketLength
XOR A,C_ReportSize
SNZ Z
JMP L_StallPipe0
CALL SBR_USBToCOM
CLR R_ReportIndex
JMP L_WriteDataToFIFO_0_Packet
;;--------------------------------------------------------------------
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
JMP L_ClassRequest
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:
;mov a,02H ;;test code(test interrupt interval time)
;xorm a,pa ;;
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:
CALL SBR_ClearFIFOBAK
CLR F_DataUpdate
CLR R_InputReportDataSize
MOV A,R_TrBufferAddress
MOV MP0,A
MOV A,R0
MOV R_FIFOBAK1,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
XOR A,R_ReBufferAddress
SZ Z
JMP L_SendFIFOInterruptIn
MOV A,R0
MOV R_FIFOBAK2,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
XOR A,R_ReBufferAddress
SZ Z
JMP L_SendFIFOInterruptIn
MOV A,R0
MOV R_FIFOBAK3,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
XOR A,R_ReBufferAddress
SZ Z
JMP L_SendFIFOInterruptIn
MOV A,R0
MOV R_FIFOBAK4,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
XOR A,R_ReBufferAddress
SZ Z
JMP L_SendFIFOInterruptIn
MOV A,R0
MOV R_FIFOBAK5,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
XOR A,R_ReBufferAddress
SZ Z
JMP L_SendFIFOInterruptIn
MOV A,R0
MOV R_FIFOBAK6,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
XOR A,R_ReBufferAddress
SZ Z
JMP L_SendFIFOInterruptIn
MOV A,R0
MOV R_FIFOBAK7,A
INC R_InputReportDataSize
CALL SBR_AddBufferAddress
JMP L_SendFIFOInterruptIn
;;--------------------------------------------------------------------
L_SendFIFOInterruptIn:
MOV A,R_InputReportDataSize
MOV R_FIFOBAK0,A
MOV A,0FEH
ANDM A,PA
MOV A,C_ReportSize
MOV R_DataPacketLength,A
CALL SBR_FIFO1_WR_Check
CALL SBR_WriteFIFO1
;;--------------------------------------------------------------------
L_ExitISRUSB1:
CLR F_AccessEP1
JMP L_Exit_ISRUSB
;;********************************************************************
L_Exit_ISRUSB:
CLR INTC.0
SET INTC.1
M_POP
RETI
;;********************************************************************
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -