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

📄 taskisr.ls1

📁 MCS-51的一个小型操作系统,在KeilC中大模式下编译工作
💻 LS1
📖 第 1 页 / 共 3 页
字号:
  00EC               225     AD0BUSY BIT     0E8H.4
  00D0               226     PSW     DATA    0D0H
  00D8               227     CCF0    BIT     0D8H.0
  009A               228     RB80    BIT     098H.2
  00C1               229     SMB0STA DATA    0C1H
  00D9               230     CCF1    BIT     0D8H.1
                     231     ?PR?_OSTask_TimeDal?TASKISR              SEGMENT CODE 
                     232             EXTRN   DATA (OSRdyGrp)
                     233             EXTRN   DATA (Prio)
                     234             EXTRN   DATA (ISR_num)
                     235             EXTRN   CODE (OSISR_Task_Sched)
                     236             EXTRN   CODE (OSMapTab)
                     237             EXTRN   DATA (OSRdyTab)
                     238             EXTRN   XDATA (OSPCB)
                     239             PUBLIC  _OSTask_TimeDal
                     240     ; /********************************************
                     241     ;        嵌入式系统 小型操作系统
                     242     ;                 作者:汪普宏
                     243     ;           制作日期:2006.9
                     244     ; *********************************************/
                     245     ; 
                     246     ; #include "os.h"
                     247     ; #include"OS_Mail.h"
                     248     ; #include "OS_Memory.h"
                     249     ; /****************************************
                     250     ; 模块功能:任务级任务调度
                     251     ; 模块接口:当前任务优先级,任务挂起延迟时间
                     252     ; 调用者:任务
                     253     ; 返回值:  无
                     254     ; *****************************************/
                     255     ; 
                     256     ; void OSTask_TimeDal(uchar TimeDal)                    //任务级任务切换函数
A51 MACRO ASSEMBLER  TASKISR                                                              11/05/2004 10:43:36 PAGE     5

                     257     
----                 258             RSEG  ?PR?_OSTask_TimeDal?TASKISR
0000                 259     _OSTask_TimeDal:
                     260             USING   0
                     261                             ; SOURCE LINE # 17
                     262     ;---- Variable 'TimeDal?040' assigned to Register 'R7' ----
                     263     ; {   
                     264                             ; SOURCE LINE # 18
                     265     ;       ISR_num++; 
                     266                             ; SOURCE LINE # 19
0000 0500     F      267             INC     ISR_num
                     268     ;       #pragma ASM 
                     269     ;       PUSH    ACC
0002 C0E0            270               PUSH    ACC
                     271     ;       PUSH    B 
0004 C0F0            272               PUSH    B 
                     273     ;       PUSH    DPH 
0006 C083            274               PUSH    DPH 
                     275     ;       PUSH    DPL 
0008 C082            276               PUSH    DPL 
                     277     ;       PUSH    PSW 
000A C0D0            278               PUSH    PSW 
                     279     ;       MOV     PSW,  0
000C 8500D0          280               MOV     PSW,  0
                     281     ;       PUSH    AR0
000F C000            282               PUSH  AR0
                     283     ;       PUSH    AR1
0011 C001            284               PUSH  AR1
                     285     ;       PUSH    AR2
0013 C002            286               PUSH  AR2
                     287     ;       PUSH    AR3
0015 C003            288               PUSH  AR3
                     289     ;       PUSH    AR4
0017 C004            290               PUSH  AR4
                     291     ;       PUSH    AR5
0019 C005            292               PUSH  AR5
                     293     ;       PUSH    AR6
001B C006            294               PUSH  AR6
                     295     ;       PUSH    AR7
001D C007            296               PUSH  AR7
                     297     ;       #pragma  ENDASM 
                     298     ;       OSPCB[Prio].timedal=TimeDal;    
                     299                             ; SOURCE LINE # 36
001F E500     F      300             MOV     A,Prio
0021 75F008          301             MOV     B,#08H
0024 A4              302             MUL     AB
0025 2400     F      303             ADD     A,#LOW (OSPCB+07H)
0027 F582            304             MOV     DPL,A
0029 E4              305             CLR     A
002A 3400     F      306             ADDC    A,#HIGH (OSPCB+07H)
002C F583            307             MOV     DPH,A
002E EF              308             MOV     A,R7
002F F0              309             MOVX    @DPTR,A
                     310     ;       if(Prio!=FREE_TASK)
                     311                             ; SOURCE LINE # 37
0030 E500     F      312             MOV     A,Prio
0032 6405            313             XRL     A,#05H
0034 6048            314             JZ      ?C0001
                     315     ;       {
                     316                             ; SOURCE LINE # 38
                     317     ;                 if(TimeDal>0)
                     318                             ; SOURCE LINE # 39
0036 EF              319             MOV     A,R7
0037 D3              320             SETB    C
0038 9400            321             SUBB    A,#00H
003A E500     F      322             MOV     A,Prio
A51 MACRO ASSEMBLER  TASKISR                                                              11/05/2004 10:43:36 PAGE     6

003C 75F008          323             MOV     B,#08H
003F 400F            324             JC      ?C0002
                     325     ;                 {
                     326                             ; SOURCE LINE # 40
                     327     ;                           OSPCB[Prio].flg=WAIT_TIME;   //任务因时间延迟挂起
                     328                             ; SOURCE LINE # 41
0041 A4              329             MUL     AB
0042 2400     F      330             ADD     A,#LOW (OSPCB+03H)
0044 F582            331             MOV     DPL,A
0046 E4              332             CLR     A
0047 3400     F      333             ADDC    A,#HIGH (OSPCB+03H)
0049 F583            334             MOV     DPH,A
004B 7401            335             MOV     A,#01H
004D F0              336             MOVX    @DPTR,A
                     337     ;                 }
                     338                             ; SOURCE LINE # 42
004E 800C            339             SJMP    ?C0003
0050                 340     ?C0002:
                     341     ;                 else   
                     342     ;                 {
                     343                             ; SOURCE LINE # 44
                     344     ;                           OSPCB[Prio].flg=WAIT_MSG;    //非空闲任务应因等待消息挂起
                     345                             ; SOURCE LINE # 45
0050 A4              346             MUL     AB
0051 2400     F      347             ADD     A,#LOW (OSPCB+03H)
0053 F582            348             MOV     DPL,A
0055 E4              349             CLR     A
0056 3400     F      350             ADDC    A,#HIGH (OSPCB+03H)
0058 F583            351             MOV     DPH,A
005A E4              352             CLR     A
005B F0              353             MOVX    @DPTR,A
                     354     ;                 }
                     355                             ; SOURCE LINE # 46
005C                 356     ?C0003:
                     357     ;           if((OSRdyTab[Prio>>3]&=~OSMapTab[Prio&0x07])==0)    //从就绪表中删除该任务
                     358                             ; SOURCE LINE # 47
005C E500     F      359             MOV     A,Prio
005E 13              360             RRC     A
005F 13              361             RRC     A
0060 13              362             RRC     A
0061 541F            363             ANL     A,#01FH
0063 FF              364             MOV     R7,A
0064 2400     F      365             ADD     A,#LOW (OSRdyTab)
0066 F8              366             MOV     R0,A
0067 E6              367             MOV     A,@R0
0068 FE              368             MOV     R6,A
0069 E500     F      369             MOV     A,Prio
006B 5407            370             ANL     A,#07H
006D 900000   F      371             MOV     DPTR,#OSMapTab
0070 93              372             MOVC    A,@A+DPTR
0071 F4              373             CPL     A
0072 5E              374             ANL     A,R6
0073 F6              375             MOV     @R0,A
0074 7005            376             JNZ     ?C0004
                     377     ;           {
                     378                             ; SOURCE LINE # 48
                     379     ;                       OSRdyGrp&=~OSMapTab[Prio>>3]; 
                     380                             ; SOURCE LINE # 49
0076 EF              381             MOV     A,R7
0077 93              382             MOVC    A,@A+DPTR
0078 F4              383             CPL     A
0079 5200     F      384             ANL     OSRdyGrp,A
                     385     ;                 }
                     386                             ; SOURCE LINE # 50
007B                 387     ?C0004:
                     388     ;                 OSISR_Task_Sched();                                                      
A51 MACRO ASSEMBLER  TASKISR                                                              11/05/2004 10:43:36 PAGE     7

                                  
                     389                             ; SOURCE LINE # 51
007B 120000   F      390             LCALL   OSISR_Task_Sched
                     391     ;     } 
                     392                             ; SOURCE LINE # 52
007E                 393     ?C0001:
                     394     ;     #pragma ASM
                     395     ;       POP     AR7
007E D007            396               POP   AR7
                     397     ;       POP     AR6
0080 D006            398               POP   AR6
                     399     ;       POP     AR5
0082 D005            400               POP   AR5
                     401     ;       POP     AR4
0084 D004            402               POP   AR4
                     403     ;       POP     AR3
0086 D003            404               POP   AR3
                     405     ;       POP     AR2
0088 D002            406               POP   AR2
                     407     ;       POP     AR1
008A D001            408               POP   AR1
                     409     ;       POP     AR0
008C D000            410               POP   AR0
                     411     ;       POP     PSW
008E D0D0            412               POP   PSW
                     413     ;       POP     DPL
0090 D082            414               POP   DPL
                     415     ;       POP     DPH
0092 D083            416               POP   DPH
                     417     ;       POP     B
0094 D0F0            418               POP   B
                     419     ;       POP     ACC
0096 D0E0            420               POP   ACC
                     421     ;       DEC     ISR_num
0098 1500     F      422               DEC   ISR_num
                     423     ;       RETI
009A 32              424               RETI
                     425     ;       #pragma  ENDASM  
                     426     ; }                     ; SOURCE LINE # 70
009B 22              427             RET     
                     428     ; END OF _OSTask_TimeDal
                     429     
                     430             END
A51 MACRO ASSEMBLER  TASKISR                                                              11/05/2004 10:43:36 PAGE     8

SYMBOL TABLE LISTING
------ ----- -------


N A M E                      T Y P E  V A L U E   ATTRIBUTES

?C0001. . . . . . . . . . .  C ADDR   007EH   R   SEG=?PR?_OSTASK_TIMEDAL?TASKISR
?C0002. . . . . . . . . . .  C ADDR   0050H   R   SEG=?PR?_OSTASK_TIMEDAL?TASKISR
?C0003. . . . . . . . . . .  C ADDR   005CH   R   SEG=?PR?_OSTASK_TIMEDAL?TASKISR
?C0004. . . . . . . . . . .  C ADDR   007BH   R   SEG=?PR?_OSTASK_TIMEDAL?TASKISR
?PR?_OSTASK_TIMEDAL?TASKISR  C SEG    009CH       REL=UNIT
AA. . . . . . . . . . . . .  B ADDR   00C0H.2 A   
AC. . . . . . . . . . . . .  B ADDR   00D0H.6 A   
ACC . . . . . . . . . . . .  D ADDR   00E0H   A   
AD0BUSY . . . . . . . . . .  B ADDR   00E8H.4 A   
AD0CM0. . . . . . . . . . .  B ADDR   00E8H.2 A   
AD0CM1. . . . . . . . . . .  B ADDR   00E8H.3 A   
AD0EN . . . . . . . . . . .  B ADDR   00E8H.7 A   
AD0INT. . . . . . . . . . .  B ADDR   00E8H.5 A   
AD0LJST . . . . . . . . . .  B ADDR   00E8H.0 A   
AD0TM . . . . . . . . . . .  B ADDR   00E8H.6 A   
AD0WINT . . . . . . . . . .  B ADDR   00E8H.1 A   
ADC0CF. . . . . . . . . . .  D ADDR   00BCH   A   
ADC0CN. . . . . . . . . . .  D ADDR   00E8H   A   

⌨️ 快捷键说明

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