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

📄 os_time.ls1

📁 uCOS-II_2.52在51上的移植程序
💻 LS1
📖 第 1 页 / 共 5 页
字号:
0035 CB              200             XCH     A,R3
0036 08              201             INC     R0
0037 E6              202             MOV     A,@R0
0038 FA              203             MOV     R2,A
0039 08              204             INC     R0
003A E6              205             MOV     A,@R0
003B F9              206             MOV     R1,A
003C 90000F          207             MOV     DPTR,#0FH
003F 120000   F      208             LCALL   ?C?CLDOPTR
0042 F4              209             CPL     A
0043 FE              210             MOV     R6,A
0044 EF              211             MOV     A,R7
0045 5E              212             ANL     A,R6
0046 D082            213             POP     DPL
0048 D083            214             POP     DPH
004A F0              215             MOVX    @DPTR,A
004B 7013            216             JNZ     ?C0002
                     217     ;             OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
                     218                             ; SOURCE LINE # 43
004D 900000   F      219             MOV     DPTR,#OSRdyGrp
0050 E0              220             MOVX    A,@DPTR
0051 FF              221             MOV     R7,A
0052 900010          222             MOV     DPTR,#010H
0055 120000   F      223             LCALL   ?C?CLDOPTR
0058 F4              224             CPL     A
0059 FE              225             MOV     R6,A
005A EF              226             MOV     A,R7
005B 5E              227             ANL     A,R6
005C 900000   F      228             MOV     DPTR,#OSRdyGrp
005F F0              229             MOVX    @DPTR,A
                     230     ;         }
                     231                             ; SOURCE LINE # 44
0060                 232     ?C0002:
                     233     ;         OSTCBCur->OSTCBDly = ticks;                                       /* Load ticks i
                             n TCB         */
                     234                             ; SOURCE LINE # 45
0060 CF              235             XCH     A,R7
0061 ED              236             MOV     A,R5
0062 CF              237             XCH     A,R7
0063 7800     F      238             MOV     R0,#LOW (OSTCBCur)
0065 CB              239             XCH     A,R3
0066 E6              240             MOV     A,@R0
0067 CB              241             XCH     A,R3
0068 08              242             INC     R0
0069 E6              243             MOV     A,@R0
A51 MACRO ASSEMBLER  OS_TIME                                                              08/08/2005 11:36:58 PAGE     5

006A FA              244             MOV     R2,A
006B 08              245             INC     R0
006C E6              246             MOV     A,@R0
006D F9              247             MOV     R1,A
006E 900009          248             MOV     DPTR,#09H
0071 EC              249             MOV     A,R4
0072 8FF0            250             MOV     B,R7
0074 120000   F      251             LCALL   ?C?ISTOPTR
                     252     ;         OS_EXIT_CRITICAL();
                     253                             ; SOURCE LINE # 46
0077 D2AF            254             SETB    EA
                     255     ;         OS_Sched();                                                       /* Find next ta
                             sk to run!    */
                     256                             ; SOURCE LINE # 47
0079 120000   F      257             LCALL   OS_Sched
                     258     ;     }
                     259                             ; SOURCE LINE # 48
                     260     ; }
                     261                             ; SOURCE LINE # 49
007C                 262     ?C0003:
007C 22              263             RET     
                     264     ; END OF _OSTimeDly
                     265     
                     266     ; /*$PAGE*/
                     267     ; /*
                     268     ; *****************************************************************************************
                             ****************
                     269     ; *                                     DELAY TASK FOR SPECIFIED TIME
                     270     ; *
                     271     ; * Description: This function is called to delay execution of the currently running task u
                             ntil some time
                     272     ; *              expires.  This call allows you to specify the delay time in HOURS, MINUTES
                             , SECONDS and
                     273     ; *              MILLISECONDS instead of ticks.
                     274     ; *
                     275     ; * Arguments  : hours     specifies the number of hours that the task will be delayed (max
                             . is 255)
                     276     ; *              minutes   specifies the number of minutes (max. 59)
                     277     ; *              seconds   specifies the number of seconds (max. 59)
                     278     ; *              milli     specifies the number of milliseconds (max. 999)
                     279     ; *
                     280     ; * Returns    : OS_NO_ERR
                     281     ; *              OS_TIME_INVALID_MINUTES
                     282     ; *              OS_TIME_INVALID_SECONDS
                     283     ; *              OS_TIME_INVALID_MS
                     284     ; *              OS_TIME_ZERO_DLY
                     285     ; *
                     286     ; * Note(s)    : The resolution on the milliseconds depends on the tick rate.  For example,
                              you can't do
                     287     ; *              a 10 mS delay if the ticker interrupts every 100 mS.  In this case, the de
                             lay would be
                     288     ; *              set to 0.  The actual delay is rounded to the nearest tick.
                     289     ; *****************************************************************************************
                             ****************
                     290     ; */
                     291     ; 
                     292     ; #if OS_TIME_DLY_HMSM_EN > 0
                     293     ; INT8U  OSTimeDlyHMSM (INT8U hours, INT8U minutes, INT8U seconds, INT16U milli)
                     294     
----                 295             RSEG  ?PR?_OSTimeDlyHMSM?OS_TIME
0000                 296     _OSTimeDlyHMSM:
                     297             USING   0
                     298                             ; SOURCE LINE # 77
0000 900000   F      299             MOV     DPTR,#seconds?143
0003 EB              300             MOV     A,R3
0004 F0              301             MOVX    @DPTR,A
A51 MACRO ASSEMBLER  OS_TIME                                                              08/08/2005 11:36:58 PAGE     6

                     302     ;---- Variable 'minutes?142' assigned to Register 'R5' ----
0005 900000   F      303             MOV     DPTR,#hours?141
0008 EF              304             MOV     A,R7
0009 F0              305             MOVX    @DPTR,A
                     306     ; {
                     307                             ; SOURCE LINE # 78
                     308     ;     INT32U ticks;
                     309     ;     INT16U loops;
                     310     ; 
                     311     ; 
                     312     ;     if (hours > 0 || minutes > 0 || seconds > 0 || milli > 0) {
                     313                             ; SOURCE LINE # 83
000A D3              314             SETB    C
000B 9400            315             SUBB    A,#00H
000D 501E            316             JNC     ?C0005
000F ED              317             MOV     A,R5
0010 9400            318             SUBB    A,#00H
0012 5019            319             JNC     ?C0005
0014 900000   F      320             MOV     DPTR,#seconds?143
0017 E0              321             MOVX    A,@DPTR
0018 9400            322             SUBB    A,#00H
001A 5011            323             JNC     ?C0005
001C 900000   F      324             MOV     DPTR,#milli?144+01H
001F E0              325             MOVX    A,@DPTR
0020 9400            326             SUBB    A,#00H
0022 900000   F      327             MOV     DPTR,#milli?144
0025 E0              328             MOVX    A,@DPTR
0026 9400            329             SUBB    A,#00H
0028 5003            330             JNC     $ + 5H
002A 020000   F      331             LJMP    ?C0004
002D                 332     ?C0005:
                     333     ;         if (minutes > 59) {
                     334                             ; SOURCE LINE # 84
002D ED              335             MOV     A,R5
002E D3              336             SETB    C
002F 943B            337             SUBB    A,#03BH
0031 4003            338             JC      ?C0006
                     339     ;             return (OS_TIME_INVALID_MINUTES);    /* Validate arguments to be within range
                                           */
                     340                             ; SOURCE LINE # 85
0033 7F51            341             MOV     R7,#051H
0035 22              342             RET     
                     343     ;         }
                     344                             ; SOURCE LINE # 86
0036                 345     ?C0006:
                     346     ;         if (seconds > 59) {
                     347                             ; SOURCE LINE # 87
0036 900000   F      348             MOV     DPTR,#seconds?143
0039 E0              349             MOVX    A,@DPTR
003A D3              350             SETB    C
003B 943B            351             SUBB    A,#03BH
003D 4003            352             JC      ?C0008
                     353     ;             return (OS_TIME_INVALID_SECONDS);
                     354                             ; SOURCE LINE # 88
003F 7F52            355             MOV     R7,#052H
0041 22              356             RET     
                     357     ;         }
                     358                             ; SOURCE LINE # 89
0042                 359     ?C0008:
                     360     ;         if (milli > 999) {
                     361                             ; SOURCE LINE # 90
0042 D3              362             SETB    C
0043 900000   F      363             MOV     DPTR,#milli?144+01H
0046 E0              364             MOVX    A,@DPTR
0047 94E7            365             SUBB    A,#0E7H
0049 900000   F      366             MOV     DPTR,#milli?144
A51 MACRO ASSEMBLER  OS_TIME                                                              08/08/2005 11:36:58 PAGE     7

004C E0              367             MOVX    A,@DPTR
004D 9403            368             SUBB    A,#03H
004F 4003            369             JC      ?C0009
                     370     ;             return (OS_TIME_INVALID_MILLI);
                     371                             ; SOURCE LINE # 91
0051 7F53            372             MOV     R7,#053H
0053 22              373             RET     
                     374     ;         }
                     375                             ; SOURCE LINE # 92
0054                 376     ?C0009:
                     377     ;                                                  /* Compute the total number of clock tic
                             ks required.. */
                     378     ;                                                  /* .. (rounded to the nearest tick)     
                                           */
                     379     ;         ticks = ((INT32U)hours * 3600L + (INT32U)minutes * 60L + (INT32U)seconds) * OS_TI
                             CKS_PER_SEC
                     380     ;               + OS_TICKS_PER_SEC * ((INT32U)milli + 500L / OS_TICKS_PER_SEC) / 1000L;
                     381                             ; SOURCE LINE # 96
0054 CF              382             XCH     A,R7
0055 ED              383             MOV     A,R5
0056 CF              384             XCH     A,R7
0057 E4              385             CLR     A
0058 FC              386             MOV     R4,A
0059 FD              387             MOV     R5,A
005A FE              388             MOV     R6,A
005B 7B3C            389             MOV     R3,#03CH
005D FA              390             MOV     R2,A
005E F9              391             MOV     R1,A
005F F8              392             MOV     R0,A
0060 120000   F      393             LCALL   ?C?LMUL
0063 EC              394             MOV     A,R4
0064 C0E0            395             PUSH    ACC
0066 ED              396             MOV     A,R5
0067 C0E0            397             PUSH    ACC
0069 EE              398             MOV     A,R6
006A C0E0            399             PUSH    ACC
006C EF              400             MOV     A,R7
006D C0E0            401             PUSH    ACC
006F 900000   F      402             MOV     DPTR,#hours?141
0072 E0              403             MOVX    A,@DPTR
0073 FF              404             MOV     R7,A
0074 E4              405             CLR     A
0075 FC              406             MOV     R4,A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -