diff --git a/System/os_handler.c b/System/os_handler.c index 988a481..178cb5d 100644 --- a/System/os_handler.c +++ b/System/os_handler.c @@ -4,7 +4,7 @@ * @brief SysTick2_Handler and PendSV2_Handler * @author 迟凯峰 * @version V2.2.1 - * @date 2024.04.20 + * @date 2024.04.21 ******************************************************************************/ #include "os_link.h" @@ -744,14 +744,14 @@ void PendSV2_Handler(void) MCUCFG_PENDSV_ATTRIBUTE #if SYSCFG_DEBUGGING == __ENABLED__ if(s_sign_taskmgr) mUsedTime_END; #endif + mTaskStack_PUSH; #if SYSCFG_MCUCORE == 8051 #pragma asm - EXTRN DATA (m_bsp_add) EXTRN DATA (m_reg_add) ?STACK SEGMENT IDATA - + CLR C MOV DPL, s_task_current+1 MOV DPH, s_task_current MOV A, SP @@ -760,7 +760,6 @@ void PendSV2_Handler(void) MCUCFG_PENDSV_ATTRIBUTE SUBB A, #6 MOV R1, A - CLR C MOV A, s_task_current+1 ADD A, m_bsp_add MOV DPL, A @@ -811,11 +810,12 @@ LABLE_A1: MOV A, @R0 MOV A, s_task_current+1 ADD A, m_reg_add MOV DPL, A - CLR A - ADDC A, s_task_current - MOV DPH, A + MOV DPH, s_task_current + JNC LABLE_A2 + INC DPH + CLR C - MOV A, 0x00 +LABLE_A2: MOV A, 0x00 MOVX @DPTR, A INC DPTR MOV A, 0x01 @@ -841,8 +841,6 @@ LABLE_A1: MOV A, @R0 #endif #pragma endasm #endif - - mTaskStack_PUSH; } /* 新任务出栈 */ @@ -854,14 +852,13 @@ LABLE_A1: MOV A, @R0 #if SYSCFG_MCUCORE == 8051 #pragma asm - + CLR C MOV DPL, s_task_current+1 MOV DPH, s_task_current MOVX A, @DPTR SUBB A, #6 MOV R1, A - CLR C MOV A, s_task_current+1 ADD A, m_bsp_add MOV DPL, A @@ -905,11 +902,12 @@ LABLE_B1: MOVX A, @DPTR MOV A, s_task_current+1 ADD A, m_reg_add MOV DPL, A - CLR A - ADDC A, s_task_current - MOV DPH, A + MOV DPH, s_task_current + JNC LABLE_B2 + INC DPH + CLR C - MOVX A, @DPTR +LABLE_B2: MOVX A, @DPTR MOV 0x00, A INC DPTR MOVX A, @DPTR