📄 main.lst
字号:
63 0003A 1C01 retl @INCR ;1
64 0003B 1C00 retl @DECR ;2
65 0003C 1C01 retl @INCR ;3
66 0003D 1C00 retl @DECR ;4
67 0003E 1C01 retl @INCR ;5
68 0003F 1C00 retl @DECR ;6
69 00040 1C02 retl @EMPTY ;7
70 00041 1C01 retl @INCR ;8
71 00042 1C04 retl @FULL ;9
72 00043 1C00 retl @DECR ;10
73
74 00044 DispMode_Table:
75 00044 03C2 add PC,A
76 00045 0000 nop
77 00046 15B7 jmp DispMode_1 ;R
78 00047 15BE jmp DispMode_2 ;G
79 00048 15C5 jmp DispMode_3 ;B
80 00049 15CC jmp DispMode_4 ;R+G
81 0004A 15D3 jmp DispMode_5 ;R+B
82 0004B 15DA jmp DispMode_6 ;G+B
83 0004C 15E1 jmp DispMode_7 ;R+G+B
84 0004D 15E8 jmp DispMode_8 ;OFF
85
86 ORG 0x060
87 00060 Start:
88 00060 0011 disi
89 00061 1800 mov A,@00000000B
90 00062 0002 contw
91 00063 180F mov A,@00001111B
92 00064 0005 iow IOC5
93 00065 1881 mov A,@10000001B
94 00066 0006 iow IOC6
95 00067 1877 mov A,@01110111B
96 00068 000B iow IOCB
97 00069 18F7 mov A,@11110111B
98 0006A 000C iow IOCC
99 0006B 1800 mov A,@00000000B
100 0006C 000D iow IOCD
101 0006D 1800 mov A,@00000000B ;P60 As I/O
102 0006E 000E iow IOCE
103 0006F 1801 mov A,@00000001B ;Bit2-EXIE , Bit1-ICIE , Bit0-TCIE
104 00070 000F iow IOCF
105 00071 00CF clr RF
106 00072 18FF mov A,@11111111B
107 00073 0045 mov R5,A
108 00074 0046 mov R6,A
109 00075 1800 mov A,@0x00
110 00076 0041 mov TCC,A
111 00077 00E2 clr IR_Status
112 00078 00E0 clr TimeCnt
113 00079 1878 mov A,@120
114 0007A 005C mov Duty_RED,A
115 0007B 1800 mov A,@0
116 0007C 005D mov Duty_GREEN,A
117 0007D 1800 mov A,@0
118 0007E 005E mov Duty_BLUE,A
119 0007F 1800 mov A,@DECR
120 00080 0057 mov Red_Dirct,A
121 00081 1801 mov A,@INCR
122 00082 0058 mov Green_Dirct,A
123 00083 1802 mov A,@EMPTY
124 00084 0059 mov Blue_Dirct,A
125 00085 00D1 clr Count
126 00086 00D5 clr Mode
127 00087 00DB clr CntDirct_l
128 00088 00DA clr CntDirct_h
129 00089 00D3 clr DispMode
130 0008A 00D2 clr Flag
131 0008B 0010 eni
132 0008C MainLoop:
133 0008C 10F3 call IR_Service
134 0008D Check_Power_IR:
135 0008D 0E92 jbs Flag, POWER_VALID
136 0008E 149C jmp Check_LED_Mode
137 0008F 0892 bc Flag, POWER_VALID
138 00090 0ED2 jbs Flag, POWEROFF
139 00091 1496 jmp $+5
140 00092 08D2 bc Flag, POWEROFF ;POWER ON
141 00093 042D mov A,DispMode_Bak
142 00094 0053 mov DispMode,A
143 00095 14A4 jmp To_New_Disp_Mode
144 00096 0AD2 bs Flag, POWEROFF ;POWER OFF
145 00097 0413 mov A,DispMode
146 00098 006D mov DispMode_Bak,A
147 00099 1808 mov A,@8
148 0009A 0053 mov DispMode,A
149 0009B 14A4 jmp To_New_Disp_Mode
150 0009C Check_LED_Mode:
151 0009C 0E12 jbs Flag, IR_VALID
152 0009D 14AA jmp Check_Counter
153 0009E 0812 bc Flag, IR_VALID
154 ; jbc Flag, POWEROFF
155 ; jmp Check_Counter
156 0009F 0553 inc DispMode
157 000A0 0413 mov A,DispMode
158 000A1 1D08 sub A,@9-1
159 000A2 0E03 jbs STATUS, C
160 000A3 00D3 clr DispMode
161 000A4 To_New_Disp_Mode:
162 000A4 0413 mov A,DispMode
163 000A5 0C83 jbc STATUS, Z
164 000A6 14AA jmp Check_Counter
165 000A7 0413 mov A,DispMode
166 000A8 1044 call DispMode_Table
167 000A9 148C jmp MainLoop
168 000AA Check_Counter:
169 000AA 0413 mov A,DispMode
170 000AB 0E83 jbs STATUS, Z
171 000AC 148C jmp MainLoop
172 000AD 10AF call Update_Counter
173 000AE 148C jmp MainLoop
174
175 ;-----------------------------------------------------
176 ;Subroutines
177 ;-----------------------------------------------------
178 000AF Update_Counter:
179 000AF 0E52 jbs Flag, TCC100US
180 000B0 0012 ret
181 000B1 0852 bc Flag, TCC100US
182 000B2 Detect_Mode_Cnt:
183 000B2 055B inc CntDirct_l
184 000B3 041B mov A,CntDirct_l
185 000B4 1DB4 sub A,@180
186 000B5 0C03 jbc STATUS, C
187 000B6 14B9 jmp Detect_Red_Cnt
188 000B7 00DB clr CntDirct_l
189 000B8 1177 call Next_Dirct
190
191 000B9 Detect_Red_Cnt:
192 000B9 05EA djz CntPWM_RED
193 000BA 14CC jmp Detect_Green_Cnt
194 M LEFT_RED_ON_SKIP
000BB 0CC6 1 JBC R6 , 3
195 000BC 14C6 jmp Turn_Left_Red_On
196 000BD Turn_Left_Red_Off:
197 000BD 041C mov A,Duty_RED
198 000BE 1D77 sub A,@120-1
199 000BF 0E03 jbs STATUS, C
200 000C0 14C6 jmp Turn_Left_Red_On
201 000C1 006A mov CntPWM_RED,A
202 000C2 056A inc CntPWM_RED
203 M SET_LEFT_RED_OFF
000C3 0AC6 1 BS R6 , 3
204 M SET_RIGHT_RED_OFF
000C4 0B06 1 BS R6 , 4
205 000C5 14CC jmp Detect_Green_Cnt
206 000C6 Turn_Left_Red_On:
207 000C6 041C mov A,Duty_RED
208 000C7 0C83 jbc STATUS, Z
209 000C8 14BD jmp Turn_Left_Red_Off
210 000C9 006A mov CntPWM_RED,A
211 M SET_LEFT_RED_ON
000CA 08C6 1 BC R6 , 3
212 M SET_RIGHT_RED_ON
000CB 0906 1 BC R6 , 4
213
214 000CC Detect_Green_Cnt:
215 000CC 05EB djz CntPWM_GREEN
216 000CD 14DF jmp Detect_Blue_Cnt
217 M LEFT_GREEN_ON_SKIP
000CE 0C86 1 JBC R6 , 2
218 000CF 14D9 jmp Turn_Left_Green_On
219 000D0 Turn_Left_Green_Off:
220 000D0 041D mov A,Duty_GREEN
221 000D1 1D77 sub A,@120-1
222 000D2 0E03 jbs STATUS, C
223 000D3 14D9 jmp Turn_Left_Green_On
224 000D4 006B mov CntPWM_GREEN,A
225 000D5 056B inc CntPWM_GREEN
226 M SET_LEFT_GREEN_OFF
000D6 0A86 1 BS R6 , 2
227 M SET_RIGHT_GREEN_OFF
000D7 0B46 1 BS R6 , 5
228 000D8 14DF jmp Detect_Blue_Cnt
229 000D9 Turn_Left_Green_On:
230 000D9 041D mov A,Duty_GREEN
231 000DA 0C83 jbc STATUS, Z
232 000DB 14D0 jmp Turn_Left_Green_Off
233 000DC 006B mov CntPWM_GREEN,A
234 M SET_LEFT_GREEN_ON
000DD 0886 1 BC R6 , 2
235 M SET_RIGHT_GREEN_ON
000DE 0946 1 BC R6 , 5
236
237 000DF Detect_Blue_Cnt:
238 000DF 05EC djz CntPWM_BLUE
239 000E0 0012 ret
240 M LEFT_BLUE_ON_SKIP
000E1 0C46 1 JBC R6 , 1
241 000E2 14EC jmp Turn_Left_Blue_On
242 000E3 Turn_Left_Blue_Off:
243 000E3 041E mov A,Duty_BLUE
244 000E4 1D77 sub A,@120-1
245 000E5 0E03 jbs STATUS, C
246 000E6 14EC jmp Turn_Left_Blue_On
247 000E7 006C mov CntPWM_BLUE,A
248 000E8 056C inc CntPWM_BLUE
249 M SET_LEFT_BLUE_OFF
000E9 0A46 1 BS R6 , 1
250 M SET_RIGHT_BLUE_OFF
000EA 0B86 1 BS R6 , 6
251 000EB 0012 ret
252 000EC Turn_Left_Blue_On:
253 000EC 041E mov A,Duty_BLUE
254 000ED 0C83 jbc STATUS, Z
255 000EE 14E3 jmp Turn_Left_Blue_Off
256 000EF 006C mov CntPWM_BLUE,A
257 M SET_LEFT_BLUE_ON
000F0 0846 1 BC R6 , 1
258 M SET_RIGHT_BLUE_ON
000F1 0986 1 BC R6 , 6
259 000F2 0012 ret
260 ;-----------------------------------------------------
261 ;-----------------------------------------------------
262 000F3 IR_Service:
263 000F3 0422 mov A,IR_Status
264 000F4 0C83 jbc STATUS, Z
265 000F5 14FE jmp IR_Wait_Now
266 000F6 0C22 jbc IR_Status, IR_HEAD_LOW
267 000F7 1504 jmp IR_Head_Low_Now
268 000F8 0C62 jbc IR_Status, IR_HEAD_HIGH
269 000F9 1512 jmp IR_Head_High_Now
270 000FA 0CA2 jbc IR_Status, IR_DATA_LOW
271 000FB 1526 jmp IR_Data_Low_Now
272 000FC 0CE2 jbc IR_Status, IR_DATA_HIGH
273 000FD 1534 jmp IR_Data_High_Now
274 000FE IR_Wait_Now:
275 M IR_LOW_SKIP
000FE 0DC6 1 JBC R6 , 7
276 000FF 0012 ret
277 00100 0406 mov A,R6
278 00101 0A22 bs IR_Status, IR_HEAD_LOW
279 00102 00E0 clr TimeCnt
280 00103 0012 ret
281 00104 IR_Head_Low_Now:
282 00104 0420 mov A,TimeCnt
283 00105 1D64 sub A,@IR_HEAD_LOWMAX
284 00106 0E03 jbs STATUS, C
285 00107 1574 jmp Error_Data_Proc
286 M IR_HIGH_SKIP
00108 0FC6 1 JBS R6 , 7
287 00109 0012 ret
288 0010A 0420 mov A,TimeCnt
289 0010B 1D3C sub A,@IR_HEAD_LOWMIN
290 0010C 0C03 jbc STATUS, C
291 0010D 1574 jmp Error_Data_Proc
292 0010E 00E2 clr IR_Status
293 0010F 0A62 bs IR_Status, IR_HEAD_HIGH
294 00110 00E0 clr TimeCnt
295 00111 0012 ret
296 00112 IR_Head_High_Now:
297 00112 0420 mov A,TimeCnt
298 00113 1D32 sub A,@IR_HEAD_HIGHMAX
299 00114 0E03 jbs STATUS, C
300 00115 1574 jmp Error_Data_Proc
301 M IR_LOW_SKIP
00116 0DC6 1 JBC R6 , 7
302 00117 0012 ret
303 00118 0420 mov A,TimeCnt
304 00119 1D1E sub A,@IR_HEAD_HIGHMIN
305 0011A 0C03 jbc STATUS, C
306 0011B 1574 jmp Error_Data_Proc
307 0011C 00E2 clr IR_Status
308 0011D 0AA2 bs IR_Status, IR_DATA_LOW
309 0011E 00E0 clr TimeCnt
310 0011F 1820 mov A,@32
311 00120 0061 mov IRNum,A
312 00121 00E3 clr IRCode_E
313 00122 00E4 clr IRCode_H
314 00123 00E5 clr IRCode_M
315 00124 00E6 clr IRCode_L
316 00125 0012 ret
317 00126 IR_Data_Low_Now:
318 00126 0420 mov A,TimeCnt
319 00127 1D08 sub A,@IR_DATA_LOWMAX
320 00128 0E03 jbs STATUS, C
321 00129 1574 jmp Error_Data_Proc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -