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

📄 os_cpu_c.lis

📁 mega16 ucos操作系统
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0014           ; *              p_arg         is a pointer to a user supplied data area that will be passed to the task
 0014           ; *                            when the task first executes.
 0014           ; *
 0014           ; *              ptos          is a pointer to the top of stack. It is assumed that 'ptos' points to the
 0014           ; *                            highest valid address on the stack.
 0014           ; *
 0014           ; *              opt           specifies options that can be used to alter the behavior of OSTaskStkInit().
 0014           ; *                            (see uCOS_II.H for OS_TASK_OPT_???).
 0014           ; *
 0014           ; * Returns:
 0014           ; *     Always returns the location of the new top-of-stack' once the processor 
 0014           ; *     registers have been placed on the stack in the proper order.
 0014           ; *
 0014           ; * Note(s):
 0014           ; *     Interrupts are enabled when your task starts executing. You can change this 
 0014           ; *     by setting the SREG to 0x00 instead. In this case, interrupts would be 
 0014           ; *     disabled upon task startup. The application code would be responsible for 
 0014           ; *     enabling interrupts at the beginning of the task code. You will need to 
 0014           ; *     modify OSTaskIdle() and OSTaskStat() so that they enable interrupts. Failure
 0014           ; *     to do this will make your system crash! The AVR return stack is placed 64 
 0014           ; *     bytes above the start of the (512 byte) stack. This provides 32 levels of 
 0014           ; *     function call nesting which should be more than enough for most applications
 0014           ; *     (see the "read.me" file for more info).
 0014           ; *
 0014           ; ********************************************************************************
 0014           ; */
 0014           ; 
 0014           ; 
 0014           ; OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt){
 0014                   .dbline 190
 0014           ; 
 0014           ;       INT8U  *psoft_stk;
 0014           ;     INT8U  *phard_stk;                      /* Temp. variable used for setting up AVR hardware stack    */
 0014           ;     INT16U  tmp;
 0014           ; 
 0014           ; 
 0014           ;     (void)opt;                              /* 'opt' is not used, prevent warning                       */
 0014                   .dbline 191
 0014           ;     psoft_stk    = (INT8U *)ptos;
 0014 A501              movw R20,R10
 0016                   .dbline 192
 0016           ;     phard_stk    = (INT8U *)ptos
 0016 20900200          lds R2,_OSTaskStkSize
 001A 30900300          lds R3,_OSTaskStkSize+1
 001E 2501              movw R4,R10
 0020 4218              sub R4,R2
 0022 5308              sbc R5,R3
 0024 A0900000          lds R10,_OSTaskStkSizeHard
 0028 B0900100          lds R11,_OSTaskStkSizeHard+1
 002C A40C              add R10,R4
 002E B51C              adc R11,R5
 0030                   .dbline 196
 0030           ;                  - OSTaskStkSize            /* Task stack size                                          */
 0030           ;                  + OSTaskStkSizeHard;       /* AVR return stack ("hardware stack")                      */
 0030           ; 
 0030           ;     tmp          = *(INT16U const *)task;   /* (1) ICC compiler handles function pointers indirectly!   */
 0030 F801              movw R30,R16
 0032 6081              ldd R22,z+0
 0034 7181              ldd R23,z+1
 0036                   .dbline 198
 0036           ; 
 0036           ;     *phard_stk-- = (INT8U)(tmp & 0xFF);     /* Put task start address on top of "hardware stack"        */
 0036 1501              movw R2,R10
 0038 C101              movw R24,R2
 003A 0197              sbiw R24,1
 003C 5C01              movw R10,R24
 003E CB01              movw R24,R22
 0040 9070              andi R25,0
 0042 F101              movw R30,R2
 0044 8083              std z+0,R24
 0046                   .dbline 199
 0046           ;     tmp        >>= 8;
 0046 672F              mov R22,R23
 0048 7727              clr R23
 004A                   .dbline 200
 004A           ;     *phard_stk-- = (INT8U)(tmp & 0xFF);
 004A 1501              movw R2,R10
 004C C101              movw R24,R2
 004E 0197              sbiw R24,1
 0050 5C01              movw R10,R24
 0052 CB01              movw R24,R22
 0054 9070              andi R25,0
 0056 F101              movw R30,R2
 0058 8083              std z+0,R24
 005A                   .dbline 202
 005A           ; 
 005A           ;     *psoft_stk-- = (INT8U)0x00;             /* R0    = 0x00                                             */
 005A 6A01              movw R12,R20
 005C 4150              subi R20,1
 005E 5040              sbci R21,0
 0060 2224              clr R2
 0062 F601              movw R30,R12
 0064 2082              std z+0,R2
 0066                   .dbline 203
 0066           ;     *psoft_stk-- = (INT8U)0x01;             /* R1    = 0x01                                             */
 0066 6A01              movw R12,R20
 0068 4150              subi R20,1
 006A 5040              sbci R21,0
 006C 81E0              ldi R24,1
 006E F601              movw R30,R12
 0070 8083              std z+0,R24
 0072                   .dbline 204
 0072           ;     *psoft_stk-- = (INT8U)0x02;             /* R2    = 0x02                                             */
 0072 6A01              movw R12,R20
 0074 4150              subi R20,1
 0076 5040              sbci R21,0
 0078 82E0              ldi R24,2
 007A F601              movw R30,R12
 007C 8083              std z+0,R24
 007E                   .dbline 205
 007E           ;     *psoft_stk-- = (INT8U)0x03;             /* R3    = 0x03                                             */
 007E 6A01              movw R12,R20
 0080 4150              subi R20,1
 0082 5040              sbci R21,0
 0084 83E0              ldi R24,3
 0086 F601              movw R30,R12
 0088 8083              std z+0,R24
 008A                   .dbline 206
 008A           ;     *psoft_stk-- = (INT8U)0x04;             /* R4    = 0x04                                             */
 008A 6A01              movw R12,R20
 008C 4150              subi R20,1
 008E 5040              sbci R21,0
 0090 84E0              ldi R24,4
 0092 F601              movw R30,R12
 0094 8083              std z+0,R24
 0096                   .dbline 207
 0096           ;     *psoft_stk-- = (INT8U)0x05;             /* R5    = 0x05                                             */
 0096 6A01              movw R12,R20
 0098 4150              subi R20,1
 009A 5040              sbci R21,0
 009C 85E0              ldi R24,5
 009E F601              movw R30,R12
 00A0 8083              std z+0,R24
 00A2                   .dbline 208
 00A2           ;     *psoft_stk-- = (INT8U)0x06;             /* R6    = 0x06                                             */
 00A2 6A01              movw R12,R20
 00A4 4150              subi R20,1
 00A6 5040              sbci R21,0
 00A8 86E0              ldi R24,6
 00AA F601              movw R30,R12
 00AC 8083              std z+0,R24
 00AE                   .dbline 209
 00AE           ;     *psoft_stk-- = (INT8U)0x07;             /* R7    = 0x07                                             */
 00AE 6A01              movw R12,R20
 00B0 4150              subi R20,1
 00B2 5040              sbci R21,0
 00B4 87E0              ldi R24,7
 00B6 F601              movw R30,R12
 00B8 8083              std z+0,R24
 00BA                   .dbline 210
 00BA           ;     *psoft_stk-- = (INT8U)0x08;             /* R8    = 0x08                                             */
 00BA 6A01              movw R12,R20
 00BC 4150              subi R20,1
 00BE 5040              sbci R21,0
 00C0 88E0              ldi R24,8
 00C2 F601              movw R30,R12
 00C4 8083              std z+0,R24
 00C6                   .dbline 211
 00C6           ;     *psoft_stk-- = (INT8U)0x09;             /* R9    = 0x09                                             */
 00C6 6A01              movw R12,R20
 00C8 4150              subi R20,1
 00CA 5040              sbci R21,0
 00CC 89E0              ldi R24,9
 00CE F601              movw R30,R12
 00D0 8083              std z+0,R24
 00D2                   .dbline 212
 00D2           ;     *psoft_stk-- = (INT8U)0x10;             /* R10   = 0x10                                             */
 00D2 6A01              movw R12,R20
 00D4 4150              subi R20,1
 00D6 5040              sbci R21,0
 00D8 80E1              ldi R24,16
 00DA F601              movw R30,R12
 00DC 8083              std z+0,R24
 00DE                   .dbline 213
 00DE           ;     *psoft_stk-- = (INT8U)0x11;             /* R11   = 0x11                                             */
 00DE 6A01              movw R12,R20
 00E0 4150              subi R20,1
 00E2 5040              sbci R21,0
 00E4 81E1              ldi R24,17
 00E6 F601              movw R30,R12
 00E8 8083              std z+0,R24
 00EA                   .dbline 214
 00EA           ;     *psoft_stk-- = (INT8U)0x12;             /* R12   = 0x12                                             */
 00EA 6A01              movw R12,R20
 00EC 4150              subi R20,1
 00EE 5040              sbci R21,0
 00F0 82E1              ldi R24,18
 00F2 F601              movw R30,R12
 00F4 8083              std z+0,R24
 00F6                   .dbline 215
 00F6           ;     *psoft_stk-- = (INT8U)0x13;             /* R13   = 0x13                                             */
 00F6 6A01              movw R12,R20
 00F8 4150              subi R20,1
 00FA 5040              sbci R21,0
 00FC 83E1              ldi R24,19
 00FE F601              movw R30,R12
 0100 8083              std z+0,R24
 0102                   .dbline 216
 0102           ;     *psoft_stk-- = (INT8U)0x14;             /* R14   = 0x14                                             */
 0102 6A01              movw R12,R20
 0104 4150              subi R20,1
 0106 5040              sbci R21,0
 0108 84E1              ldi R24,20
 010A F601              movw R30,R12
 010C 8083              std z+0,R24
 010E                   .dbline 217
 010E           ;     *psoft_stk-- = (INT8U)0x15;             /* R15   = 0x15                                             */
 010E 6A01              movw R12,R20
 0110 4150              subi R20,1
 0112 5040              sbci R21,0
 0114 85E1              ldi R24,21
 0116 F601              movw R30,R12
 0118 8083              std z+0,R24
 011A                   .dbline 218
 011A           ;     tmp          = (INT16U)p_arg;
 011A B901              movw R22,R18
 011C                   .dbline 219
 011C           ;     *psoft_stk-- = (INT8U)(tmp & 0xFF);     /* 'p_arg' passed in R17:R16                                */
 011C 6A01              movw R12,R20
 011E 4150              subi R20,1
 0120 5040              sbci R21,0
 0122 CB01              movw R24,R22
 0124 9070              andi R25,0
 0126 F601              movw R30,R12
 0128 8083              std z+0,R24
 012A                   .dbline 220
 012A           ;     tmp        >>= 8;
 012A 672F              mov R22,R23
 012C 7727              clr R23
 012E                   .dbline 221
 012E           ;     *psoft_stk-- = (INT8U)(tmp & 0xFF);
 012E 6A01              movw R12,R20
 0130 4150              subi R20,1
 0132 5040              sbci R21,0
 0134 CB01              movw R24,R22
 0136 9070              andi R25,0
 0138 F601              movw R30,R12
 013A 8083              std z+0,R24
 013C                   .dbline 222
 013C           ;     *psoft_stk-- = (INT8U)0x18;             /* R18   = 0x18                                             */
 013C 6A01              movw R12,R20
 013E 4150              subi R20,1
 0140 5040              sbci R21,0
 0142 88E1              ldi R24,24
 0144 F601              movw R30,R12
 0146 8083              std z+0,R24
 0148                   .dbline 223
 0148           ;     *psoft_stk-- = (INT8U)0x19;             /* R19   = 0x19                                             */
 0148 6A01              movw R12,R20
 014A 4150              subi R20,1
 014C 5040              sbci R21,0
 014E 89E1              ldi R24,25
 0150 F601              movw R30,R12
 0152 8083              std z+0,R24
 0154                   .dbline 224
 0154           ;     *psoft_stk-- = (INT8U)0x20;             /* R20   = 0x20                                             */
 0154 6A01              movw R12,R20
 0156 4150              subi R20,1
 0158 5040              sbci R21,0
 015A 80E2              ldi R24,32

⌨️ 快捷键说明

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