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

📄 usb_isr.asm

📁 个人用HT82M99E开发的无线小键盘接收端源码
💻 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 + -