⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_time.ls1

📁 UCOS在51上的移植,绝对经典!可以较少开发人员的工作量
💻 LS1
📖 第 1 页 / 共 3 页
字号:
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 + -