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

📄 os_cpu_a.lis

📁 将本站的UCOSFORAVR128V276版本升级到了280版
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0034 F991                      LD      R31,Y+
 0036 E991                      LD      R30,Y+
 0038 B991                      LD      R27,Y+
 003A A991                      LD      R26,Y+
 003C 9991                      LD      R25,Y+
 003E 8991                      LD      R24,Y+
 0040 7991                      LD      R23,Y+
 0042 6991                      LD      R22,Y+
 0044 5991                      LD      R21,Y+
 0046 4991                      LD      R20,Y+
 0048 3991                      LD      R19,Y+
 004A 2991                      LD      R18,Y+
 004C 1991                      LD      R17,Y+
 004E 0991                      LD      R16,Y+
 0050 F990                      LD      R15,Y+
 0052 E990                      LD      R14,Y+
 0054 D990                      LD      R13,Y+
 0056 C990                      LD      R12,Y+
 0058 B990                      LD      R11,Y+
 005A A990                      LD      R10,Y+
 005C 9990                      LD      R9,Y+
 005E 8990                      LD      R8,Y+
 0060 7990                      LD      R7,Y+
 0062 6990                      LD      R6,Y+
 0064 5990                      LD      R5,Y+
 0066 4990                      LD      R4,Y+
 0068 3990                      LD      R3,Y+
 006A 2990                      LD      R2,Y+
 006C 1990                      LD      R1,Y+
 006E 0990                      LD      R0,Y+
 0070 0895                      RET                                 ; Start task
 0072           
 0072           ;/*$PAGE*/.
 0072           ;********************************************************************************************************
 0072           ;                                       TASK LEVEL CONTEXT SWITCH
 0072           ;
 0072           ; Description : This function is called when a task makes a higher priority task ready-to-run.
 0072           ;
 0072           ; Note(s)     : 1) Upon entry,
 0072           ;                  OSTCBCur     points to the OS_TCB of the task to suspend
 0072           ;                  OSTCBHighRdy points to the OS_TCB of the task to resume
 0072           ;
 0072           ;               2) The stack frame of the task to suspend looks as follows:
 0072           ;
 0072           ;                                       SP+0 --> LSB of task code address
 0072           ;                                         +1     MSB of task code address                (High memory)
 0072           ;
 0072           ;               3) The saved context of the task to resume looks as follows:
 0072           ;
 0072           ;                  OSTCBHighRdy->OSTCBStkPtr --> SPL of (return) stack pointer           (Low memory)
 0072           ;                                                SPH of (return) stack pointer
 0072           ;                                                Flags to load in status register
 0072           ;                                                R31
 0072           ;                                                R30
 0072           ;                                                R27
 0072           ;                                                .
 0072           ;                                                .
 0072           ;                                                R0
 0072           ;                                                PCH
 0072           ;                                                PCL                                     (High memory)
 0072           ;********************************************************************************************************
 0072           
 0072           _OSCtxSw::
 0072 0A92                      ST      -Y,R0
 0074 1A92                      ST      -Y,R1
 0076 2A92                      ST      -Y,R2
 0078 3A92                      ST      -Y,R3
 007A 4A92                      ST      -Y,R4
 007C 5A92                      ST      -Y,R5
 007E 6A92                      ST      -Y,R6
 0080 7A92                      ST      -Y,R7
 0082 8A92                      ST      -Y,R8
 0084 9A92                      ST      -Y,R9
 0086 AA92                      ST      -Y,R10
 0088 BA92                      ST      -Y,R11
 008A CA92                      ST      -Y,R12
 008C DA92                      ST      -Y,R13
 008E EA92                      ST      -Y,R14
 0090 FA92                      ST      -Y,R15
 0092 0A93                      ST      -Y,R16
 0094 1A93                      ST      -Y,R17
 0096 2A93                      ST      -Y,R18
 0098 3A93                      ST      -Y,R19
 009A 4A93                      ST      -Y,R20
 009C 5A93                      ST      -Y,R21
 009E 6A93                      ST      -Y,R22
 00A0 7A93                      ST      -Y,R23
 00A2 8A93                      ST      -Y,R24
 00A4 9A93                      ST      -Y,R25
 00A6 AA93                      ST      -Y,R26
 00A8 BA93                      ST      -Y,R27
 00AA EA93                      ST      -Y,R30
 00AC FA93                      ST      -Y,R31
 00AE 0BB7                      IN      R16,RAMPZ
 00B0 0A93                      ST      -Y,R16
 00B2 0FB7                      IN      R16,SREG
 00B4 0A93                      ST      -Y,R16
 00B6 0EB7                      IN      R16,SPH
 00B8 0A93                      ST      -Y,R16
 00BA 0DB7                      IN      R16,SPL
 00BC 0A93                      ST      -Y,R16
 00BE           
 00BE E0910000                  LDS     R30,_OSTCBCur               ; Z = OSTCBCur->OSTCBStkPtr
 00C2 F0910100                  LDS     R31,_OSTCBCur+1             ;
 00C6 C193                      ST      Z+,R28                      ; Save Y (R29:R28) pointer
 00C8 D193                      ST      Z+,R29                      ;
 00CA           
 00CA 0E940000                  CALL    _OSTaskSwHook               ; Call user defined task switch hook
 00CE           
 00CE 00910000                  LDS     R16,_OSPrioHighRdy          ; OSPrioCur = OSPrioHighRdy
 00D2 00930000                  STS     _OSPrioCur,R16
 00D6           
 00D6 E0910000                  LDS     R30,_OSTCBHighRdy           ; Let Z point to TCB of highest priority task
 00DA F0910100                  LDS     R31,_OSTCBHighRdy+1         ; ready to run
 00DE E0930000                  STS     _OSTCBCur,R30               ; OSTCBCur = OSTCBHighRdy
 00E2 F0930100                  STS     _OSTCBCur+1,R31             ;
 00E6           
 00E6 C191                      LD      R28,Z+                      ; Restore Y pointer
 00E8 D191                      LD      R29,Z+                      ;
 00EA           
 00EA 0991                      LD      R16,Y+
 00EC 0DBF                      OUT     SPL,R16
 00EE 0991                      LD      R16,Y+
 00F0 0EBF                      OUT     SPH,R16
 00F2 0991                      LD      R16,Y+
 00F4 0FBF                      OUT     SREG,R16
 00F6 0991                      LD      R16,Y+
 00F8 0BBF                      OUT     RAMPZ,R16
 00FA F991                      LD      R31,Y+
 00FC E991                      LD      R30,Y+
 00FE B991                      LD      R27,Y+
 0100 A991                      LD      R26,Y+
 0102 9991                      LD      R25,Y+
 0104 8991                      LD      R24,Y+
 0106 7991                      LD      R23,Y+
 0108 6991                      LD      R22,Y+
 010A 5991                      LD      R21,Y+
 010C 4991                      LD      R20,Y+
 010E 3991                      LD      R19,Y+
 0110 2991                      LD      R18,Y+
 0112 1991                      LD      R17,Y+
 0114 0991                      LD      R16,Y+
 0116 F990                      LD      R15,Y+
 0118 E990                      LD      R14,Y+
 011A D990                      LD      R13,Y+
 011C C990                      LD      R12,Y+
 011E B990                      LD      R11,Y+
 0120 A990                      LD      R10,Y+
 0122 9990                      LD      R9,Y+
 0124 8990                      LD      R8,Y+
 0126 7990                      LD      R7,Y+
 0128 6990                      LD      R6,Y+
 012A 5990                      LD      R5,Y+
 012C 4990                      LD      R4,Y+
 012E 3990                      LD      R3,Y+
 0130 2990                      LD      R2,Y+
 0132 1990                      LD      R1,Y+
 0134 0990                      LD      R0,Y+
 0136           
 0136 0895                      RET
 0138           
 0138           ;/*$PAGE*/.
 0138           ;*********************************************************************************************************
 0138           ;                                INTERRUPT LEVEL CONTEXT SWITCH
 0138           ;
 0138           ; Description : This function is called by OSIntExit() to perform a context switch to a task that has
 0138           ;               been made ready-to-run by an ISR.
 0138           ;
 0138           ; Note(s)     : 1) Upon entry,
 0138           ;                  OSTCBCur     points to the OS_TCB of the task to suspend
 0138           ;                  OSTCBHighRdy points to the OS_TCB of the task to resume
 0138           ;
 0138           ;               2) The stack frame of the task to suspend looks as follows:
 0138           ;
 0138           ;                  OSTCBCur->OSTCBStkPtr ------> SPL of (return) stack pointer           (Low memory)
 0138           ;                                                SPH of (return) stack pointer
 0138           ;                                                Flags to load in status register
 0138           ;                                                R31
 0138           ;                                                R30
 0138           ;                                                R27
 0138           ;                                                .
 0138           ;                                                .
 0138           ;                                                R0
 0138           ;                                                PCH
 0138           ;                                                PCL                                     (High memory)
 0138           ;
 0138           ;               3) The saved context of the task to resume looks as follows:
 0138           ;
 0138           ;                  OSTCBHighRdy->OSTCBStkPtr --> SPL of (return) stack pointer           (Low memory)
 0138           ;                                                SPH of (return) stack pointer
 0138           ;                                                Flags to load in status register

⌨️ 快捷键说明

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