📄 smart_timer.ls1
字号:
002D 2400 F 234 ADD A,#LOW (wSmartTimerCounterPool)
002F F8 235 MOV R0,A
0030 E6 236 MOV A,@R0
0031 FE 237 MOV R6,A
0032 08 238 INC R0
0033 E6 239 MOV A,@R0
0034 4E 240 ORL A,R6
0035 706F 241 JNZ ?C0007
242 ; {
243 ; SOURCE LINE # 40
244 ; msg_queue_in(SmartTimerMsgPool[i][0], SmartTimerMsgPool[i][
1]);
245 ; SOURCE LINE # 41
0037 7800 F 246 MOV R0,#LOW (i?040)
0039 E6 247 MOV A,@R0
003A FE 248 MOV R6,A
003B 25E0 249 ADD A,ACC
003D 2400 F 250 ADD A,#LOW (SmartTimerMsgPool)
003F F8 251 MOV R0,A
A51 MACRO ASSEMBLER SMART_TIMER 10/31/2003 02:22:29 PAGE 5
0040 E6 252 MOV A,@R0
0041 FF 253 MOV R7,A
0042 EE 254 MOV A,R6
0043 25E0 255 ADD A,ACC
0045 2400 F 256 ADD A,#LOW (SmartTimerMsgPool+01H)
0047 F8 257 MOV R0,A
0048 E6 258 MOV A,@R0
0049 FD 259 MOV R5,A
004A 120000 F 260 LCALL _msg_queue_in
261 ; switch(SmartTimerSeveralPool[i])
262 ; SOURCE LINE # 42
004D 7800 F 263 MOV R0,#LOW (i?040)
004F E6 264 MOV A,@R0
0050 FF 265 MOV R7,A
0051 2400 F 266 ADD A,#LOW (SmartTimerSeveralPool)
0053 F8 267 MOV R0,A
0054 E6 268 MOV A,@R0
0055 14 269 DEC A
0056 601E 270 JZ ?C0010
0058 04 271 INC A
0059 702B 272 JNZ ?C0011
273 ; {
274 ; SOURCE LINE # 43
275 ; case 0x00:
/*无限次*/
276 ; SOURCE LINE # 44
005B 277 ?C0009:
278 ; wSmartTimerCounterPool[i] = wSmartTimerCoun
terRestorePool[i];
279 ; SOURCE LINE # 45
005B 7800 F 280 MOV R0,#LOW (i?040)
005D E6 281 MOV A,@R0
005E FE 282 MOV R6,A
005F 25E0 283 ADD A,ACC
0061 2400 F 284 ADD A,#LOW (wSmartTimerCounterRestorePool)
0063 F8 285 MOV R0,A
0064 E6 286 MOV A,@R0
0065 FC 287 MOV R4,A
0066 08 288 INC R0
0067 E6 289 MOV A,@R0
0068 FD 290 MOV R5,A
0069 EE 291 MOV A,R6
006A 25E0 292 ADD A,ACC
006C 2400 F 293 ADD A,#LOW (wSmartTimerCounterPool)
006E F8 294 MOV R0,A
006F A604 295 MOV @R0,AR4
0071 08 296 INC R0
0072 A605 297 MOV @R0,AR5
298 ; break;
299 ; SOURCE LINE # 46
0074 8030 300 SJMP ?C0007
301 ; case 0x01:
/*一次*/
302 ; SOURCE LINE # 47
0076 303 ?C0010:
304 ; RESETBIT(SmartTimerNumber, i);
305 ; SOURCE LINE # 48
0076 7401 306 MOV A,#01H
0078 A807 307 MOV R0,AR7
007A 08 308 INC R0
007B 8002 309 SJMP ?C0028
007D 310 ?C0027:
007D C3 311 CLR C
007E 33 312 RLC A
007F 313 ?C0028:
007F D8FC 314 DJNZ R0,?C0027
A51 MACRO ASSEMBLER SMART_TIMER 10/31/2003 02:22:29 PAGE 6
0081 F4 315 CPL A
0082 5200 F 316 ANL SmartTimerNumber,A
317 ; break;
318 ; SOURCE LINE # 49
0084 8020 319 SJMP ?C0007
320 ; default:
/*多次*/
321 ; SOURCE LINE # 50
0086 322 ?C0011:
323 ; wSmartTimerCounterPool[i] = wSmartTimerCoun
terRestorePool[i];
324 ; SOURCE LINE # 51
0086 7800 F 325 MOV R0,#LOW (i?040)
0088 E6 326 MOV A,@R0
0089 FF 327 MOV R7,A
008A 25E0 328 ADD A,ACC
008C 2400 F 329 ADD A,#LOW (wSmartTimerCounterRestorePool)
008E F8 330 MOV R0,A
008F E6 331 MOV A,@R0
0090 FC 332 MOV R4,A
0091 08 333 INC R0
0092 E6 334 MOV A,@R0
0093 FD 335 MOV R5,A
0094 EF 336 MOV A,R7
0095 25E0 337 ADD A,ACC
0097 2400 F 338 ADD A,#LOW (wSmartTimerCounterPool)
0099 F8 339 MOV R0,A
009A A604 340 MOV @R0,AR4
009C 08 341 INC R0
009D A605 342 MOV @R0,AR5
343 ; SmartTimerSeveralPool[i]--;
344 ; SOURCE LINE # 52
009F 7800 F 345 MOV R0,#LOW (i?040)
00A1 E6 346 MOV A,@R0
00A2 2400 F 347 ADD A,#LOW (SmartTimerSeveralPool)
00A4 F8 348 MOV R0,A
00A5 16 349 DEC @R0
350 ; break;
351 ; SOURCE LINE # 53
352 ; }
353 ; SOURCE LINE # 54
354 ; }
355 ; SOURCE LINE # 55
00A6 356 ?C0007:
357 ; wSmartTimerCounterPool[i]--;
358 ; SOURCE LINE # 56
00A6 7800 F 359 MOV R0,#LOW (i?040)
00A8 E6 360 MOV A,@R0
00A9 25E0 361 ADD A,ACC
00AB 2400 F 362 ADD A,#LOW (wSmartTimerCounterPool)
00AD F8 363 MOV R0,A
00AE 08 364 INC R0
00AF E6 365 MOV A,@R0
00B0 16 366 DEC @R0
00B1 18 367 DEC R0
00B2 7001 368 JNZ ?C0029
00B4 16 369 DEC @R0
00B5 370 ?C0029:
371 ; }
372 ; SOURCE LINE # 57
373 ; }
374 ; SOURCE LINE # 58
00B5 375 ?C0005:
00B5 7800 F 376 MOV R0,#LOW (i?040)
00B7 06 377 INC @R0
00B8 020000 F 378 LJMP ?C0003
A51 MACRO ASSEMBLER SMART_TIMER 10/31/2003 02:22:29 PAGE 7
379 ; }
380 ; SOURCE LINE # 59
00BB 381 ?C0002:
00BB 22 382 RET
383 ; END OF smart_timer_server
384
385 ;
386 ;
387 ;
388 ; /****************************************************************************************
**
389 ; *函数名: smart_timer_idle_check
390 ; *参数: 无
391 ; *返回值: number
392 ; *描述: 智能定时器空闲检测,返回空闲定时器数目
393 ; *编写: 王绍伟
394 ; *版本信息: V1.0 2003年8月15日
395 ; *****************************************************************************************
*/
396 ; extern byte smart_timer_idle_check(void)
397
---- 398 RSEG ?PR?smart_timer_idle_check?SMART_TIMER
0000 399 smart_timer_idle_check:
400 USING 0
401 ; SOURCE LINE # 71
402 ; {
403 ; SOURCE LINE # 72
404 ; byte idata i;
405 ; byte idata number=0;
406 ; SOURCE LINE # 74
0000 E4 407 CLR A
0001 7800 F 408 MOV R0,#LOW (number?142)
0003 F6 409 MOV @R0,A
410 ; for(i = 0; i < 4; i++)
411 ; SOURCE LINE # 75
0004 18 412 DEC R0
0005 F6 413 MOV @R0,A
0006 414 ?C0012:
0006 7800 F 415 MOV R0,#LOW (i?141)
0008 E6 416 MOV A,@R0
0009 FF 417 MOV R7,A
000A C3 418 CLR C
000B 9404 419 SUBB A,#04H
000D 5016 420 JNC ?C0013
421 ; {
422 ; SOURCE LINE # 76
423 ; if(!GETBIT(SmartTimerNumber, i))
424 ; SOURCE LINE # 77
000F E500 F 425 MOV A,SmartTimerNumber
0011 A807 426 MOV R0,AR7
0013 08 427 INC R0
0014 8002 428 SJMP ?C0031
0016 429 ?C0030:
0016 C3 430 CLR C
0017 13 431 RRC A
0018 432 ?C0031:
0018 D8FC 433 DJNZ R0,?C0030
001A 20E003 434 JB ACC.0,?C0014
435 ; {
436 ; SOURCE LINE # 78
437 ; number++;
438 ; SOURCE LINE # 79
001D 7800 F 439 MOV R0,#LOW (number?142)
001F 06 440 INC @R0
441 ; }
442 ; SOURCE LINE # 80
A51 MACRO ASSEMBLER SMART_TIMER 10/31/2003 02:22:29 PAGE 8
443 ; }
444 ; SOURCE LINE # 81
0020 445 ?C0014:
0020 7800 F 446 MOV R0,#LOW (i?141)
0022 06 447 INC @R0
0023 80E1 448 SJMP ?C0012
0025 449 ?C0013:
450 ; return(number);
451 ; SOURCE LINE # 82
0025 7800 F 452 MOV R0,#LOW (number?142)
0027 E6 453 MOV A,@R0
0028 FF 454 MOV R7,A
455 ; }
456 ; SOURCE LINE # 83
0029 457 ?C0016:
0029 22 458 RET
459 ; END OF smart_timer_idle_check
460
461 ;
462 ;
463 ;
464 ; /****************************************************************************************
**
465 ; *函数名: smart_timer_start
466 ; *参数: msgType 消息类型
467 ; msgPoint 消息指针
468 ; wCounter 在此例中以5ms为最小计数单位值,设置
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -