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

📄 os_etos.lst

📁 义隆单片机上实现的任务调度
💻 LST
📖 第 1 页 / 共 5 页
字号:
    80            C                       CLEAR_ALL_RAM
    81            C                       ioc             0  
    82            C                       mov             a,@0x01                      
    83            C                       contw
    84            C                       mov             a,@0x00              
    85            C                       iow             0x05
    86            C                       mov             a,@0x01               ; p60 for detect input
    87            C                       iow             0x06
    88            C                       mov             a,@0x00
    89            C                       iow             0x07
    90            C                       mov             a,@0x31               ; wdtc
    91            C                       iow             ioce
    92            C                       mov             a,@0x01               ; TCC enable               
    93            C                       iow             iocf
    94            C                       clra
    95            C                       mov             p5,a
    96            C                       mov             p6,a
    97            C                       mov             p7,a
    98            C                       
    99            C                      ;-----------------------------------------------------------------             
   100            C        reg_init:
   101            C                       mov             a,@0xa0
   102            C                       mov             disp_fun2,a
   103            C                       bs              Mode,RUN
   104            C        
   105            C        ret
   106            C        
   107            C        ENDIF
    64                                    include         "OS_TASK.dt"
     1            C        /*
     2            C        *********************************************************************************************************
     3            C        *                                      任务调度操作 
     4            C        *
     5            C        * 功能       :           根据任务队列(TaskQueue)对相应的任务,根据优先级切换到相应的任务。 
     6            C        *                        
     7            C        * 入口参数   :  none     每个大循环执行一次任务调度 
     8            C        *                                   
     9            C        * 出口参数   :  none
    10            C        *********************************************************************************************************
    11            C        */
    12 0004E      C        OSTaskSchedule:
    13 0004E 18F8 C                       mov             a,@0xf8                                 ; 清除任务的ID号 
    14 0004F 02DE C                       and             OSFlag,a
    15 00050      C        Sch0:
    16 00050 0E1F C                       jbs             TaskQueue,0                             
    17 00051 1458 C                       jmp             Sch1
    18 00052 1800 C                       mov             a,@0                                    ; OSFlag中记录当前执行的任务ID
    19 00053 025E C                       or              OSFlag,a
    20 00054 00E1 C                       clr             ShieldQueue
    21 00055 0A21 C                       bs              ShieldQueue,0                           ; 蒙板操作 
    22 00056 14CF C                       jmp             Task0                                   ; 调用第一个任务 
    23 00057      C        Sch0_end:               
    24 00057 1492 C                       jmp             OSTaskSch_end
    25 00058      C        Sch1:
    26 00058 0E5F C                       jbs             TaskQueue,1
    27 00059 1460 C                       jmp             Sch2
    28 0005A 1801 C                       mov             a,@1
    29 0005B 025E C                       or              OSFlag,a
    30 0005C 00E1 C                       clr             ShieldQueue
    31 0005D 0A61 C                       bs              ShieldQueue,1
    32 0005E 14DB C                       jmp             Task1  
    33 0005F      C        Sch1_end:                         
    34 0005F 1492 C                       jmp             OSTaskSch_end
    35 00060      C        Sch2:
    36 00060 0E9F C                       jbs             TaskQueue,2
    37 00061 1468 C                       jmp             Sch3
    38 00062 1802 C                       mov             a,@2
    39 00063 025E C                       or              OSFlag,a
    40 00064 00E1 C                       clr             ShieldQueue
    41 00065 0AA1 C                       bs              ShieldQueue,2
    42 00066 14E7 C                       jmp            Task2            
    43 00067      C        Sch2_end:               
    44 00067 1492 C                       jmp             OSTaskSch_end
    45 00068      C        Sch3:
    46 00068 0EDF C                       jbs             TaskQueue,3
    47 00069 1470 C                       jmp             Sch4
    48 0006A 1803 C                       mov             a,@3
    49 0006B 025E C                       or              OSFlag,a
    50 0006C 00E1 C                       clr             ShieldQueue
    51 0006D 0AE1 C                       bs              ShieldQueue,3
    52 0006E 14F3 C                       jmp             Task3
    53 0006F      C        Sch3_end:                                                      
    54 0006F 1492 C                       jmp             OSTaskSch_end
    55 00070      C        Sch4:
    56 00070 0F1F C                       jbs             TaskQueue,4
    57 00071 1478 C                       jmp             Sch5
    58 00072 1804 C                       mov             a,@4
    59 00073 025E C                       or              OSFlag,a
    60 00074 00E1 C                       clr             ShieldQueue
    61 00075 0B21 C                       bs              ShieldQueue,4
    62 00076 14F5 C                       jmp             Task4            
    63 00077      C        Sch4_end:
    64 00077 1492 C                       jmp             OSTaskSch_end
    65 00078      C        Sch5:
    66 00078 0F5F C                       jbs             TaskQueue,5
    67 00079 1480 C                       jmp             Sch6
    68 0007A 1805 C                       mov             a,@5
    69 0007B 025E C                       or              OSFlag,a
    70 0007C 00E1 C                       clr             ShieldQueue
    71 0007D 0B61 C                       bs              ShieldQueue,5
    72 0007E 14F7 C                       jmp             Task5            
    73 0007F      C        Sch5_end:
    74 0007F 1492 C                       jmp             OSTaskSch_end
    75 00080      C        Sch6:
    76 00080 0F9F C                       jbs             TaskQueue,6
    77 00081 1488 C                       jmp             Sch7
    78 00082 1806 C                       mov             a,@6
    79 00083 025E C                       or              OSFlag,a
    80 00084 00E1 C                       clr             ShieldQueue
    81 00085 0BA1 C                       bs              ShieldQueue,6
    82 00086 14F9 C                       jmp             Task6            
    83 00087      C        Sch6_end:
    84 00087 1492 C                       jmp             OSTaskSch_end
    85 00088      C        Sch7:
    86 00088 0FDF C                       jbs             TaskQueue,7
    87 00089 1490 C                       jmp             Sch_Idle
    88 0008A 1807 C                       mov             a,@7
    89 0008B 025E C                       or              OSFlag,a
    90 0008C 00E1 C                       clr             ShieldQueue
    91 0008D 0BE1 C                       bs              ShieldQueue,7
    92 0008E 14FB C                       jmp             Task7      
    93 0008F      C        Sch7_end:               
    94 0008F 1492 C                       jmp             OSTaskSch_end
    95 00090      C        Sch_Idle:                                                             ; 如果任务队列为空则进入空闲任务 
    96 00090 14FD C                       jmp             OSTaskIdle         
    97 00091      C        Sch_Idle_end: 
    98 00091 0000 C                       nop
    99 00092      C        OSTaskSch_end:
   100 00092 1509 C                       jmp             schedule_end               
   101            C        
   102            C        
   103            C        /*
   104            C        *********************************************************************************************************
   105            C        *                                      生成任务操作 
   106            C        *
   107            C        * 功能       :           将任务队列(TaskQueue)相应的位置1实现生成任务,将任务加入调度。 
   108            C        *                        
   109            C        * 入口参数   :  a        
   110            C        *                                   
   111            C        * 出口参数   :  none
   112            C        *********************************************************************************************************
   113            C        */
   114 00093      C        OSTaskCreat:
   115 00093 18FF C                       mov             a,@0xff
   116 00094 005F C                       mov             TaskQueue,a
   117 00095 0012 C        ret
   118            C        
   119            C        
   120            C        /*
   121            C        *********************************************************************************************************
   122            C        *                                      自我删除任务 
   123            C        *
   124            C        * 功能       :           将任务队列(TaskQueue)中任务相应的位置0,将等待队列(WaitQueue)中相应的位置0
   125            C        *                        
   126            C        * 入口参数   :  none     
   127            C        *                                   
   128            C        * 出口参数   :  none
   129            C        *********************************************************************************************************
   130            C        */
   131 00096      C        OSTaskDel:
   132 00096 04A1 C                       coma            ShieldQueue                             ; 蒙板中记录的是当前任务的位置 
   133 00097 02DF C                       and             TaskQueue,a                             ; 将本任务从任务队列中削去 
   134 00098 02E0 C                       and             WaitQueue,a                             ; 将本任务从等待队列中削去 
   135 00099 0012 C        ret
   136            C        
   137            C        /*
   138            C        *********************************************************************************************************
   139            C        *                                      任务切换操作 
   140            C        *
   141            C        * 功能       :           用于手动的,不参与OSTimeDly调度的任务切换。 
   142            C        *                        
   143            C        * 入口参数   :  a        
   144            C        *                                   
   145            C        * 出口参数   :  none
   146            C        *********************************************************************************************************
   147            C        */
   148 0009A      C        OSTaskChange:
   149            C                       /*
   150            C                       mov             OSTemp0,a
   151            C                       mov             a,TaskQueue
   152            C                       or              a,Operand0                    ; Enable
   153            C                       and             a,OSTemp0                     ; Disable
   154            C                       mov             TaskQueue,a               
   155            C                       */
   156 0009A 0012 C        ret
    65                                    include         "OS_TIME.dt"               
     1            C        /*
     2            C        *********************************************************************************************************
     3            C        *                                时间延时操作   (n 从 0 到 255)
     4            C        *
     5            C        * 功能       :           系统定时程序,如果延时为0,则不进行操作 
     6            C        *
     7            C        * 入口参数   : a         a存放需要定时的OSTick个数,每个OSTick为 4ms
     8            C        *                                        4ms*a = delay time
     9            C        *                        例如:
    10            C        *                                        mov         a,@5
    11            C        *                              

⌨️ 快捷键说明

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