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

📄 os_cpu_util_a.s

📁 基于PIC24 UCOS-II 2.83源程序下载
💻 S
字号:
;
;********************************************************************************************************
;                                               uC/OS-II
;                                         The Real-Time Kernel
;
;                         (c) Copyright 2002, Jean J. Labrosse, Weston, FL
;                                          All Rights Reserved
;
;
;                                          PIC24 MPLab Port
;                                                 
;
; File         : os_cpu_util_a.s
; By           : Eric Shufro
; Port Version : V2.81 and higher)
;********************************************************************************************************
;

;
;********************************************************************************************************
;                                            MACRO OS_REGS_SAVE
;
; Description : This macro saves the current state of the CPU onto the current tasks stack
;
; Notes       : W15 is the CPU stack pointer. It should never be pushed from the stack during
;               a context save.
;********************************************************************************************************
;

.macro OS_REGS_SAVE                                                        ; Start of Macro
    push.d w0                                                           ; Push W0 and W1 on to the stack
    push.d w2                                                           ; Push W2 and W3 on to the stack
    push.d w4                                                           ; Push W4 and W5 on to the stack
    push.d w6                                                           ; Push W6 and W7 on to the stack
    push.d w8                                                           ; Push W8 and W9 on to the stack
    push.d w10                                                          ; Push W10 and W11 on to the stack
    push.d w12                                                          ; Push W12 and W13 on to the stack
    push w14                                                            ; Push W14 **ONLY** on to the stack

    push TBLPAG                                                         ; Push the Table Page Register on to the stack
    push PSVPAG                                                         ; Push the Program Space Visability Register on the stack
    push RCOUNT                                                         ; Push the Repeat Loop Counter Register on to the stack 
    
    push SR                                                             ; Push the CPU Status Register on to the stack
    push CORCON                                                         ; Push the Core Control Register on to the stack      
.endm                                                                   ; End of Macro

;
;********************************************************************************************************
;                                            MACRO OS_REGS_RESTORE
;
; Description : This macro restores the current state of the CPU from the current tasks stack
;
; Notes       : 1) W15 is the CPU stack pointer. It should never be popped from the stack during
;                  a context restore.
;               2) Registers are always popped in the reverse order from which they were pushed
;********************************************************************************************************
;

.macro OS_REGS_RESTORE                                                     ; Start of Macro
    pop CORCON                                                          ; Pull the Core Control Register from the stack      
    pop SR                                                              ; Pull the CPU Status Register from the stack
 
    pop RCOUNT                                                          ; Pull the Repeat Loop Counter Register from the stack 
    pop PSVPAG                                                          ; Pull the Program Space Visability Register on the stack
    pop TBLPAG                                                          ; Pull the Table Page Register from the stack

    pop w14                                                             ; Pull W14 **ONLY** from the stack
    pop.d w12                                                           ; Pull W12 and W13 from the stack
    pop.d w10                                                           ; Pull W10 and W11 from the stack
    pop.d w8                                                            ; Pull W8 and W9 from the stack
    pop.d w6                                                            ; Pull W6 and W7 from the stack
    pop.d w4                                                            ; Pull W4 and W5 from the stack
    pop.d w2                                                            ; Pull W2 and W3 from the stack
    pop.d w0                                                            ; Pull W0 and W1 from the stack
.endm                                                                   ; End of Macro

⌨️ 快捷键说明

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