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

📄 rtx51tny.lst

📁 单片机测量相位和频率的程序,使用了RTX51 TINY操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
024B                 661     no_wait:
                     662     ;    STATE[current].st &= ~ (st | K_SIG | K_TMO);
                     663     ;    return (st);
024B EE              664                     MOV     A,R6
024C FF              665                     MOV     R7,A
024D 4403            666                     ORL     A,#K_SIG + K_TMO
024F F4              667                     CPL     A
0250 C2AF            668                     CLR     EA
0252 56              669                     ANL     A,@R0
0253 F6              670                     MOV     @R0,A
0254 D2AF            671                     SETB    EA
0256 D2A9            672                     SETB    ET0
0258 22              673                     RET
                     674     ;  }
                     675     
                     676     
                     677     
0259                 678     _OS_send_signal:
0259                 679     _isr_send_signal:
                     680     ;  os_send_signal (uchar taskid)  {
                     681     ;    uchar data *p;
                     682     ;---- Variable 'taskid' assigned to Register 'R7' ----
                     683     ;---- Variable 'p' assigned to Register 'R0' ----
                     684     ;    if (no > MAXTASKN)  return (0xff);
0259 EF              685                     MOV     A,R7
025A D3              686                     SETB    C
025B 9400     F      687                     SUBB    A,#?RTX_MAXTASKN
025D 4003            688                     JC      ??C0010
025F 7FFF            689                     MOV     R7,#0FFH
0261 22              690                     RET     
0262                 691     ??C0010:
                     692     
                     693     ;    p = &STATE[taskid].st;
0262 EF              694                     MOV     A,R7
0263 23              695                     RL      A
0264 2400     F      696                     ADD     A,#?RTX?TASKSTATE?S+1
0266 F8              697                     MOV     R0,A
0267 C2AF            698                     CLR     EA
0269 E6              699                     MOV     A,@R0
                     700     ;
                     701     ;    if (*p & K_ACTIVE)  {
026A 30E505          702                     JNB     ACC.B_ACTIVE,?C0026
                     703     ;      if (*p & K_SIG)  *p |= K_READY;
026D 30E002          704                     JNB     ACC.B_WAITSIG,?C0026
0270 D2E4            705                     SETB    ACC.B_READY
                     706     ;    }
0272                 707     ?C0026:
                     708     ;    *p |= SIG_EVENT;
0272 D2E2            709                     SETB    ACC.B_SIGNAL
0274 C6              710                     XCH     A,@R0
0275 D2AF            711                     SETB    EA
0277 20E203          712                     JB      ACC.B_SIGNAL,SIG_PENDING
027A 7F00            713                     MOV     R7,#0
027C 22              714                     RET
                     715     
027D 7F01            716     SIG_PENDING:    MOV     R7,#1
027F 22              717                     RET
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE    12

                     718     ;  }
                     719     
0280                 720     _OS_clear_signal:
                     721     ;  os_clear_signal (uchar taskid)  {
                     722     ;    uchar data *p;
                     723     ;---- Variable 'taskid' assigned to Register 'R7' ----
                     724     ;---- Variable 'p' assigned to Register 'R0' ----
                     725     ;    if (no > MAXTASKN)  return (0xff);
0280 EF              726                     MOV     A,R7
0281 D3              727                     SETB    C
0282 9400     F      728                     SUBB    A,#?RTX_MAXTASKN
0284 4003            729                     JC      _??C0010
0286 7FFF            730                     MOV     R7,#0FFH
0288 22              731                     RET     
0289                 732     _??C0010:
                     733     
                     734     ;    p = &STATE[taskid].st;
0289 EF              735                     MOV     A,R7
028A 23              736                     RL      A
028B 2400     F      737                     ADD     A,#?RTX?TASKSTATE?S+1
028D F8              738                     MOV     R0,A
028E C2AF            739                     CLR     EA
0290 E6              740                     MOV     A,@R0
                     741     ;    *p &= SIG_EVENT;
0291 C2E2            742                     CLR     ACC.B_SIGNAL
0293 C6              743                     XCH     A,@R0
0294 D2AF            744                     SETB    EA
0296 20E203          745                     JB      ACC.B_SIGNAL,_SIG_PENDING
0299 7F00            746                     MOV     R7,#0
029B 22              747                     RET
                     748     
029C 7F01            749     _SIG_PENDING:   MOV     R7,#1
029E 22              750                     RET
                     751     ;  }
                     752     
                     753     ; uchar os_delete (uchar no)  {
                     754     ;   uchar i;
                     755     ;   uchar last, first, check;
                     756     ;
029F                 757     _OS_delete_task:
                     758     ;---- Variable 'first' assigned to Register 'R1' ----
                     759     ;---- Variable 'last' assigned to Register 'R5' ----
                     760     ;---- Variable 'check' assigned to Register 'R4' ----
                     761     ;---- Variable 'no' assigned to Register 'R7' ----
                     762     ; if (no > MAXTASKN)  return (0xff);
029F EF              763                     MOV     A,R7
02A0 D3              764                     SETB    C
02A1 9400     F      765                     SUBB    A,#?RTX_MAXTASKN
02A3 4003            766                     JC      ?C0030
02A5 7FFF            767     ?C0032:         MOV     R7,#0FFH
02A7 22              768                     RET     
02A8                 769     ?C0030:
                     770     ; if (!(STATE[no].st & K_ACTIVE))  return (0xff);
                     771     
02A8 EF              772                     MOV     A,R7
02A9 23              773                     RL      A
02AA 2400     F      774                     ADD     A,#?RTX_TASKSTATUS+1
02AC F8              775                     MOV     R0,A
02AD E6              776                     MOV     A,@R0
02AE 30E5F4          777                     JNB     ACC.B_ACTIVE,?C0032
                     778     ; STATE[no].st &= ~(K_ACTIVE | K_READY | K_SIG | K_TMO | K_ROBIN);
02B1 C2AF            779                     CLR     EA
02B3 E6              780                     MOV     A,@R0
02B4 548C            781                     ANL     A,#NOT (K_ACTIVE+K_READY+K_SIG+K_TMO+K_ROBIN)
02B6 F6              782                     MOV     @R0,A
02B7 D2AF            783                     SETB    EA
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE    13

                     784     ; if (current == no)  {
02B9 E500     F      785                     MOV     A,?RTX_CURRENTTASK
02BB B5070A          786                     CJNE    A,AR7,?C0033
                     787     ;   SP = STKP[no];
02BE 7400     F      788                     MOV     A,#?RTX_TASKSP
02C0 2F              789                     ADD     A,R7
02C1 F8              790                     MOV     R0,A
02C2 E6              791                     MOV     A,@R0
02C3 F581            792                     MOV     SP,A
                     793     ;   switchnow ();
02C5 020000   F      794                     LJMP    switchnow
                     795     ; }
                     796     
02C8                 797     ?C0033:
                     798     ; if (current < no)  {
02C8 502E            799                     JNC     ?C0034
                     800     ;   last  = (no == MAXTASKN) ? STACKTOP : STKP[no+1];
02CA 7400     F      801                     MOV     A,#?RTX_TASKSP+1
02CC 2F              802                     ADD     A,R7
02CD F8              803                     MOV     R0,A
02CE E6              804                     MOV     A,@R0
02CF BF0002   F      805                     CJNE    R7,#?RTX_MAXTASKN,?C0035
02D2 7400     F      806                     MOV     A,#?RTX_RAMTOP
02D4                 807     ?C0035:
02D4 FD              808                     MOV     R5,A
                     809     ;   first = STKP[no];
02D5 18              810                     DEC     R0
02D6 E6              811                     MOV     A,@R0
02D7 F9              812                     MOV     R1,A
02D8                 813     ?C0039:
                     814     ;   do  {
                     815     ;     check = STKP[no];
02D8 7400     F      816                     MOV     A,#?RTX_TASKSP
02DA 2F              817                     ADD     A,R7
02DB F8              818                     MOV     R0,A
02DC FB              819                     MOV     R3,A            ; save @STKP
02DD E6              820                     MOV     A,@R0
02DE FC              821                     MOV     R4,A
                     822     ;     while (first != check)  {
02DF                 823     ?C0040:
02DF E9              824                     MOV     A,R1
02E0 6C              825                     XRL     A,R4
02E1 6008            826                     JZ      ?C0037
                     827     ;       DBYTE[last] = DBYTE[first];
                     828                                              ; SOURCE LINE # 186
02E3 A805            829                     MOV     R0,AR5
02E5 E7              830                     MOV     A,@R1
02E6 F6              831                     MOV     @R0,A
                     832     ;       last--;
02E7 1D              833                     DEC     R5
                     834     ;       first--;
02E8 19              835                     DEC     R1
                     836     ;     }
02E9 80F4            837                     SJMP    ?C0040
02EB                 838     ?C0037:
                     839     ;     STKP[no] = last;
02EB A803            840                     MOV     R0,AR3          ; restore @STKP
02ED A605            841                     MOV     @R0,AR5
                     842     ;     no--;
02EF 1F              843                     DEC     R7
                     844     ;   }  while (current != no);
02F0 E500     F      845                     MOV     A,?RTX_CURRENTTASK
02F2 B507E3          846                     CJNE    A,AR7,?C0039
                     847     ;   return (0);
02F5 7F00            848                     MOV     R7,#0
02F7 22              849                     RET     
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE    14

                     850     ; }
02F8                 851     ?C0034:
                     852     ; if (current > no)  {
                     853     ;   last  = STKP[no+1];
02F8 7400     F      854                     MOV     A,#?RTX_TASKSP+1
02FA 2F              855                     ADD     A,R7
02FB F8              856                     MOV     R0,A
02FC E6              857                     MOV     A,@R0
02FD FD              858                     MOV     R5,A
                     859     ;   first = STKP[no];
02FE 18              860                     DEC     R0
02FF 8601            861                     MOV     AR1,@R0
0301                 862     ?C0045:
                     863     ;   do  {
                     864     ;     no++;
0301 0F              865                     INC     R7
                     866     ;     STKP[no] = first;
0302 7400     F      867                     MOV     A,#?RTX_TASKSP
0304 2F              868                     ADD     A,R7
0305 F8              869                     MOV     R0,A
0306 A601            870                     MOV     @R0,AR1
                     871     ;     check = (no == current) ? SP : STKP[no+1];
0308 08              872                     INC     R0
0309 8604            873                     MOV     AR4,@R0
030B E500     F      874                     MOV     A,?RTX_CURRENTTASK
030D B50702          875                     CJNE    A,AR7,?C0046
0310 AC81            876                     MOV     R4,SP
0312                 877     ?C0046:
                     878     ;     while (last != check)  {
0312 ED              879                     MOV     A,R5
0313 6C              880                     XRL     A,R4
0314 6008            881                     JZ      ?C0043
                     882     ;       last++;
0316 0D              883                     INC     R5
                     884     ;       first++;

⌨️ 快捷键说明

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