📄 tasksw16.s
字号:
**************************************************************************
* uCOS
* Microcomputer Real-Time Multitasking Operating System
*
* (c) Copyright 1992, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
*
*
* MC68HC16 Specific code
*
* File : tasksw16.s
* By : Gary Schneider
***************************************************************************
export OSStartHighRdy
export OSCtxSw
export OSIntCtxSw
import OSIntEnter
import OSIntExit
import OSTimeTick
import OSTCBCur
import OSTCBHighRdy
section .text
******************************************************************
* START MULTITASKING
* void OSStartHighRdy(void)
*
******************************************************************
OSStartHighRdy:
LDAB #OSTCBHighRdy>>16
TBXK
LDX OSTCBHighRdy
MOVW OSTCBHighRdy,OSTCBCur * Point to TCB of highest priority task ready to run
* OSTCBCur = OSTCBHighRdy
LDS $0,X * SP = OSTCBHighRdy->OSTCBStkPtr
PULM D,E,X,Y,Z,K * Load task's context
RTI * Run task
********************************************************************
* PERFORM A CONTEXT SWITCH (From task level)
* void OSCtxSw(void)
*
********************************************************************
OSCtxSw:
PSHM D,E,X,Y,Z,K * Save current task's context
LDAB #OSTCBHighRdy>>16
TBXK
LDX OSTCBHighRdy
LDAB #OSTCBCur>>16
TBYK
LDY OSTCBCur
STS $0,Y * OSTCBCur->OSTCBStkPtr = SP
MOVW OSTCBHighRdy,OSTCBCur * OSTCBCur = OSTCBHighRdy
LDS $0,X * SP = OSTCBHighRdy->OSTCBStkPtr
PULM D,E,X,Y,Z,K * Load task's context
RTI * Return to new task
************************************************************************
* PERFORM A CONTEXT SWITCH (From an ISR)
* void OSIntCtxSw(void)
************************************************************************
OSIntCtxSw:
AIS #$0C * Ignore calls to OSIntExit and OSIntCtxSw (8 bytes)
* Call to OSIntExit does pshm z,k (4 bytes)
LDAB #OSTCBHighRdy>>16
TBXK
LDX OSTCBHighRdy
LDAB #OSTCBCur>>16
TBYK
LDY OSTCBCur
STS $0,Y * OSTCBCur->OSTCBStkPtr = SP
MOVW OSTCBHighRdy,OSTCBCur * OSTCBCur = OSTCBHighRdy
LDS $0,X * SP = OSTCBHighRdy->OSTCBStkPtr
PULM D,E,X,Y,Z,K * Load task's context
RTI * Return to new task
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -