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

📄 os_cpu_c.lis

📁 ucos-ii-at90S-icc-avr
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module os_cpu_c.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\编程2002-10-15-HOME\做过的项目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\ucos-ii-source\os_cpu_c.c
 0000                   .dbfunc e OSTaskStkInit _OSTaskStkInit fpc
 0000           ;           stks -> R10,R11
 0000           ;            tmp -> R22,R23
 0000           ;            stk -> R20,R21
 0000           ;            opt -> y+10
 0000           ;           ptos -> y+8
 0000           ;          pdata -> R12,R13
 0000           ;           task -> R22,R23
                        .even
 0000           _OSTaskStkInit::
 0000 00D0              rcall push_gset4
 0002 C22E              mov R12,R18
 0004 D32E              mov R13,R19
 0006 602F              mov R22,R16
 0008 712F              mov R23,R17
 000A                   .dbline -1
 000A                   .dbline 60
 000A           ; /*
 000A           ; ********************************************************************************
 000A           ; *                               uC/OS-II
 000A           ; *                          The Real-Time Kernel
 000A           ; * 
 000A           ; *                         AT90 Specific code
 000A           ; *
 000A           ; * File:                       OS_CPU_C.C
 000A           ; * By:                 
 000A           ; * Modified by:
 000A           ; * Revision:   
 000A           ; *
 000A           ; *
 000A           ; *
 000A           ; ********************************************************************************
 000A           ; */
 000A           ; 
 000A           ; #define  OS_CPU_GLOBALS
 000A           ; #include "includes.h"
 000A           ; 
 000A           ; /*
 000A           ; ********************************************************************************
 000A           ; *                     INITIALIZE A TASK'S STACK
 000A           ; *
 000A           ; * Description:
 000A           ; *     This function is called by either OSTaskCreate() or OSTaskCreateExt() to
 000A           ; *     initialize the stack frame of the task being created. This function is
 000A           ; *     highly processor specific.
 000A           ; *
 000A           ; * Arguments:
 000A           ; *     task -  is a pointer to the task code
 000A           ; *
 000A           ; *     pdata - is a pointer to a user supplied data area that will be passed to the
 000A           ; *                      task when the task first executes.
 000A           ; *
 000A           ; *     ptos -  is a pointer to the top of stack. It is assumed that 'ptos' points to
 000A           ; *                     the highest valid address on the stack.
 000A           ; *
 000A           ; *     opt -   specifies options that can be used to alter the behavior of 
 000A           ;                       OSTaskStkInit(). (see uCOS_II.H for OS_TASK_OPT_???).
 000A           ; *
 000A           ; * Returns:
 000A           ; *     Always returns the location of the new top-of-stack' once the processor 
 000A           ; *     registers have been placed on the stack in the proper order.
 000A           ; *
 000A           ; * Note(s):
 000A           ; *     Interrupts are enabled when your task starts executing. You can change this 
 000A           ; *     by setting the SREG to 0x00 instead. In this case, interrupts would be 
 000A           ; *     disabled upon task startup. The application code would be responsible for 
 000A           ; *     enabling interrupts at the beginning of the task code. You will need to 
 000A           ; *     modify OSTaskIdle() and OSTaskStat() so that they enable interrupts. Failure
 000A           ; *     to do this will make your system crash! The AVR return stack is placed 64 
 000A           ; *     bytes above the start of the (512 byte) stack. This provides 32 levels of 
 000A           ; *     function call nesting which should be more than enough for most applications
 000A           ; *     (see the "read.me" file for more info).
 000A           ; *
 000A           ; ********************************************************************************
 000A           ; */
 000A           ; OS_STK *OSTaskStkInit (void (*task)(void *pd),
 000A           ;                                                void *pdata, OS_STK *ptos, INT16U opt){
 000A                   .dbline 67
 000A           ; 
 000A           ;     INT8U  *stk;
 000A           ;     INT8U  *stks;             // Temp. variable used for setting up AVR hardware stack
 000A           ;     INT16U tmp;
 000A           ; 
 000A           ; 
 000A           ;     opt     = opt;                    // 'opt' is not used, prevent warning
 000A                   .dbline 68
 000A           ;     stk     = (INT8U *)ptos;          // Wandlung von ptos in Bytezeiger
 000A 4885              ldd R20,y+8
 000C 5985              ldd R21,y+9
 000E                   .dbline 74
 000E           ;       // AVR return stack ("hardware stack")
 000E           ;     //from IAR C
 000E           ;     //stks    = (INT8U *)(ptos)-(OS_TASK_DEF_STK_SIZE-64);/* AVR return stack ("hardware stack")          */
 000E           ;     //from ICC AVR C
 000E           ;     //stks    = (INT8U *)(ptos)-(OS_TASK_DEF_STK_SIZE-32);
 000E           ;     stks    = (INT8U *)(ptos)-(OS_TASK_DEF_STK_SIZE-64);
 000E 8885              ldd R24,y+8
 0010 9985              ldd R25,y+9
 0012 C097              sbiw R24,48
 0014 A82E              mov R10,R24
 0016 B92E              mov R11,R25
 0018                   .dbline 79
 0018           ; 
 0018           ;       // the function address has an extra level of indirection. Fetch the
 0018           ;     // actual address.
 0018           ;     //    
 0018           ;     tmp = *(INT16U const *)task;
 0018 062F              mov R16,R22
 001A 172F              mov R17,R23
 001C 00D0              rcall lpm16
 001E 602F              mov R22,R16
 0020 712F              mov R23,R17
 0022                   .dbline 82
 0022           ;    
 0022           ;       // 36 Bytes
 0022           ;     *stks-- = (INT8U)tmp;     //Put task start address on top of hardware stack
 0022 2A2C              mov R2,R10
 0024 3B2C              mov R3,R11
 0026 822D              mov R24,R2
 0028 932D              mov R25,R3
 002A 0197              sbiw R24,1
 002C E22D              mov R30,R2
 002E F32D              mov R31,R3
 0030 6083              std z+0,R22
 0032                   .dbline 83
 0032           ;     *stks-- = (INT8U)(tmp >> 8);
 0032 282E              mov R2,R24
 0034 392E              mov R3,R25
 0036 0197              sbiw R24,1
 0038 A82E              mov R10,R24
 003A B92E              mov R11,R25
 003C 462E              mov R4,R22
 003E 572E              mov R5,R23
 0040 452C              mov R4,R5
 0042 5524              clr R5
 0044 E22D              mov R30,R2
 0046 F32D              mov R31,R3
 0048 4082              std z+0,R4
 004A                   .dbline 85
 004A           ; 
 004A           ;     *stk-- = (INT8U)0x00;             // R0  = 0x00
 004A 242E              mov R2,R20
 004C 352E              mov R3,R21
 004E 4150              subi R20,1
 0050 5040              sbci R21,0
 0052 4424              clr R4
 0054 E22D              mov R30,R2
 0056 F32D              mov R31,R3
 0058 4082              std z+0,R4
 005A                   .dbline 86
 005A           ;     *stk-- = (INT8U)0x01; 
 005A 242E              mov R2,R20
 005C 352E              mov R3,R21
 005E 4150              subi R20,1
 0060 5040              sbci R21,0
 0062 81E0              ldi R24,1
 0064 E22D              mov R30,R2
 0066 F32D              mov R31,R3
 0068 8083              std z+0,R24
 006A                   .dbline 87
 006A           ;     *stk-- = (INT8U)0x02;
 006A 242E              mov R2,R20
 006C 352E              mov R3,R21
 006E 4150              subi R20,1
 0070 5040              sbci R21,0
 0072 82E0              ldi R24,2
 0074 E22D              mov R30,R2
 0076 F32D              mov R31,R3
 0078 8083              std z+0,R24
 007A                   .dbline 88
 007A           ;     *stk-- = (INT8U)0x03;
 007A 242E              mov R2,R20
 007C 352E              mov R3,R21
 007E 4150              subi R20,1
 0080 5040              sbci R21,0
 0082 83E0              ldi R24,3
 0084 E22D              mov R30,R2
 0086 F32D              mov R31,R3
 0088 8083              std z+0,R24
 008A                   .dbline 89
 008A           ;     *stk-- = (INT8U)0x04;
 008A 242E              mov R2,R20
 008C 352E              mov R3,R21
 008E 4150              subi R20,1
 0090 5040              sbci R21,0
 0092 84E0              ldi R24,4
 0094 E22D              mov R30,R2
 0096 F32D              mov R31,R3
 0098 8083              std z+0,R24
 009A                   .dbline 90
 009A           ;     *stk-- = (INT8U)0x05;
 009A 242E              mov R2,R20
 009C 352E              mov R3,R21
 009E 4150              subi R20,1
 00A0 5040              sbci R21,0
 00A2 85E0              ldi R24,5
 00A4 E22D              mov R30,R2
 00A6 F32D              mov R31,R3
 00A8 8083              std z+0,R24
 00AA                   .dbline 91
 00AA           ;     *stk-- = (INT8U)0x06;
 00AA 242E              mov R2,R20
 00AC 352E              mov R3,R21
 00AE 4150              subi R20,1
 00B0 5040              sbci R21,0
 00B2 86E0              ldi R24,6
 00B4 E22D              mov R30,R2
 00B6 F32D              mov R31,R3
 00B8 8083              std z+0,R24
 00BA                   .dbline 92
 00BA           ;     *stk-- = (INT8U)0x07;
 00BA 242E              mov R2,R20
 00BC 352E              mov R3,R21
 00BE 4150              subi R20,1
 00C0 5040              sbci R21,0
 00C2 87E0              ldi R24,7
 00C4 E22D              mov R30,R2
 00C6 F32D              mov R31,R3
 00C8 8083              std z+0,R24
 00CA                   .dbline 93
 00CA           ;     *stk-- = (INT8U)0x08;
 00CA 242E              mov R2,R20
 00CC 352E              mov R3,R21
 00CE 4150              subi R20,1
 00D0 5040              sbci R21,0
 00D2 88E0              ldi R24,8
 00D4 E22D              mov R30,R2
 00D6 F32D              mov R31,R3
 00D8 8083              std z+0,R24
 00DA                   .dbline 94
 00DA           ;     *stk-- = (INT8U)0x09;
 00DA 242E              mov R2,R20
 00DC 352E              mov R3,R21
 00DE 4150              subi R20,1
 00E0 5040              sbci R21,0
 00E2 89E0              ldi R24,9
 00E4 E22D              mov R30,R2
 00E6 F32D              mov R31,R3
 00E8 8083              std z+0,R24
 00EA                   .dbline 95
 00EA           ;     *stk-- = (INT8U)0x10;
 00EA 242E              mov R2,R20
 00EC 352E              mov R3,R21
 00EE 4150              subi R20,1
 00F0 5040              sbci R21,0
 00F2 80E1              ldi R24,16
 00F4 E22D              mov R30,R2
 00F6 F32D              mov R31,R3
 00F8 8083              std z+0,R24
 00FA                   .dbline 96
 00FA           ;     *stk-- = (INT8U)0x11;
 00FA 242E              mov R2,R20
 00FC 352E              mov R3,R21
 00FE 4150              subi R20,1
 0100 5040              sbci R21,0
 0102 81E1              ldi R24,17
 0104 E22D              mov R30,R2
 0106 F32D              mov R31,R3
 0108 8083              std z+0,R24
 010A                   .dbline 97
 010A           ;     *stk-- = (INT8U)0x12;
 010A 242E              mov R2,R20
 010C 352E              mov R3,R21
 010E 4150              subi R20,1
 0110 5040              sbci R21,0
 0112 82E1              ldi R24,18
 0114 E22D              mov R30,R2
 0116 F32D              mov R31,R3
 0118 8083              std z+0,R24
 011A                   .dbline 98
 011A           ;     *stk-- = (INT8U)0x13;
 011A 242E              mov R2,R20
 011C 352E              mov R3,R21
 011E 4150              subi R20,1
 0120 5040              sbci R21,0
 0122 83E1              ldi R24,19
 0124 E22D              mov R30,R2
 0126 F32D              mov R31,R3
 0128 8083              std z+0,R24
 012A                   .dbline 99
 012A           ;     *stk-- = (INT8U)0x14;
 012A 242E              mov R2,R20
 012C 352E              mov R3,R21
 012E 4150              subi R20,1
 0130 5040              sbci R21,0
 0132 84E1              ldi R24,20
 0134 E22D              mov R30,R2
 0136 F32D              mov R31,R3
 0138 8083              std z+0,R24
 013A                   .dbline 100
 013A           ;     *stk-- = (INT8U)0x15;
 013A 242E              mov R2,R20
 013C 352E              mov R3,R21
 013E 4150              subi R20,1
 0140 5040              sbci R21,0
 0142 85E1              ldi R24,21
 0144 E22D              mov R30,R2
 0146 F32D              mov R31,R3
 0148 8083              std z+0,R24
 014A                   .dbline 101
 014A           ;     tmp    = (INT16U)pdata;
 014A 6C2D              mov R22,R12
 014C 7D2D              mov R23,R13
 014E                   .dbline 102
 014E           ;     *stk-- = (INT8U)tmp;      //Simulate call to function with argument
 014E 242E              mov R2,R20
 0150 352E              mov R3,R21
 0152 4150              subi R20,1
 0154 5040              sbci R21,0
 0156 E22D              mov R30,R2
 0158 F32D              mov R31,R3
 015A 6083              std z+0,R22
 015C                   .dbline 103
 015C           ;     *stk-- = (INT8U)(tmp >> 8);
 015C 242E              mov R2,R20
 015E 352E              mov R3,R21
 0160 4150              subi R20,1
 0162 5040              sbci R21,0
 0164 462E              mov R4,R22
 0166 572E              mov R5,R23
 0168 452C              mov R4,R5
 016A 5524              clr R5
 016C E22D              mov R30,R2
 016E F32D              mov R31,R3
 0170 4082              std z+0,R4
 0172                   .dbline 104
 0172           ;     *stk-- = (INT8U)0x18;
 0172 242E              mov R2,R20
 0174 352E              mov R3,R21
 0176 4150              subi R20,1
 0178 5040              sbci R21,0
 017A 88E1              ldi R24,24
 017C E22D              mov R30,R2
 017E F32D              mov R31,R3
 0180 8083              std z+0,R24
 0182                   .dbline 105
 0182           ;     *stk-- = (INT8U)0x19;
 0182 242E              mov R2,R20
 0184 352E              mov R3,R21

⌨️ 快捷键说明

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