📄 os_time.ls1
字号:
0060 5E 243 ANL A,R6
0061 900000 F 244 MOV DPTR,#OSRdyGrp
0064 F0 245 MOVX @DPTR,A
246 ; }
247 ; SOURCE LINE # 46
0065 248 ?C0002:
249 ; OSTCBCur->OSTCBDly = ticks; /* Load ticks i
n TCB */
250 ; SOURCE LINE # 47
0065 900000 F 251 MOV DPTR,#OSTCBCur
0068 120000 F 252 LCALL ?C?PLDXDATA
006B 90000C 253 MOV DPTR,#0CH
006E EC 254 MOV A,R4
006F 8DF0 255 MOV B,R5
0071 120000 F 256 LCALL ?C?ISTOPTR
257 ; OS_EXIT_CRITICAL();
258 ; SOURCE LINE # 48
0074 D2AF 259 SETB EA
260 ; OS_Sched(); /* Find next ta
sk to run! */
261 ; SOURCE LINE # 49
0076 120000 F 262 LCALL _?OS_Sched
263 ; }
264 ; SOURCE LINE # 50
265 ; }
266 ; SOURCE LINE # 51
0079 267 ?C0003:
0079 900002 268 MOV DPTR,#02H
007C 020000 F 269 LJMP ?C?ADDXBP
270 ; END OF _?OSTimeDly
271
272 ; /*$PAGE*/
273 ; /*
274 ; *****************************************************************************************
****************
275 ; * DELAY TASK FOR SPECIFIED TIME
276 ; *
277 ; * Description: This function is called to delay execution of the currently running task u
ntil some time
278 ; * expires. This call allows you to specify the delay time in HOURS, MINUTES
, SECONDS and
279 ; * MILLISECONDS instead of ticks.
280 ; *
281 ; * Arguments : hours specifies the number of hours that the task will be delayed (max
. is 255)
282 ; * minutes specifies the number of minutes (max. 59)
283 ; * seconds specifies the number of seconds (max. 59)
284 ; * milli specifies the number of milliseconds (max. 999)
285 ; *
286 ; * Returns : OS_NO_ERR
287 ; * OS_TIME_INVALID_MINUTES
288 ; * OS_TIME_INVALID_SECONDS
289 ; * OS_TIME_INVALID_MS
290 ; * OS_TIME_ZERO_DLY
291 ; *
292 ; * Note(s) : The resolution on the milliseconds depends on the tick rate. For example,
you can't do
293 ; * a 10 mS delay if the ticker interrupts every 100 mS. In this case, the de
lay would be
294 ; * set to 0. The actual delay is rounded to the nearest tick.
295 ; *****************************************************************************************
****************
296 ; */
297 ;
298 ; #if OS_TIME_DLY_HMSM_EN > 0
299 ; INT8U OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli)LG_REENTRAN
A51 MACRO ASSEMBLER OS_TIME 05/17/2005 11:20:00 PAGE 6
T
300
---- 301 RSEG ?PR?_?OSTimeDlyHMSM?OS_TIME
0000 302 _?OSTimeDlyHMSM:
303 USING 0
304 ; SOURCE LINE # 79
0000 90FFFF 305 MOV DPTR,#0FFFFH
0003 120000 F 306 LCALL ?C?ADDXBP
0006 EB 307 MOV A,R3
0007 F0 308 MOVX @DPTR,A
0008 90FFFF 309 MOV DPTR,#0FFFFH
000B 120000 F 310 LCALL ?C?ADDXBP
000E ED 311 MOV A,R5
000F F0 312 MOVX @DPTR,A
0010 90FFFF 313 MOV DPTR,#0FFFFH
0013 120000 F 314 LCALL ?C?ADDXBP
0016 EF 315 MOV A,R7
0017 F0 316 MOVX @DPTR,A
0018 90FFFA 317 MOV DPTR,#0FFFAH
001B 120000 F 318 LCALL ?C?ADDXBP
319 ; {
320 ; INT32U ticks;
321 ; INT16U loops;
322 ;
323 ;
324 ; if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {
325 ; SOURCE LINE # 85
001E 900006 326 MOV DPTR,#06H
0021 120000 F 327 LCALL ?C?XBPOFF
0024 E0 328 MOVX A,@DPTR
0025 D3 329 SETB C
0026 9400 330 SUBB A,#00H
0028 502D 331 JNC ?C0005
002A 900007 332 MOV DPTR,#07H
002D 120000 F 333 LCALL ?C?XBPOFF
0030 E0 334 MOVX A,@DPTR
0031 D3 335 SETB C
0032 9400 336 SUBB A,#00H
0034 5021 337 JNC ?C0005
0036 900008 338 MOV DPTR,#08H
0039 120000 F 339 LCALL ?C?XBPOFF
003C E0 340 MOVX A,@DPTR
003D D3 341 SETB C
003E 9400 342 SUBB A,#00H
0040 5015 343 JNC ?C0005
0042 900009 344 MOV DPTR,#09H
0045 120000 F 345 LCALL ?C?XBPOFF
0048 E0 346 MOVX A,@DPTR
0049 FE 347 MOV R6,A
004A A3 348 INC DPTR
004B E0 349 MOVX A,@DPTR
004C D3 350 SETB C
004D 9400 351 SUBB A,#00H
004F EE 352 MOV A,R6
0050 9400 353 SUBB A,#00H
0052 5003 354 JNC $ + 5H
0054 020000 F 355 LJMP ?C0004
0057 356 ?C0005:
357 ; if (minutes > 59) {
358 ; SOURCE LINE # 86
0057 900007 359 MOV DPTR,#07H
005A 120000 F 360 LCALL ?C?XBPOFF
005D E0 361 MOVX A,@DPTR
005E FE 362 MOV R6,A
005F D3 363 SETB C
0060 943B 364 SUBB A,#03BH
A51 MACRO ASSEMBLER OS_TIME 05/17/2005 11:20:00 PAGE 7
0062 4005 365 JC ?C0006
366 ; return (OS_TIME_INVALID_MINUTES); /* Validate arguments to be within range
*/
367 ; SOURCE LINE # 87
0064 7F51 368 MOV R7,#051H
0066 020000 F 369 LJMP ?C0007
370 ; }
371 ; SOURCE LINE # 88
0069 372 ?C0006:
373 ; if (seconds > 59) {
374 ; SOURCE LINE # 89
0069 900008 375 MOV DPTR,#08H
006C 120000 F 376 LCALL ?C?XBPOFF
006F E0 377 MOVX A,@DPTR
0070 D3 378 SETB C
0071 943B 379 SUBB A,#03BH
0073 4005 380 JC ?C0008
381 ; return (OS_TIME_INVALID_SECONDS);
382 ; SOURCE LINE # 90
0075 7F52 383 MOV R7,#052H
0077 020000 F 384 LJMP ?C0007
385 ; }
386 ; SOURCE LINE # 91
007A 387 ?C0008:
388 ; if (milli > 999) {
389 ; SOURCE LINE # 92
007A 900009 390 MOV DPTR,#09H
007D 120000 F 391 LCALL ?C?XBPOFF
0080 E0 392 MOVX A,@DPTR
0081 FC 393 MOV R4,A
0082 A3 394 INC DPTR
0083 E0 395 MOVX A,@DPTR
0084 D3 396 SETB C
0085 94E7 397 SUBB A,#0E7H
0087 EC 398 MOV A,R4
0088 9403 399 SUBB A,#03H
008A 4005 400 JC ?C0009
401 ; return (OS_TIME_INVALID_MILLI);
402 ; SOURCE LINE # 93
008C 7F53 403 MOV R7,#053H
008E 020000 F 404 LJMP ?C0007
405 ; }
406 ; SOURCE LINE # 94
0091 407 ?C0009:
408 ; /* Compute the total number of clock tic
ks required.. */
409 ; /* .. (rounded to the nearest tick)
*/
410 ; ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * OS_TI
CKS_PER_SEC
411 ; + OS_TICKS_PER_SEC * ((INT32U)milli + 500L / OS_TICKS_PER_SEC) / 1000L;
412 ; SOURCE LINE # 98
0091 AF06 413 MOV R7,AR6
0093 E4 414 CLR A
0094 FC 415 MOV R4,A
0095 FD 416 MOV R5,A
0096 FE 417 MOV R6,A
0097 7B3C 418 MOV R3,#03CH
0099 FA 419 MOV R2,A
009A F9 420 MOV R1,A
009B F8 421 MOV R0,A
009C 120000 F 422 LCALL ?C?LMUL
009F C004 423 PUSH AR4
00A1 C005 424 PUSH AR5
00A3 C006 425 PUSH AR6
00A5 C007 426 PUSH AR7
A51 MACRO ASSEMBLER OS_TIME 05/17/2005 11:20:00 PAGE 8
00A7 900006 427 MOV DPTR,#06H
00AA 120000 F 428 LCALL ?C?XBPOFF
00AD E0 429 MOVX A,@DPTR
00AE FF 430 MOV R7,A
00AF E4 431 CLR A
00B0 FC 432 MOV R4,A
00B1 FD 433 MOV R5,A
00B2 FE 434 MOV R6,A
00B3 7B10 435 MOV R3,#010H
00B5 7A0E 436 MOV R2,#0EH
00B7 F9 437 MOV R1,A
00B8 F8 438 MOV R0,A
00B9 120000 F 439 LCALL ?C?LMUL
00BC D003 440 POP AR3
00BE D002 441 POP AR2
00C0 D001 442 POP AR1
00C2 D000 443 POP AR0
00C4 120000 F 444 LCALL ?C?LADD
00C7 A804 445 MOV R0,AR4
00C9 A905 446 MOV R1,AR5
00CB AA06 447 MOV R2,AR6
00CD AB07 448 MOV R3,AR7
00CF 900008 449 MOV DPTR,#08H
00D2 120000 F 450 LCALL ?C?XBPOFF
00D5 E0 451 MOVX A,@DPTR
00D6 FF 452 MOV R7,A
00D7 E4 453 CLR A
00D8 FC 454 MOV R4,A
00D9 FD 455 MOV R5,A
00DA FE 456 MOV R6,A
00DB 120000 F 457 LCALL ?C?LADD
00DE E4 458 CLR A
00DF 7B14 459 MOV R3,#014H
00E1 FA 460 MOV R2,A
00E2 F9 461 MOV R1,A
00E3 F8 462 MOV R0,A
00E4 120000 F 463 LCALL ?C?LMUL
00E7 C004 464 PUSH AR4
00E9 C005 465 PUSH AR5
00EB C006 466 PUSH AR6
00ED C007 467 PUSH AR7
00EF 900009 468 MOV DPTR,#09H
00F2 120000 F 469 LCALL ?C?XBPOFF
00F5 E0 470 MOVX A,@DPTR
00F6 FE 471 MOV R6,A
00F7 A3 472 INC DPTR
00F8 E0 473 MOVX A,@DPTR
00F9 FF 474 MOV R7,A
00FA EF 475 MOV A,R7
00FB 2419 476 ADD A,#019H
00FD FF 477 MOV R7,A
00FE E4 478 CLR A
00FF 3E 479 ADDC A,R6
0100 FE 480 MOV R6,A
0101 E4 481 CLR A
0102 33 482 RLC A
0103 FD 483 MOV R5,A
0104 E4 484 CLR A
0105 33 485 RLC A
0106 FC 486 MOV R4,A
0107 E4 487 CLR A
0108 7B14 488 MOV R3,#014H
010A FA 489 MOV R2,A
010B F9 490 MOV R1,A
010C F8 491 MOV R0,A
010D 120000 F 492 LCALL ?C?LMUL
A51 MACRO ASSEMBLER OS_TIME 05/17/2005 11:20:00 PAGE 9
0110 E4 493 CLR A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -