?? main.lst
字號:
"File: MAIN.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 ext_start :near ;usb_int.asm
6 0000 extern Ram_init :near ;usb_proc.asm
7 0000 extern Timer1_ISR :near ;readwrite.asm
8 0000 extern VAR_init :near
9 0000 extern User_Action :near
10 0000
11 0000 extern ISR_USB_ACC :byte ;usb_int.asm
12 0000 extern baddr_state :bit ;variable.asm
13 0000 extern bCfgValue :bit
14 0000 extern bwdt_timeout :bit
15 0000 extern bwait_setup :bit
16 0000 extern bRmtWakeup :bit
17 0000 extern STALL :byte
18 0000 extern temp1 :byte
19 0000 extern temp2 :byte
20 0000 PIPE_CTRL EQU [041H]
21 0000 main .section at 0 'code'
22 0000 org 0
23 0000 ;check to flag, if z=0, wdt overflow
24 0000 070A mov a,status
25 0001 0E30 and a,00110000b
26 0002 0C30 xor a,00110000b
27 0003 280E jmp main_start
28 0004
29 0004 ;---------------------------------------------------------------------------------------------
30 0004 org 04h ;usb interrut subroutine
31 0004 0001 clr wdt
32 0005 0080 E MOV ISR_USB_ACC,A ;Save ACC
33 0006 070A MOV A,STATUS ;Save STATUS
34 0007 2800 E jmp EXT_start ;usb_int.asm
35 0008
36 0008 ;----------------------------------------------------------------------------------------------
37 0008 org 8h ;steal the int1 subroutine space for another procedure
38 0008 ;wait_27intr
39 0008 wait_28us:
40 0008 0F08 mov a,8
41 0009 wait_28us_cont:
42 0009 1785 sdz acc
43 000A 2809 jmp wait_28us_cont
44 000B ;wait_4instr
45 000B wait_4us:
46 000B 0003 ret
47 000C
48 000C ;----------------------------------------------------------------------------------------------
49 000C org 0ch ;timer1 interrupt subroutine for UART polling
50 000C ;*******************************
51 000C ; timer 1 interrupt vector
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 2
52 000C ;*******************************
53 000C 2800 E jmp Timer1_ISR
54 000D 0004 reti
55 000E
56 000E
57 000E ;-----------------------------------------------------------------------------------
58 000E ;-----------------------------------------------------------------------------------
59 000E ; main program here
60 000E ;-----------------------------------------------------------------------------------
61 000E ;-----------------------------------------------------------------------------------
62 000E main_start:
63 000E 390A snz z
64 000F 2816 jmp main_start_cont
65 0010 ;----------------------------------------------------------------------------------------------
66 0010 watchdog_timout:
67 0010 0001 clr wdt
68 0011 361B clr sel_ps2_line ; usr.4, not working under ps2 mode
69 0012 369B clr sel_usb_line ; usr.5, not working under usb mode
70 0013 351A clr chk_usb_reset_event ; usc.2, USB bus reset event flag
71 0014 3000 E set bwdt_timeout
72 0015 204C call wait_about_1s
73 0016
74 0016 ;----------------------------------------------------------------------------------------------
75 0016 main_start_cont:
76 0016 0001 clr wdt
77 0017 0F87 mov a,10000111b
78 0018 0089 mov WDTS,a
79 0019
80 0019 2000 E call Ram_init ; rf_proc.asm
81 001A
82 001A ;********************************
83 001A ; initial your own variables here
84 001A ;********************************
85 001A 2000 E call VAR_init
86 001B ;-------------------------------------------------------------------------------------------
87 001B ;********************************
88 001B ;Timer1 overflow per 4ms
89 001B ;********************************
90 001B 0F80 mov a,10000000b
91 001C 0091 mov tmr1c,a
92 001D
93 001D 0F90 mov a,090h
94 001E 0090 mov tmr1L,a
95 001F
96 001F 0FE8 mov a,0E8h
97 0020 008F mov tmr1H,a ;about 4ms for 6MHz
98 0021
99 0021 ;********************************
100 0021 ; set for 6m, clr for 12mz
101 0021 ;********************************
102 0021 331C set SCC.6 ; for 6MHz
103 0022 ;---------------------------------------------------------------------------------
104 0022 3000 E set baddr_state ; USB in address state
105 0023 3000 E set bwait_setup
106 0024 1F80 E set STALL
107 0025
108 0025 0F01 mov a,1
109 0026 0084 mov bp,a
110 0027 0F41 mov a, 41H
111 0028 0083 mov mp1,a
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 3
112 0029 3502 clr r1.2
113 002A 3541 CLR PIPE_CTRL.2
114 002B 1F04 clr bp
115 002C
116 002C 319C set on_usb_clk ; enable usb clock
117 002D 361B clr sel_ps2_line
118 002E 329B set sel_usb_line ; set usb mode
119 002F
120 002F 0F0B mov a,00001011b ; enable usb, timer1 interrupt
121 0030 008B mov intc,a
122 0031 ;------------------------------------------------------------------------------------------------
123 0031 mainloop:
124 0031 0001 clr wdt
125 0032 3C1A sz suspend_line ; USC.0=1, USB enter suspend mode
126 0033 2837 jmp Tosuspend
127 0034
128 0034 ;********************************
129 0034 ; Start to do your action when usb is ready
130 0034 ;********************************
131 0034 3C00 E sz bcfgvalue ; usb plug in, (set configuration complete)
132 0035 2000 E call User_Action
133 0036
134 0036 2831 JMP MainLoop ; No
135 0037
136 0037 ;-----------------------------------------------------------------------------------
137 0037 ToSuspend:
138 0037 3611 clr timer1_on
139 0038 3400 E clr bwdt_timeout
140 0039 204C call wait_about_1s
141 003A
142 003A ;------------------------------------------------------------------------------------------
143 003A ToSuspend_again:
144 003A 381A snz suspend_line ;about 850
145 003B 284A jmp exit_of_suspend
146 003C
147 003C 3D9A sz resume_line ;;; 2008/06/12
148 003D 284A jmp exit_of_suspend
149 003E
150 003E
151 003E 359C clr on_usb_clk
152 003F 0002 halt
153 0040 ;------------------------------------------------------------------------------------------
154 0040 RemoteWakeup:
155 0040 319C set on_usb_clk
156 0041 ;remote wakeup
157 0041 ;wakeup by system, suspend_line=0, resume_line=1;
158 0041 ;wakeup by device, suspend_line=1(remote wakeup), resume_line=0;
159 0041 ;out wakeup pulse
160 0041
161 0041 ;if(suspend_line && !resume_line)
162 0041 381A snz suspend_line
163 0042 284A jmp exit_of_suspend
164 0043 3D9A sz resume_line
165 0044 284A jmp exit_of_suspend
166 0045
167 0045 3800 E snz bRmtWakeup
168 0046 283A jmp ToSuspend_again
169 0047
170 0047 ;wakeup pulse
171 0047 309A set wakeup_line
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 4
172 0048 200B call wait_4us
173 0049 349A clr wakeup_line
174 004A
175 004A exit_of_suspend:
176 004A 3211 set timer1_on
177 004B 2831 jmp mainloop
178 004C
179 004C ;----------------------------------------------------------------------------------------------
180 004C ; wait 1 s
181 004C ; 1. delay 1 sec before entering suspend mode.
182 004C ; if not do so, system will not function properly
183 004C ; 2. when wdt overflow, wait 1 s to simulate a replug action
184 004C wait_about_1s:
185 004C ;about wait_3s for 6MHz crystal
186 004C 0F04 mov a,4
187 004D 0080 E mov temp2,a
188 004E 1F80 E set temp1
189 004F 1F85 set acc
190 0050 wait_3s:
191 0050 0001 clr wdt
192 0051 3C00 E sz bwdt_timeout ;for watchdog time-out
193 0052 2855 jmp $+3
194 0053 381A snz suspend_line ;about 1ms
195 0054 0003 ret
196 0055 1785 sdz acc
197 0056 2850 jmp wait_3s
198 0057 1780 E sdz temp1
199 0058 2850 jmp wait_3s ;260ms
200 0059 1780 E sdz temp2
201 005A 2850 jmp wait_3s
202 005B 0003 ret
203 005C ;---------------------------------------------------------------------------------------------
204 005C public wait_28us
205 005C public wait_4us
206 005C public wait_28us_cont
207 005C end
0 Errors
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -