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

📄 os_task.lis

📁 本程序中用到DS1302以及液晶等模块
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module os_task.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\21_uCOSII\os_task.c
 0000                   .dbfunc e OSTaskStkInit _OSTaskStkInit fpc
 0000           ;           stks -> R10,R11
 0000           ;            tmp -> R22,R23
 0000           ;            stk -> R20,R21
 0000           ;            opt -> y+8
 0000           ;           ptos -> y+6
 0000           ;          pdata -> R18,R19
 0000           ;           task -> R16,R17
                        .even
 0000           _OSTaskStkInit::
 0000 0E940000          xcall push_gset3
 0004                   .dbline -1
 0004                   .dbline 48
 0004           ; 
 0004           ; #ifndef  OS_MASTER_FILE
 0004           ; #include "includes.h"
 0004           ; #endif
 0004           ; 
 0004           ; /*$PAGE*/
 0004           ; /*
 0004           ; *********************************************************************************************************
 0004           ; *                                            CREATE A TASK
 0004           ; *
 0004           ; * Description: This function is used to have uC/OS-II manage the execution of a task.  Tasks can either
 0004           ; *              be created prior to the start of multitasking or by a running task.  A task cannot be
 0004           ; *              created by an ISR.
 0004           ; *
 0004           ; * Arguments  : task     is a pointer to the task's code
 0004           ; *
 0004           ; *              pdata    is a pointer to an optional data area which can be used to pass parameters to
 0004           ; *                       the task when the task first executes.  Where the task is concerned it thinks
 0004           ; *                       it was invoked and passed the argument 'pdata' as follows:
 0004           ; *
 0004           ; *                           void Task (void *pdata)
 0004           ; *                           {
 0004           ; *                               for (;;) {
 0004           ; *                                   Task code;
 0004           ; *                               }
 0004           ; *                           }
 0004           ; *
 0004           ; *              ptos     is a pointer to the task's top of stack.  If the configuration constant 
 0004           ; *                       OS_STK_GROWTH is set to 1, the stack is assumed to grow downward (i.e. from high
 0004           ; *                       memory to low memory).  'pstk' will thus point to the highest (valid) memory 
 0004           ; *                       location of the stack.  If OS_STK_GROWTH is set to 0, 'pstk' will point to the 
 0004           ; *                       lowest memory location of the stack and the stack will grow with increasing
 0004           ; *                       memory locations.
 0004           ; *
 0004           ; *              prio     is the task's priority.  A unique priority MUST be assigned to each task and the
 0004           ; *                       lower the number, the higher the priority.
 0004           ; *
 0004           ; * Returns    : OS_NO_ERR        if the function was successful.
 0004           ; *              OS_PRIO_EXIT     if the task priority already exist 
 0004           ; *                               (each task MUST have a unique priority).
 0004           ; *              OS_PRIO_INVALID  if the priority you specify is higher that the maximum allowed 
 0004           ; *                               (i.e. >= OS_LOWEST_PRIO)
 0004           ; *********************************************************************************************************
 0004           ; */
 0004           ; 
 0004           ; #if OS_TASK_CREATE_EN
 0004           ; OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt)
 0004           ; {
 0004                   .dbline 55
 0004           ; 
 0004           ;     OS_STK  *stk;
 0004           ;     INT8U  *stks;             // Temp. variable used for setting up AVR hardware stack
 0004           ;     INT16U tmp;
 0004           ; 
 0004           ; 
 0004           ;     opt     = opt;                    // 'opt' is not used, prevent warning
 0004                   .dbline 56
 0004           ;     stk     = (OS_STK *)ptos;         // Wandlung von ptos in Bytezeiger
 0004 4E81              ldd R20,y+6
 0006 5F81              ldd R21,y+7
 0008                   .dbline 58
 0008           ;       // AVR return stack ("hardware stack")
 0008           ;     stks    = (OS_STK *)(ptos)-(OS_TASK_DEF_STK_SIZE-32);
 0008 8E81              ldd R24,y+6
 000A 9F81              ldd R25,y+7
 000C 8454              subi R24,68
 000E 9040              sbci R25,0
 0010                   .dbline 63
 0010           ; 
 0010           ;       // the function address has an extra level of indirection. Fetch the
 0010           ;     // actual address.
 0010           ;     //    
 0010           ;     tmp = *(INT16U const *)task;
 0010 F801              movw R30,R16
 0012 6591              lpm R22,Z+
 0014 7491              lpm R23,Z
 0016                   .dbline 66
 0016           ;    
 0016           ;       // 36 Bytes
 0016           ;     *stks-- = (INT8U)tmp;     //Put task start address on top of hardware stack
 0016 1C01              movw R2,R24
 0018 0197              sbiw R24,1
 001A F101              movw R30,R2
 001C 6083              std z+0,R22
 001E                   .dbline 67
 001E           ;     *stks-- = (INT8U)(tmp >> 8);
 001E 1C01              movw R2,R24
 0020 0197              sbiw R24,1
 0022 5C01              movw R10,R24
 0024 2B01              movw R4,R22
 0026 452C              mov R4,R5
 0028 5524              clr R5
 002A F101              movw R30,R2
 002C 4082              std z+0,R4
 002E                   .dbline 69
 002E           ; 
 002E           ;     *stk-- = (INT8U)0x00;             // R0  = 0x00
 002E 1A01              movw R2,R20
 0030 4150              subi R20,1
 0032 5040              sbci R21,0
 0034 4424              clr R4
 0036 F101              movw R30,R2
 0038 4082              std z+0,R4
 003A                   .dbline 70
 003A           ;     *stk-- = (INT8U)0x01; 
 003A 1A01              movw R2,R20
 003C 4150              subi R20,1
 003E 5040              sbci R21,0
 0040 81E0              ldi R24,1
 0042 F101              movw R30,R2
 0044 8083              std z+0,R24
 0046                   .dbline 71
 0046           ;     *stk-- = (INT8U)0x02;
 0046 1A01              movw R2,R20
 0048 4150              subi R20,1
 004A 5040              sbci R21,0
 004C 82E0              ldi R24,2
 004E F101              movw R30,R2
 0050 8083              std z+0,R24
 0052                   .dbline 72
 0052           ;     *stk-- = (INT8U)0x03;
 0052 1A01              movw R2,R20
 0054 4150              subi R20,1
 0056 5040              sbci R21,0
 0058 83E0              ldi R24,3
 005A F101              movw R30,R2
 005C 8083              std z+0,R24
 005E                   .dbline 73
 005E           ;     *stk-- = (INT8U)0x04;
 005E 1A01              movw R2,R20
 0060 4150              subi R20,1
 0062 5040              sbci R21,0
 0064 84E0              ldi R24,4
 0066 F101              movw R30,R2
 0068 8083              std z+0,R24
 006A                   .dbline 74
 006A           ;     *stk-- = (INT8U)0x05;
 006A 1A01              movw R2,R20
 006C 4150              subi R20,1
 006E 5040              sbci R21,0
 0070 85E0              ldi R24,5
 0072 F101              movw R30,R2
 0074 8083              std z+0,R24
 0076                   .dbline 75
 0076           ;     *stk-- = (INT8U)0x06;
 0076 1A01              movw R2,R20
 0078 4150              subi R20,1
 007A 5040              sbci R21,0
 007C 86E0              ldi R24,6
 007E F101              movw R30,R2
 0080 8083              std z+0,R24
 0082                   .dbline 76
 0082           ;     *stk-- = (INT8U)0x07;
 0082 1A01              movw R2,R20
 0084 4150              subi R20,1
 0086 5040              sbci R21,0
 0088 87E0              ldi R24,7
 008A F101              movw R30,R2
 008C 8083              std z+0,R24
 008E                   .dbline 77
 008E           ;     *stk-- = (INT8U)0x08;
 008E 1A01              movw R2,R20
 0090 4150              subi R20,1
 0092 5040              sbci R21,0
 0094 88E0              ldi R24,8
 0096 F101              movw R30,R2
 0098 8083              std z+0,R24
 009A                   .dbline 78
 009A           ;     *stk-- = (INT8U)0x09;
 009A 1A01              movw R2,R20
 009C 4150              subi R20,1
 009E 5040              sbci R21,0
 00A0 89E0              ldi R24,9
 00A2 F101              movw R30,R2
 00A4 8083              std z+0,R24
 00A6                   .dbline 79
 00A6           ;     *stk-- = (INT8U)0x10;
 00A6 1A01              movw R2,R20
 00A8 4150              subi R20,1
 00AA 5040              sbci R21,0
 00AC 80E1              ldi R24,16
 00AE F101              movw R30,R2
 00B0 8083              std z+0,R24
 00B2                   .dbline 80
 00B2           ;     *stk-- = (INT8U)0x11;
 00B2 1A01              movw R2,R20
 00B4 4150              subi R20,1
 00B6 5040              sbci R21,0
 00B8 81E1              ldi R24,17
 00BA F101              movw R30,R2
 00BC 8083              std z+0,R24
 00BE                   .dbline 81
 00BE           ;     *stk-- = (INT8U)0x12;
 00BE 1A01              movw R2,R20
 00C0 4150              subi R20,1
 00C2 5040              sbci R21,0
 00C4 82E1              ldi R24,18
 00C6 F101              movw R30,R2
 00C8 8083              std z+0,R24
 00CA                   .dbline 82
 00CA           ;     *stk-- = (INT8U)0x13;
 00CA 1A01              movw R2,R20
 00CC 4150              subi R20,1
 00CE 5040              sbci R21,0
 00D0 83E1              ldi R24,19
 00D2 F101              movw R30,R2
 00D4 8083              std z+0,R24
 00D6                   .dbline 83
 00D6           ;     *stk-- = (INT8U)0x14;
 00D6 1A01              movw R2,R20
 00D8 4150              subi R20,1
 00DA 5040              sbci R21,0
 00DC 84E1              ldi R24,20
 00DE F101              movw R30,R2
 00E0 8083              std z+0,R24
 00E2                   .dbline 84
 00E2           ;     *stk-- = (INT8U)0x15;
 00E2 1A01              movw R2,R20
 00E4 4150              subi R20,1
 00E6 5040              sbci R21,0
 00E8 85E1              ldi R24,21
 00EA F101              movw R30,R2
 00EC 8083              std z+0,R24
 00EE                   .dbline 85
 00EE           ;     tmp    = (INT16U)pdata;
 00EE B901              movw R22,R18
 00F0                   .dbline 86
 00F0           ;     *stk-- = (INT8U)tmp;      //Simulate call to function with argument
 00F0 1A01              movw R2,R20
 00F2 4150              subi R20,1
 00F4 5040              sbci R21,0
 00F6 F101              movw R30,R2
 00F8 6083              std z+0,R22
 00FA                   .dbline 87
 00FA           ;     *stk-- = (INT8U)(tmp >> 8);
 00FA 1A01              movw R2,R20
 00FC 4150              subi R20,1
 00FE 5040              sbci R21,0
 0100 2B01              movw R4,R22
 0102 452C              mov R4,R5
 0104 5524              clr R5
 0106 F101              movw R30,R2
 0108 4082              std z+0,R4
 010A                   .dbline 88
 010A           ;     *stk-- = (INT8U)0x18;
 010A 1A01              movw R2,R20
 010C 4150              subi R20,1
 010E 5040              sbci R21,0
 0110 88E1              ldi R24,24
 0112 F101              movw R30,R2
 0114 8083              std z+0,R24
 0116                   .dbline 89
 0116           ;     *stk-- = (INT8U)0x19;
 0116 1A01              movw R2,R20
 0118 4150              subi R20,1
 011A 5040              sbci R21,0
 011C 89E1              ldi R24,25
 011E F101              movw R30,R2
 0120 8083              std z+0,R24
 0122                   .dbline 90
 0122           ;     *stk-- = (INT8U)0x20;
 0122 1A01              movw R2,R20
 0124 4150              subi R20,1
 0126 5040              sbci R21,0
 0128 80E2              ldi R24,32
 012A F101              movw R30,R2
 012C 8083              std z+0,R24
 012E                   .dbline 91
 012E           ;     *stk-- = (INT8U)0x21;
 012E 1A01              movw R2,R20
 0130 4150              subi R20,1
 0132 5040              sbci R21,0
 0134 81E2              ldi R24,33
 0136 F101              movw R30,R2
 0138 8083              std z+0,R24
 013A                   .dbline 92
 013A           ;     *stk-- = (INT8U)0x22;
 013A 1A01              movw R2,R20
 013C 4150              subi R20,1
 013E 5040              sbci R21,0
 0140 82E2              ldi R24,34
 0142 F101              movw R30,R2
 0144 8083              std z+0,R24
 0146                   .dbline 93
 0146           ;     *stk-- = (INT8U)0x23;
 0146 1A01              movw R2,R20
 0148 4150              subi R20,1
 014A 5040              sbci R21,0
 014C 83E2              ldi R24,35
 014E F101              movw R30,R2
 0150 8083              std z+0,R24
 0152                   .dbline 94
 0152           ;     *stk-- = (INT8U)0x24;
 0152 1A01              movw R2,R20
 0154 4150              subi R20,1

⌨️ 快捷键说明

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