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

📄 rtx51tny.lst

📁 单片机测量相位和频率的程序,使用了RTX51 TINY操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
                     439     ;      p1 = STKP[i];
017E 7400     F      440                     MOV     A,#?RTX?TASKSP?S
0180 2E              441                     ADD     A,R6
0181 F8              442                     MOV     R0,A
0182 E6              443                     MOV     A,@R0
0183 F9              444                     MOV     R1,A
                     445     ;      p2 = i == MAXTASKN ? RAMTOP : STKP[i+1];
0184 08              446                     INC     R0
0185 E6              447                     MOV     A,@R0
0186 18              448                     DEC     R0
0187 BE0002   F      449                     CJNE    R6,#?RTX_MAXTASKN,?C0015_
018A 7400     F      450                     MOV     A,#?RTX_RAMTOP
018C                 451     ?C0015_:
018C FD              452                     MOV     R5,A
                     453     
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     8

018D                 454     ?C0017:
018D ED              455                     MOV     A,R5
018E 69              456                     XRL     A,R1
018F 6009            457                     JZ      ?C0018
                     458     ;      while (p1 != p2)  {
                     459     ;        p1++;
                     460     ;        DBYTE[p1-2] = DBYTE[p1];
                     461     ;      }
0191 09              462                     INC     R1
0192 E7              463                     MOV     A,@R1
0193 19              464                     DEC     R1
0194 19              465                     DEC     R1
0195 F7              466                     MOV     @R1,A
0196 09              467                     INC     R1
0197 09              468                     INC     R1
0198 80F3            469                     SJMP    ?C0017
019A                 470     ?C0018:
                     471     ;      STKP[i] -= 2;
019A 16              472                     DEC     @R0
019B 16              473                     DEC     @R0
                     474     ;    }    
019C 80DA            475                     SJMP    ?C0013_
019E                 476     ?C0014:
                     477     ;    if (i > no)  SP += 2;
019E EE              478                     MOV     A,R6
019F D3              479                     SETB    C
01A0 9F              480                     SUBB    A,R7
01A1 4004            481                     JC      ?C0020
01A3 0581            482                     INC     SP
01A5 0581            483                     INC     SP
01A7                 484     ?C0020:
                     485     ;    while (i > no)  {
01A7 EE              486                     MOV     A,R6
01A8 D3              487                     SETB    C
01A9 9F              488                     SUBB    A,R7
01AA 4022            489                     JC      ?C0021
                     490     ;      p1 = i == current ? SP : STKP[i+1];
01AC 7400     F      491                     MOV     A,#?RTX?TASKSP?S
01AE 2E              492                     ADD     A,R6
01AF F8              493                     MOV     R0,A
01B0 08              494                     INC     R0
01B1 E6              495                     MOV     A,@R0
01B2 F9              496                     MOV     R1,A
01B3 EE              497                     MOV     A,R6
01B4 B50002   F      498                     CJNE    A,?RTX_CURRENTTASK,?C0022
01B7 A981            499                     MOV     R1,SP
01B9                 500     ?C0022:
                     501     ;      STKP[i] += 2;
01B9 18              502                     DEC     R0
01BA 06              503                     INC     @R0
01BB 06              504                     INC     @R0
                     505     ;      p2 = STKP[i];
01BC E6              506                     MOV     A,@R0
01BD FD              507                     MOV     R5,A
01BE                 508     ?C0024:
                     509     ;      while (p1 != p2)  {
01BE ED              510                     MOV     A,R5
01BF 69              511                     XRL     A,R1
01C0 6009            512                     JZ      ?C0025
                     513     ;        DBYTE[p1] = DBYTE[p1-2];
01C2 19              514                     DEC     R1
01C3 19              515                     DEC     R1
01C4 E7              516                     MOV     A,@R1
01C5 09              517                     INC     R1
01C6 09              518                     INC     R1
01C7 F7              519                     MOV     @R1,A
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     9

                     520     ;        p1--;
01C8 19              521                     DEC     R1
                     522     ;      }
01C9 80F3            523                     SJMP    ?C0024
01CB                 524     ?C0025:
                     525     ;      i--;
01CB 1E              526                     DEC     R6
                     527     ;    }
01CC 80D9            528                     SJMP    ?C0020
                     529     
01CE                 530     ?C0021:
                     531     ;
                     532     ;    DWORD[STKP[no]] = ENTRY[no];
01CE EF              533                     MOV     A,R7
01CF 2400     F      534                     ADD     A,#?RTX?TASKSP?S
01D1 F8              535                     MOV     R0,A
01D2 E6              536                     MOV     A,@R0
01D3 04              537                     INC     A
01D4 F8              538                     MOV     R0,A
01D5 EF              539                     MOV     A,R7
01D6 2F              540                     ADD     A,R7
01D7 04              541                     INC     A
01D8 900000   F      542                     MOV     DPTR,#?RTX?TASKENT?S
01DB 93              543                     MOVC    A,@A+DPTR
01DC F6              544                     MOV     @R0,A
01DD 08              545                     INC     R0
01DE EF              546                     MOV     A,R7
01DF 2F              547                     ADD     A,R7
01E0 93              548                     MOVC    A,@A+DPTR
01E1 F6              549                     MOV     @R0,A
                     550     ;    return (0);
01E2 7F00            551                     MOV     R7,#0
                     552     ;  }
                     553     
01E4 22              554                     RET
                     555     
                     556     ;  os_wait (uchar typ, uchar timeout)  {
01E5                 557     _os_wait:
01E5                 558     _OS_wait1:                      ; entry point for 1 parameter
01E5                 559     _OS_wait2:                      ; entry point for 2 parameters
                     560     ;    uchar st = 0;
                     561     ;---- Variable 'typ' assigned to Register 'R7' ----
                     562     ;---- Variable 'timeout' assigned to Register 'R5' ----
                     563     ;---- Variable 'st' assigned to Register 'R6' ----
01E5 7EFF            564                     MOV     R6,#0FFH
                     565     ;
                     566     ;
01E7 E500     F      567                     MOV     A,?RTX_CURRENTTASK
01E9 23              568                     RL      A
01EA 2400     F      569                     ADD     A,#?RTX?TASKSTATE?S+1
01EC F8              570                     MOV     R0,A
                     571     ;    if (typ == 0)  goto no_wait;
01ED EF              572                     MOV     A,R7
01EE 605B            573                     JZ      no_wait
                     574     ;
                     575     ;    if (typ & K_IVL)  {
01F0 C2A9            576                     CLR     ET0
01F2 30E71A          577                     JNB     ACC.B_INTERVAL,??C0005
01F5 18              578                     DEC     R0
                     579     ;      STATE[current].timer += timeout;
01F6 E6              580                     MOV     A,@R0
01F7 600B            581                     JZ      ??C0006_
01F9 2D              582                     ADD     A,R5
01FA F6              583                     MOV     @R0,A
                     584     ;      if (!CY)  {
01FB 6002            585                     JZ      ??C0006a                ; zero means no wait
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE    10

01FD 4007            586                     JC      ??C0006
                     587     ;        st = TMO_EVENT;
01FF 7E08            588     ??C0006a:       MOV     R6,#TMO_EVENT
                     589     ;        goto no_wait;
0201 08              590                     INC     R0
0202 8047            591                     SJMP    no_wait;
                     592     ;      }
0204                 593     ??C0006_:
0204 ED              594                     MOV     A,R5
0205 F6              595                     MOV     @R0,A
0206                 596     ??C0006:
0206 08              597                     INC     R0
                     598     ;      STATE[current].st |= K_TMO;
0207 C2AF            599                     CLR     EA
0209 E6              600                     MOV     A,@R0
020A 4402            601                     ORL     A,#K_TMO
020C F6              602                     MOV     @R0,A
020D D2AF            603                     SETB    EA
                     604     ;    }  
020F                 605     ??C0005:
                     606     ;    if (typ & K_TMO)  {
020F EF              607                     MOV     A,R7
0210 30E112          608                     JNB     ACC.B_WAITTIM,??C0007
                     609     ;      if (timeout == 0)  {
0213 ED              610                     MOV     A,R5
0214 7004            611                     JNZ     ??C0008
                     612     ;        st = TMO_EVENT;
0216 7E08            613                     MOV     R6,#TMO_EVENT
                     614     ;        goto no_wait;
0218 8031            615                     SJMP    no_wait
                     616     ;      }
021A                 617     ??C0008:
021A 18              618                     DEC     R0
                     619     ;      STATE[current].timer = timeout;
021B F6              620                     MOV     @R0,A
                     621     ;      STATE[current].st |= K_TMO;
021C 08              622                     INC     R0
021D C2AF            623                     CLR     EA
021F E6              624                     MOV     A,@R0
0220 4402            625                     ORL     A,#K_TMO
0222 F6              626                     MOV     @R0,A
0223 D2AF            627                     SETB    EA
                     628     ;    }
0225                 629     ??C0007:
                     630     ;    if (typ & K_SIG)  {
0225 EF              631                     MOV     A,R7
0226 30E015          632                     JNB     ACC.B_WAITSIG,??C0003
                     633     ;      if (STATE[current].st & SIG_EVENT)  {
0229 C2AF            634                     CLR     EA
022B E6              635                     MOV     A,@R0
022C 30E206          636                     JNB     ACC.B_SIGNAL,??C0004
022F D2AF            637                     SETB    EA
                     638     ;        st = SIG_EVENT;
0231 7E04            639                     MOV     R6,#SIG_EVENT
                     640     ;        goto no_wait;
0233 8016            641                     SJMP    no_wait
                     642     ;      }
0235                 643     ??C0004:
                     644     ;      STATE[current].st |= K_SIG;
0235 4401            645                     ORL     A,#K_SIG
0237 54EF            646                     ANL     A,#NOT K_READY
0239 F6              647                     MOV     @R0,A
023A D2AF            648                     SETB    EA
023C 8008            649                     SJMP    ??C0003A
                     650     ;    }
023E                 651     ??C0003:
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE    11

                     652     ;    switchnow ();            /* Select Another Task */
023E C2AF            653                     CLR     EA
0240 E6              654                     MOV     A,@R0
0241 54EF            655                     ANL     A,#NOT K_READY
0243 F6              656                     MOV     @R0,A
0244 D2AF            657                     SETB    EA
0246 D2A9            658     ??C0003A:       SETB    ET0
0248 020000   F      659                     JMP     SwitchNow
                     660     

⌨️ 快捷键说明

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