📄 usb_int.lst
字号:
"File: USB_INT.ASM Holtek Cross-Assembler Version 2.86 Page 1
1 0000 include body.inc
2 0000 include usbrf1.inc
3 0000 include usbFIFO.inc
4 0000
5 0000 extern FIFO_SendLen :byte
6 0000 extern FIFO_Type :byte
7 0000 extern stall :byte
8 0000
9 0000 extern bSend_Continue :bit ;has control pipe data to transmitter
10 0000 extern bFIFO_Full :bit
11 0000
12 0000 extern nCmdIndex :byte ;set output or set feature
13 0000 extern bsetup_flag :bit ;there are setup cmd received
14 0000 extern bDataUpdate_IN :bit
15 0000 extern bDataUpdate_OUT :bit
16 0000 extern bwait_setup :bit
17 0000
18 0000 extern FIFO0_Wr_Check :near ;usblib1.asm
19 0000 extern FIFO0_Rd_Check :near ;usblib1.asm
20 0000 extern FIFO1_Wr_Check :near ;usblib1.asm
21 0000 extern FIFO2_Wr_Check :near ;usblib1.asm
22 0000 EXTERN FIFO2_Rd_Check :NEAR
23 0000
24 0000 extern LEN0_Wr_Check :near ;usblib1.asm
25 0000 extern WriteLen0 :near ;usblib1.asm
26 0000 extern ReadFIFO0 :near ;usblib1.asm
27 0000 extern WriteFIFO0 :near ;usblib1.asm
28 0000 extern WriteFIFO1 :near ;usblib1.asm
29 0000 extern WriteFIFO2 :near ;usblib1.asm
30 0000 extern ReadFIFO2 :near
31 0000
32 0000 extern StandardRequest :near ;std6.asm
33 0000 extern ClassRequest :near ;std6.asm
34 0000 extern ReadNextCnf :near ;std6.asm
35 0000 extern FromUSB :near ;serial.asm
36 0000 extern ToUSB :near ;serial.asm
37 0000 EXTERN FromUSB1 :NEAR
38 0000
39 0000 ;wait 3 continuous IN
40 0000 extern bhas_data_out_previous :bit
41 0000 extern bhas_data_out_previous1 :bit
42 0000 extern bhas_data_out_previous2 :bit
43 0000
44 0000 usbint_var .section 'data'
45 0000 00 isr_usb_acc db ?
46 0001 00 isr_usb_status db ?
47 0002 00 isr_usb_mp1 db ?
48 0003 00 isr_usb_mp0 db ?
49 0004 00 isr_usb_tblp db ?
50 0005 00 int_reg_temp db ? ;for store USB pipe int register
51 0006
"File: USB_INT.ASM Holtek Cross-Assembler Version 2.86 Page 2
52 0006 ;**************************************************************************
53 0006 ;* External INT subroutine
54 0006 ;**************************************************************************
55 0006
56 0000 Ext .Section at 350h 'code'
57 0000 ;External interrupt service routine
58 0000 EXT_START:
59 0000 ; clr wdt
60 0000 ; MOV ISR_USB_ACC,A ;Save ACC
61 0000 ; MOV A,STATUS ;Save STATUS
62 0000
63 0000 0080 R MOV isr_usb_status,A
64 0001
65 0001 0F01 MOV A,USB_REG_BANK ;Set bank pointer to USB control
66 0002 0084 MOV BP,A ;register bank
67 0003
68 0003 0703 MOV A,MP1
69 0004 0080 R MOV isr_usb_mp1,A
70 0005 0701 mov a,mp0
71 0006 0080 R mov isr_USB_mp0,a
72 0007 0707 mov a,tblp
73 0008 0080 R mov isr_usb_tblp,a
74 0009
75 0009 348B clr intc.1
76 000A 300B set intc.0
77 000B
78 000B ;-----------------------------------------------------------------------------------
79 000B 381A snz suspend_line
80 000C 2B70 jmp check_Access_FIFO
81 000D
82 000D 0FFC mov a,11111100b ;clear Int_reg within suspend state
83 000E 069B andm a,Int_reg
84 000F
85 000F 3D9A sz resume_line
86 0010 2B62 jmp turn_on_usb
87 0011
88 0011 ;turn_off_usb:
89 0011 2B63 jmp Exit_of_Ext_start
90 0012 turn_on_usb:
91 0012 319C set on_usb_clk ;turn on USB CLK
92 0013 ;-----------------------------------------------------------------------------------
93 0013 ;ExitExt:
94 0013 Exit_of_EXT_START:
95 0013 0700 R mov a,isr_usb_tblp
96 0014 0087 mov tblp,a
97 0015 0700 R mov a,isr_usb_mp0
98 0016 0081 mov mp0,a
99 0017 0700 R MOV A,isr_usb_mp1
100 0018 0083 MOV MP1,A
101 0019 1F04 clr BP ;register bank
102 001A
103 001A 0700 R MOV A,Isr_usb_status ;Restore STATUS
104 001B 008A MOV STATUS,A ;
105 001C 0700 R MOV A,isr_usb_acc ;Restore ACC
106 001D 340B clr intc.0
107 001E 308B set intc.1
108 001F 0004 RETI
109 0020 ;-----------------------------------------------------------------------------------
110 0020 check_Access_FIFO:
111 0020 319C set on_usb_clk ;turn on USB CLK
"File: USB_INT.ASM Holtek Cross-Assembler Version 2.86 Page 3
112 0021 361C clr regulator_off
113 0022
114 0022 3C1B sz Int_reg.@int0
115 0023 2B77 jmp AccessFIFO0
116 0024 3C9B sz Int_reg.@int1
117 0025 2BEE jmp AccessFIFO1
118 0026 2B63 jmp Exit_of_Ext_start
119 0027 ;-----------------------------------------------------------------------------------
120 0027 Check_Pipe0:
121 0027 AccessFIFO0:
122 0027 311A set chk_usb_reset_event ;set usb mode flag; special use for USB+PS2
123 0028 341B clr Int_reg.@int0 ;clr pipe0 int flag
124 0029
125 0029 0F46 MOV A,USB_MISC ;MP1 point to Misc. register
126 002A 0083 MOV MP1,A ;
127 002B ;------------------------------------------------------------------------------------
128 002B 3C00 E sz bwait_setup
129 002C 2B7F jmp wait_next_setup ; wait_setup=1;
130 002D
131 002D 3B82 snz r1.@usb_len0 ; (wait_setup=0)
132 002E 2B81 jmp wait_3in ; out, in
133 002F ;------------------------------------------------------------------------------------
134 002F wait_next_setup: ; wait_setup=1
135 002F 3A82 snz r1.@USB_Setup ; packet size=0(usb_len==0)
136 0030 2BBD JMP ExitExt0
137 0031 ;--------------------------------------------------------------------------------------
138 0031 ;Host has read data out from FIFO 0
139 0031 wait_3in:
140 0031 3800 E snz bhas_data_out_previous1 ;bhas_data_out_previousl=0,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -