mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-02-06 03:41:41 +08:00
update Config/mcucfg_8051.h.
Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
@@ -104,30 +104,32 @@
|
||||
// <e> 自定义任务切换现场保护
|
||||
// <i> CosyOS在任务切换时,默认自动保存的寄存器:{PCnext,A,B,DPH,DPL,PSW,R0-R7(REGBANK0)}。
|
||||
// <i> 如您需要额外增加对其它寄存器的现场保护,可在下方自行添加代码。
|
||||
// <i> 下方各定义项已经直接给出示例代码(保存:REGBANK1,P_SW2),直接在文本编辑界面中修改即可。
|
||||
// <i> 下方各定义项已经直接给出示例代码(保存:DPS、DPH1、DPL1、P_SW2),直接在文本编辑界面中修改即可。
|
||||
#define __MCUCFG_USERREG_SAVING 0
|
||||
|
||||
#if __MCUCFG_USERREG_SAVING == 1
|
||||
// <o> 定义用于现场保护的数组
|
||||
// <i> 定义一个"unsigned char"类型的数组,结尾必须加语句结束符";"。
|
||||
#define mUserReg_ unsigned char user_reg[9];
|
||||
#define mUserReg_ unsigned char user_reg[4];
|
||||
|
||||
// <o> 定义保存现场代码
|
||||
// <i> 用c语言代码,将相应寄存器的内容拷贝至自定义的数组中。
|
||||
#define mUserReg_PUSH \
|
||||
do{ \
|
||||
*(unsigned long *)(s_task_current->user_reg + 0) = *(unsigned long data *)0x08; \
|
||||
*(unsigned long *)(s_task_current->user_reg + 4) = *(unsigned long data *)0x0C; \
|
||||
s_task_current->user_reg[8] = P_SW2; \
|
||||
s_task_current->user_reg[0] = DPS; \
|
||||
s_task_current->user_reg[1] = DPH1; \
|
||||
s_task_current->user_reg[2] = DPL1; \
|
||||
s_task_current->user_reg[3] = P_SW2; \
|
||||
}while(false)
|
||||
|
||||
// <o> 定义恢复现场代码
|
||||
// <i> 用c语言代码,将自定义数组中的数据恢复至相应的寄存器。
|
||||
#define mUserReg_POP \
|
||||
do{ \
|
||||
*(unsigned long data *)0x08 = *(unsigned long *)(s_task_current->user_reg + 0); \
|
||||
*(unsigned long data *)0x0C = *(unsigned long *)(s_task_current->user_reg + 4); \
|
||||
P_SW2 = s_task_current->user_reg[8]; \
|
||||
DPS = s_task_current->user_reg[0]; \
|
||||
DPH1 = s_task_current->user_reg[1]; \
|
||||
DPL1 = s_task_current->user_reg[2]; \
|
||||
P_SW2 = s_task_current->user_reg[3]; \
|
||||
}while(false)
|
||||
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user