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

📄 rtx51tny.lst

📁 单片机测量相位和频率的程序,使用了RTX51 TINY操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
0094 FF              215                     MOV     R7,A
                     216     ;      while (1)  {
0095 23              217                     RL      A
0096 2400     F      218                     ADD     A,#?RTX?TASKSTATE?S+1
0098 F8              219                     MOV     R0,A
0099                 220     ?C0001:
                     221     ;        if (++next == MAXTASKN+1)  next = 0;
0099 0F              222                     INC     R7
009A 08              223                     INC     R0
009B 08              224                     INC     R0
009C BF0004   F      225                     CJNE    R7,#?RTX_MAXTASKN+1,?C0003
009F 7F00            226                     MOV     R7,#0
00A1 7800     F      227                     MOV     R0,#?RTX?TASKSTATE?S+1
00A3                 228     ?C0003:
                     229     ;        if (STATE[next].st & K_READY)  break;
00A3 E6              230                     MOV     A,@R0
00A4 30E4F2          231                     JNB     ACC.B_READY,?C0001
                     232     ;      }
                     233     ;
                     234     
  0007               235     ?RTX_NEXTID     EQU     AR7
00A7 00              236     ?RTX_NEXTTASK:  NOP             ; for Debugging
                     237     
                     238     ;      while (current < next)  {
00A8                 239     ?C0005:
00A8 E500     F      240                     MOV     A,?RTX_CURRENTTASK
00AA C3              241                     CLR     C
00AB 9F              242                     SUBB    A,R7
00AC 5020            243                     JNC     ?C0011
                     244     
                     245     ;        current++;
00AE 0500     F      246                     INC     ?RTX_CURRENTTASK
                     247     ;        i = STKP[current];
00B0 7400     F      248                     MOV     A,#?RTX?TASKSP?S
00B2 2500     F      249                     ADD     A,?RTX_CURRENTTASK
00B4 F8              250                     MOV     R0,A
00B5 E6              251                     MOV     A,@R0
00B6 FD              252                     MOV     R5,A
                     253     ;        STKP[current] = SP;
00B7 A681            254                     MOV     @R0,SP
                     255     ;        if (current == MAXTASKN) limit = RAMTOP;
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     5

00B9 08              256                     INC     R0
00BA E6              257                     MOV     A,@R0
00BB AE00     F      258                     MOV     R6,?RTX_CURRENTTASK
00BD BE0002   F      259                     CJNE    R6,#?RTX_MAXTASKN,?C0007
00C0 7400     F      260                     MOV     A,#?RTX_RAMTOP
00C2                 261     ?C0007:
00C2 CD              262                     XCH     A,R5
00C3 F8              263                     MOV     R0,A
                     264     ;        else                       limit = STKP[current+1];
                     265     ;
                     266     ;        while (i != limit)  {
00C4                 267     ?C0009:
00C4 E8              268                     MOV     A,R0
00C5 6D              269                     XRL     A,R5
00C6 60E0            270                     JZ      ?C0005
                     271     ;          SP++;
                     272     ;          i++;
                     273     ;          STACK[SP] = STACK[i];
00C8 08              274                     INC     R0
00C9 E6              275                     MOV     A,@R0
00CA C0E0            276                     PUSH    ACC
00CC 80F6            277                     SJMP    ?C0009
                     278     ;        }
                     279     ;      }
00CE                 280     ?C0011:
                     281     ;
                     282     ;      while (current > next)  {
00CE E500     F      283                     MOV     A,?RTX_CURRENTTASK
00D0 D3              284                     SETB    C
00D1 9F              285                     SUBB    A,R7
00D2 4027            286                     JC      ?C0012
                     287             
00D4 E500     F      288                     MOV     A,?RTX_CURRENTTASK
00D6 2400     F      289                     ADD     A,#?RTX?TASKSP?S+1
00D8 F8              290                     MOV     R0,A
00D9 E6              291                     MOV     A,@R0
                     292     ;        if (current == (MAXTASKN)) i = RAMTOP;
                     293     ;        else                       i = STKP[current+1];
00DA AE00     F      294                     MOV     R6,?RTX_CURRENTTASK
00DC BE0002   F      295                     CJNE    R6,#?RTX_MAXTASKN,?C0013
00DF 7400     F      296                     MOV     A,#?RTX_RAMTOP
00E1                 297     ?C0013:
00E1 FD              298                     MOV     R5,A
                     299     ;        limit = STKP[current];
00E2 18              300                     DEC     R0
00E3 E6              301                     MOV     A,@R0
00E4 CD              302                     XCH     A,R5
00E5 F8              303                     MOV     R0,A
                     304     ;
                     305     ;        while (SP != limit)  {
00E6                 306     ?C0015:
00E6 E581            307                     MOV     A,SP
00E8 6D              308                     XRL     A,R5
00E9 6006            309                     JZ      ?C0016
                     310     ;          STACK[i] = STACK[SP];
                     311     ;          i--;
                     312     ;          SP--;
00EB D0E0            313                     POP     ACC
00ED F6              314                     MOV     @R0,A
00EE 18              315                     DEC     R0
                     316     
00EF 80F5            317                     SJMP    ?C0015
00F1                 318     ?C0016:
                     319     ;        }
                     320     ;        STKP[current] = i;
00F1 E500     F      321                     MOV     A,?RTX_CURRENTTASK
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     6

00F3 2400     F      322                     ADD     A,#?RTX?TASKSP?S
00F5 C8              323                     XCH     A,R0
00F6 F6              324                     MOV     @R0,A
                     325     ;        current--;
00F7 1500     F      326                     DEC     ?RTX_CURRENTTASK
00F9 80D3            327                     SJMP    ?C0011
00FB                 328     ?C0012:
                     329     ;      }
                     330     
                     331     ;      RoundRobinTime = STATE[current].timer + ?RTX_TIMESHARING
00FB E500     F      332                     MOV     A,?RTX_CURRENTTASK
00FD 23              333                     RL      A
00FE 2400     F      334                     ADD     A,#?RTX?TASKSTATE?S
0100 F8              335                     MOV     R0,A
0101 E6              336                     MOV     A,@R0
0102 2400     F      337                     ADD     A,#LOW ?RTX_TIMESHARING
0104 F500     F      338                     MOV     ?RTX_ROBINTIME,A
0106 08              339                     INC     R0
                     340     ;       if (STATE[current].st & K_ROBIN)  goto RobinOn;
0107 C2AF            341                     CLR     EA
0109 E6              342                     MOV     A,@R0
010A 10E62D          343                     JBC     ACC.B_ROBIN,RobinOn
                     344     ;       if ((STATE[current].st & K_SIG) && (STATE[current].st & SIG_EVENT)
                     345     ;          goto SignalOn;
010D 30E003          346                     JNB     ACC.B_WAITSIG,SignalOff
0110 20E21B          347                     JB      ACC.B_SIGNAL,SignalOn
0113                 348     SignalOff:
                     349     ;       if ((STATE[current].st & K_TMO) && (STATE[current].st & TMO_EVENT)
                     350     ;          goto TimeOutOn;
0113 30E10F          351                     JNB     ACC.B_WAITTIM,NoSwitch
0116 30E30C          352                     JNB     ACC.B_TIMEOUT,NoSwitch
0119                 353     TimeOutOn:      
0119 54F4            354                     ANL     A,#0F4H
011B F6              355                     MOV     @R0,A
011C D2AF            356                     SETB    EA
011E 7F08            357                     MOV     R7,#TMO_EVENT
0120 C200     F      358                     CLR     ?RTX_TS_DELAY
0122 C200     F      359                     CLR     ?RTX_TS_REQ
0124 22              360                     RET
                     361                     
0125 D2AF            362     NoSwitch:       SETB    EA
0127 7F00            363                     MOV     R7,#0
0129 C200     F      364                     CLR     ?RTX_TS_DELAY
012B C200     F      365                     CLR     ?RTX_TS_REQ
012D 22              366                     RET
                     367     
012E 54F0            368     SignalOn:       ANL     A,#0F0H
0130 F6              369                     MOV     @R0,A
0131 D2AF            370                     SETB    EA
0133 7F04            371                     MOV     R7,#SIG_EVENT
0135 C200     F      372                     CLR     ?RTX_TS_DELAY
0137 C200     F      373                     CLR     ?RTX_TS_REQ
0139 22              374                     RET             ; Start Task
                     375     
013A F6              376     RobinOn:        MOV     @R0,A
013B D2AF            377                     SETB    EA
013D D007            378                     POP     AR7
013F D006            379                     POP     AR6
0141 D005            380                     POP     AR5
0143 D004            381                     POP     AR4
0145 D003            382                     POP     AR3
0147 D002            383                     POP     AR2
0149 D001            384                     POP     AR1
014B D000            385                     POP     AR0
014D D082            386                     POP     DPL
014F D083            387                     POP     DPH
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     7

0151 D0F0            388                     POP     B
0153 D0D0            389                     POP     PSW
0155 D0E0            390                     POP     ACC
0157 C200     F      391                     CLR     ?RTX_TS_DELAY
0159 C200     F      392                     CLR     ?RTX_TS_REQ
015B 22              393                     RET                     ; Restart Task
                     394     ;    }
                     395     ;  }
                     396     
                     397     
                     398     ;  uchar os_create (uchar no)  {
                     399     ;    uchar i;
                     400     ;    uchar p1, p2;
                     401     ;---- Variable 'p1'  assigned to Register 'R1' ----
                     402     ;---- Variable 'p2'  assigned to Register 'R5' ----
                     403     ;---- Variable 'no'  assigned to Register 'R7' ----
                     404     ;---- Variable 'i'   assigned to Register 'R6' ----
                     405     ;
                     406     ;    if (no > MAXTASKN)  return (0xff);
015C                 407     _OS_create_task:
015C EF              408                     MOV     A,R7
015D D3              409                     SETB    C
015E 9400     F      410                     SUBB    A,#?RTX_MAXTASKN
0160 4003            411                     JC      ?C0010
0162 7FFF            412     ?C0012_:        MOV     R7,#0FFH
0164 22              413                     RET     
0165                 414     ?C0010:
                     415     ;    if (STATE[no].st & K_ACTIVE)  return (0xff);
0165 7400     F      416                     MOV     A,#?RTX?TASKSTATE?S+1
0167 2F              417                     ADD     A,R7
0168 2F              418                     ADD     A,R7
0169 F8              419                     MOV     R0,A
016A E6              420                     MOV     A,@R0
016B 20E5F4          421                     JB      ACC.B_ACTIVE,?C0012_
                     422     ;    STATE[no].st |= K_ACTIVE + K_READY;
016E C2AF            423                     CLR     EA
0170 E6              424                     MOV     A,@R0
0171 4430            425                     ORL     A,#K_ACTIVE+K_READY
0173 F6              426                     MOV     @R0,A
0174 D2AF            427                     SETB    EA
                     428     ;
                     429     ;    i = current;
0176 AE00     F      430                     MOV     R6,?RTX_CURRENTTASK
0178                 431     ?C0013_:
                     432     ;    while (i < no)  {
0178 EE              433                     MOV     A,R6
0179 C3              434                     CLR     C
017A 9F              435                     SUBB    A,R7
017B 5021            436                     JNC     ?C0014
                     437     ;      i++;
017D 0E              438                     INC     R6

⌨️ 快捷键说明

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