📄 main.lst
字号:
189 ; SOURCE LINE # 50
0013 D2AA 190 SETB EX1
A51 MACRO ASSEMBLER MAIN 14/08/06 08:50:17 PAGE 4
191 ; PX1 = 1;
192 ; SOURCE LINE # 51
0015 D2BA 193 SETB PX1
194 ; }
195 ; SOURCE LINE # 52
0017 22 196 RET
197 ; END OF initsys
198
199 ; //--------------------------------------------------------------------------
200 ; // 主程序
201 ; //--------------------------------------------------------------------------
202 ; void main(void)
203
---- 204 RSEG ?PR?main?MAIN
205 USING 0
0000 206 main:
207 ; SOURCE LINE # 56
208 ; {
209 ; SOURCE LINE # 57
210 ; init(); //变量初始化
211 ; SOURCE LINE # 58
0000 120000 F 212 LCALL init
213 ; initsys(); //系统初始化
214 ; SOURCE LINE # 59
0003 120000 F 215 LCALL initsys
0006 216 ?C0003:
217 ; while(1){
218 ; SOURCE LINE # 60
219 ; Delay(500);
220 ; SOURCE LINE # 61
0006 7FF4 221 MOV R7,#0F4H
0008 7E01 222 MOV R6,#01H
000A 120000 F 223 LCALL _Delay
224 ; }
225 ; SOURCE LINE # 62
000D 80F7 226 SJMP ?C0003
227 ; }
228 ; SOURCE LINE # 63
000F 22 229 RET
230 ; END OF main
231
---- 232 CSEG AT 00013H
0013 020000 F 233 LJMP intersvr1
234
235 ; //--------------------------------------------------------------------------
236 ; // 中断1子程序//点火信号检测
237 ; //--------------------------------------------------------------------------
238 ; void intersvr1(void) interrupt 2 using 1
239
---- 240 RSEG ?PR?intersvr1?MAIN
241 USING 1
0000 242 intersvr1:
243 ; SOURCE LINE # 67
244 ; {
245 ; //曲轴转动信号处理
246 ; TurnLed = 1;
247 ; SOURCE LINE # 70
0000 D290 248 SETB TurnLed
249 ; TH1=0xEC;
250 ; SOURCE LINE # 71
0002 758DEC 251 MOV TH1,#0ECH
252 ; TL1=0x77;
253 ; SOURCE LINE # 72
0005 758B77 254 MOV TL1,#077H
255 ; TR1 = 1; //启动T1;
256 ; SOURCE LINE # 73
A51 MACRO ASSEMBLER MAIN 14/08/06 08:50:17 PAGE 5
0008 D28E 257 SETB TR1
258 ; }
259 ; SOURCE LINE # 74
000A 32 260 RETI
261 ; END OF intersvr1
262
---- 263 CSEG AT 0001BH
001B 020000 F 264 LJMP time1
265
266 ; //--------------------------------------------------------------------------
267 ; // T1中断子程序
268 ; //--------------------------------------------------------------------------
269 ; void time1(void) interrupt 3 using 1
270
---- 271 RSEG ?PR?time1?MAIN
272 USING 1
0000 273 time1:
274 ; SOURCE LINE # 78
275 ; {
276 ; TurnLed = 0;
277 ; SOURCE LINE # 80
0000 C290 278 CLR TurnLed
279 ; TR1 = 0; //停止T1;
280 ; SOURCE LINE # 81
0002 C28E 281 CLR TR1
282 ; }
283 ; SOURCE LINE # 82
0004 32 284 RETI
285 ; END OF time1
286
---- 287 CSEG AT 0000BH
000B 020000 F 288 LJMP time0
289
290 ; //--------------------------------------------------------------------------
291 ; // T0中断子程序
292 ; //--------------------------------------------------------------------------
293 ; void time0(void) interrupt 1 using 1
294
---- 295 RSEG ?PR?time0?MAIN
296 USING 1
0000 297 time0:
0000 C0E0 298 PUSH ACC
0002 C0D0 299 PUSH PSW
0004 75D008 300 MOV PSW,#08H
301 ; SOURCE LINE # 86
302 ; {
303 ; TH0=0xFC;
304 ; SOURCE LINE # 88
0007 758CFC 305 MOV TH0,#0FCH
306 ; TL0=0x21;
307 ; SOURCE LINE # 89
000A 758A21 308 MOV TL0,#021H
309 ; if(++base==1000){ //1秒信号
310 ; SOURCE LINE # 90
000D 0500 F 311 INC base+01H
000F E500 F 312 MOV A,base+01H
0011 7002 313 JNZ ?C0020
0013 0500 F 314 INC base
0015 315 ?C0020:
0015 AE00 F 316 MOV R6,base
0017 B4E80F 317 CJNE A,#0E8H,?C0008
001A EE 318 MOV A,R6
001B B4030B 319 CJNE A,#03H,?C0008
320 ; base = 0;
321 ; SOURCE LINE # 91
001E E4 322 CLR A
A51 MACRO ASSEMBLER MAIN 14/08/06 08:50:17 PAGE 6
001F F500 F 323 MOV base,A
0021 F500 F 324 MOV base+01H,A
325 ; halfMinLed = !halfMinLed;
326 ; SOURCE LINE # 92
0023 B295 327 CPL halfMinLed
328 ; RunLed = !RunLed;
329 ; SOURCE LINE # 93
0025 B297 330 CPL RunLed
331 ; }else if(base==500){ //半秒信号
332 ; SOURCE LINE # 94
0027 800C 333 SJMP ?C0011
0029 334 ?C0008:
0029 E500 F 335 MOV A,base+01H
002B B4F407 336 CJNE A,#0F4H,?C0011
002E E500 F 337 MOV A,base
0030 B40102 338 CJNE A,#01H,?C0011
339 ; halfMinLed = !halfMinLed;
340 ; SOURCE LINE # 95
0033 B295 341 CPL halfMinLed
342 ; }
343 ; SOURCE LINE # 96
344 ; }
345 ; SOURCE LINE # 97
0035 346 ?C0011:
0035 D0D0 347 POP PSW
0037 D0E0 348 POP ACC
0039 32 349 RETI
350 ; END OF time0
351
352 ; //延时dtime 毫秒
353 ; void Delay(int dtime)
354
---- 355 RSEG ?PR?_Delay?MAIN
356 USING 0
0000 357 _Delay:
0000 8E00 F 358 MOV dtime?60,R6
0002 8F00 F 359 MOV dtime?60+01H,R7
360 ; SOURCE LINE # 99
361 ; {
362 ; SOURCE LINE # 100
363 ; UCHAR i,j;
364 ; for(i=0;i<dtime;i++)
365 ; SOURCE LINE # 102
0004 E4 366 CLR A
0005 F500 F 367 MOV i?61,A
0007 368 ?C0012:
0007 C3 369 CLR C
0008 E500 F 370 MOV A,i?61
000A 9500 F 371 SUBB A,dtime?60+01H
000C E500 F 372 MOV A,dtime?60
000E 6480 373 XRL A,#080H
0010 F8 374 MOV R0,A
0011 7480 375 MOV A,#080H
0013 98 376 SUBB A,R0
0014 5015 377 JNC ?C0018
378 ; {
379 ; SOURCE LINE # 103
380 ; for(j=0;j<250;j++)
381 ; SOURCE LINE # 104
0016 E4 382 CLR A
0017 F500 F 383 MOV j?61,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -