📄 usb_isr.tmp
字号:
caackF:\project\HT46RB50 温度计\ASM\USB_ISR.ASM 1 0000 ;;Established date: 2006/03/01
2 0000 ;;********************************************************************
3 0000 ;;====================================================================
4 0000 ISR_USB:
5 0000 M_PUSH ;PUSH
aError(A0010) F:\project\HT46RB50 温度计\ASM\USB_ISR.ASM 5 : 非预期的符号 'M_PUSH'
babaaabaaaaaaagb CLR INTC1.0 ;Close USB interrupt
CLR INTC1.0 ;Close USB interrupt
babaaabaaabaaahb SET INTC0.0 ;Open other interrupt request
SET INTC0.0 ;Open other interrupt request
8 0002 ;; MOV A,C_USBRegisterBank ;USB register bank(no need in HT46RB50
9 0002 ;; MOV BP,A ;because it USB reg in bank0.)
10 0002 ;;--------------------------------------------------------------------
babaaabaaacaaalb SNZ F_Suspend
SNZ F_Suspend
babaaabaaadaaamb JMP L_CheckAccessFIFO ;USB is work
JMP L_CheckAccessFIFO ;USB is work
13 0004 0FF0 MOV A,11110000B ;USB is suspend
babaaabaaafaaaob ANDM A,USR ;clear all endpoint status
ANDM A,USR ;clear all endpoint status
15 0006 ;;--------------------------------------------------------------------
babaaabaaagaabab SZ F_Resume ;USB is resume?(reset)
SZ F_Resume ;USB is resume?(reset)
babaaabaaahaabbb JMP L_TurnOnUSB ;Yes(reset),Open USB
JMP L_TurnOnUSB ;Yes(reset),Open USB
babaaabaaaiaabcb JMP L_Exit_ISRUSB ;No(suspend),return
JMP L_Exit_ISRUSB ;No(suspend),return
19 0009 L_TurnOnUSB:
babaaabaaajaabeb SET F_USBClockOn ;UCC.3,USB clock on
SET F_USBClockOn ;UCC.3,USB clock on
babaaabaaakaabfb JMP L_Exit_ISRUSB ;return
JMP L_Exit_ISRUSB ;return
22 000B ;;--------------------------------------------------------------------
23 000B L_CheckAccessFIFO:
babaaabaaalaabib SET F_USBClockOn ;Open USB clock
SET F_USBClockOn ;Open USB clock
babaaabaaamaabjb CLR F_Suspend2 ;clear USB low power mode
CLR F_Suspend2 ;clear USB low power mode
26 000D
babaaabaaanaablb SZ F_AccessEP0 ;endpoint0 USB?
SZ F_AccessEP0 ;endpoint0 USB?
babaaabaaaoaabmb JMP L_AccessFIFO0 ;EP0 service
JMP L_AccessFIFO0 ;EP0 service
babaaabaaapaabnb SZ F_AccessEP1 ;endpoint1 USB?
SZ F_AccessEP1 ;endpoint1 USB?
babaaabaabaaabob JMP L_AccessFIFO1 ;EP1 service
JMP L_AccessFIFO1 ;EP1 service
babaaabaabbaabpb JMP L_Exit_ISRUSB ;exit USB interrupt
JMP L_Exit_ISRUSB ;exit USB interrupt
32 0012 ;;====================================================================
33 0012 L_AccessFIFO0:
babaaabaabcaaccb SET F_USBReset ;USB interrupt initial(?????)
SET F_USBReset ;USB interrupt initial(?????)
babaaabaabdaacdb CLR F_AccessEP0 ;Clear EP0 flag
CLR F_AccessEP0 ;Clear EP0 flag
babaaabaabeaaceb MOV A,C_MISC ;point MISC
MOV A,C_MISC ;point MISC
babaaabaabfaacfb MOV MP1,A
MOV MP1,A
38 0016
babaaabaabgaachb SNZ F_ControlEvent ;setup finally?
SNZ F_ControlEvent ;setup finally?
babaaabaabhaacib JMP L_CheckSetupStage ;no,setup
JMP L_CheckSetupStage ;no,setup
41 0018
babaaabaabiaackb SNZ R1.@Packet0 ;receive 0-size from host?
SNZ R1.@Packet0 ;receive 0-size from host?
babaaabaabjaaclb JMP L_ProcessOutDataPacket ;no,next check
JMP L_ProcessOutDataPacket ;no,next check
44 001A ;;--------------------------------------------------------------------
45 001A L_StatusStage:
babaaabaabkaacob CLR R1.@Packet0 ;receive 0-size packet,clear 0-size packet flag
CLR R1.@Packet0 ;receive 0-size packet,clear 0-size packet flag
babaaabaablaacpb SNZ R1.@SetupToken ;setup common?
SNZ R1.@SetupToken ;setup common?
babaaabaabmaadab JMP L_Exit_ISRUSB0 ;no,exit USB interrupt
JMP L_Exit_ISRUSB0 ;no,exit USB interrupt
49 001D ;;--------------------------------------------------------------------
50 001D L_CheckSetupStage:
babaaabaabnaaddb SNZ R1.@SetupToken
SNZ R1.@SetupToken
babaaabaaboaadeb JMP L_Exit_ISRUSB0
JMP L_Exit_ISRUSB0
53 001F L_SetupStage:
babaaabaabpaadgb CLR R1.@SetupToken ;clear setup common flag
CLR R1.@SetupToken ;clear setup common flag
babaaabaacaaadhb CLR R1.@Packet0 ;clear 0-size packet flag
CLR R1.@Packet0 ;clear 0-size packet flag
babaaabaacbaadib SET F_ControlEvent ;set the flag of setup finally
SET F_ControlEvent ;set the flag of setup finally
babaaabaaccaadjb SET F_SetupData ;set setup data flag
SET F_SetupData ;set setup data flag
babaaabaacdaadkb JMP L_Exit_ISRUSB0 ;exit
JMP L_Exit_ISRUSB0 ;exit
59 0024 ;;--------------------------------------------------------------------
60 0024 L_ProcessOutDataPacket:
babaaabaaceaadnb SZ R1.@SetupToken ;next check,is setup command?
SZ R1.@SetupToken ;next check,is setup command?
62 0025 2800 R JMP L_SetupStage ;yes,jmp to setup service
babaaabaacgaadpb CALL SBR_FIFO0_RD_Check ;FIFO0 read ready check
CALL SBR_FIFO0_RD_Check ;FIFO0 read ready check
babaaabaachaaeab CLR R1.@USB_REQ
CLR R1.@USB_REQ
babaaabaaciaaebb SNZ Z
SNZ Z
babaaabaacjaaecb JMP L_SendFIFO0 ;ready=0,not ready for read FIFO,jmp to write FIFO check
JMP L_SendFIFO0 ;ready=0,not ready for read FIFO,jmp to write FIFO check
67 002A ; JMP L_ReadFIFO0 ;ready=1,ready for read
68 002A
69 002A ;;--------------------------------------------------------------------
70 002A ;;------------------ Read FIFO ---------------------------------------
71 002A L_ReadFIFO0:
babaaabaackaaeib SZ F_SetupData ;FIFO data is setup data?
SZ F_SetupData ;FIFO data is setup data?
babaaabaaclaaejb JMP L_GetSetupStage_Data ;Yes,jmp to get setup data
JMP L_GetSetupStage_Data ;Yes,jmp to get setup data
babaaabaacmaaekb CALL SBR_FIFO0_RD_Check ;no,check RD
CALL SBR_FIFO0_RD_Check ;no,check RD
babaaabaacnaaelb CALL SBR_ReadFIFO0 ;Read FIFO0
CALL SBR_ReadFIFO0 ;Read FIFO0
76 002E
babaaabaacoaaenb MOV A,M_ReportIndex ;load report index
MOV A,M_ReportIndex ;load report index
babaaabaacpaaeob ADDM A,PCL
ADDM A,PCL
babaaabaadaaaepb JMP L_Exit_ISRUSB ;0:exit
JMP L_Exit_ISRUSB ;0:exit
babaaabaadbaafab JMP L_SetFeature ;1:set feature
JMP L_SetFeature ;1:set feature
81 0032 ; JMP L_SetOutput
82 0032 ;;--------------------------------------------------------------------
83 0032 ;;--------------------ouput data from host to device------------------
84 0032 ;;--------------------------------------------------------------------
85 0032 L_SetOutput:
babaaabaadcaafgb MOV A,M_DataPacketLength ;load packet length which receive
MOV A,M_DataPacketLength ;load packet length which receive
babaaabaaddaafhb XOR A,C_ReportSize ;packet length=8?
XOR A,C_ReportSize ;packet length=8?
babaaabaadeaafib SNZ Z
SNZ Z
babaaabaadfaafjb JMP L_StallPipe0 ;no,error
JMP L_StallPipe0 ;no,error
90 0036 ;; CALL SBR_USBToCOM ;yes,output
babaaabaadgaaflb CLR M_ReportIndex ;clear report index
CLR M_ReportIndex ;clear report index
babaaabaadhaafmb JMP L_WriteDataToFIFO_0_Packet ;send a 0 size packet
JMP L_WriteDataToFIFO_0_Packet ;send a 0 size packet
93 0038 ;;--------------------------------------------------------------------
94 0038 L_SetFeature:
babaaabaadiaafpb CLR M_ReportIndex ;clear report index
CLR M_ReportIndex ;clear report index
babaaabaadjaagab JMP L_StallPipe0 ;error
JMP L_StallPipe0 ;error
97 003A ;;--------------------------------------------------------------------
98 003A L_GetSetupStage_Data:
babaaabaadkaagdb CLR F_SetupData ;clear the flag of setup data
CLR F_SetupData ;clear the flag of setup data
babaaabaadlaageb CALL SBR_FIFO0_RD_Check
CALL SBR_FIFO0_RD_Check
babaaabaadmaagfb CALL SBR_ReadFIFO0 ;read FIFO
CALL SBR_ReadFIFO0 ;read FIFO
102 003D
babaaabaadnaaghb MOV A,C_Stall
MOV A,C_Stall
babaaabaadoaagib MOV MP1,A
MOV MP1,A
105 003F ;; CLR M_Stall.0
106 003F ;; MOV A,M_Stall
107 003F ;; MOV R1,A ;clear EP0 error flag(???)
108 003F
babaaabaadpaagnb CLR F_SendData ;clear send data flag
CLR F_SendData ;clear send data flag
babaaabaaeaaagob CLR M_ReportIndex ;clear report index
CLR M_ReportIndex ;clear report index
111 0041
babaaabaaebaahab MOV A,C_FIFOSize
MOV A,C_FIFOSize
babaaabaaecaahbb XOR A,M_DataPacketLength ;data packet length = 8 byte?
XOR A,M_DataPacketLength ;data packet length = 8 byte?
babaaabaaedaahcb SNZ Z
SNZ Z
babaaabaaeeaahdb JMP L_StallPipe0 ;no,error.(setup data == 8 byte)
JMP L_StallPipe0 ;no,error.(setup data == 8 byte)
116 0045
babaaabaaefaahfb MOV A,C_RequestType
MOV A,C_RequestType
babaaabaaegaahgb AND A,T_RequestType ;check RequestType's D6..5.
AND A,T_RequestType ;check RequestType's D6..5.
babaaabaaehaahhb SWAP ACC
SWAP ACC
babaaabaaeiaahib RR ACC
RR ACC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -