📄 prt_p16.h
字号:
#ifndef _JA_PRT_H
#define _JA_PRT_H
#define __task
#define OS_MSG_FAR const
#define OS_MSG_NEAR near
#if (OS_MEM_MODEL & SMALL)
#define OST_ADDRESS void near *
#endif
#if (OS_MEM_MODEL & COMPACT)
#define OS_USE_STACK
#define OS_COOP_PARAMT OST_ADDRESS adr
asm("fncall _OS_Kernel,_OS_Cooperate_");
#else
#ifdef OS_Lib_Type
asm("global _OS_Cooperate_");
#endif
#endif
#define OS_KERNTMP kern_temp.prio = 0
#if (OS_SCHED_LOCKED == TRUE)
#define OS_RTN_LABEL()\
{\
OS_KERNTMP;\
asm("global _OS_Return");\
asm("_OS_Return:");\
}
#define OS_RET \
asm("global _OS_Return");\
asm("ljmp _OS_Return")
#else
#define OS_RET \
asm("return")
#endif
#if (OS_MEM_MODEL == (COMPACT + SMALL))
#define OS_PICVER\
asm("save_address macro");\
asm("local label,label_out");\
asm("global _OS_Cooperate_");\
asm("global label");\
asm("movlw low label_out");\
asm("ljmp _OS_Cooperate_");\
asm("label:");\
asm("psect strings");\
asm("label_out: ljmp label");\
asm("endm");
#define OS_Cooperate_Code()\
{\
asm("global ?_OS_Cooperate_");\
asm("movwf ?_OS_Cooperate_");\
asm("global _os_cur_task");\
asm("incf low _os_cur_task,w");\
asm("movwf fsr");\
asm("movf ?_OS_Cooperate_,w");\
asm("movwf indf");\
OS_RET;\
}
#elif (OS_MEM_MODEL == COMPACT)
#define OS_PICVER\
asm("save_address macro");\
asm("local label");\
asm("global ?_OS_Cooperate_");\
asm("global _OS_Cooperate_");\
asm("movlw high label");\
asm("movwf ?_OS_Cooperate_ + 1");\
asm("movlw low label");\
asm("ljmp _OS_Cooperate_");\
asm("label:");\
asm("endm");
#define OS_Cooperate_Code()\
{\
asm("global ?_OS_Cooperate_");\
asm("movwf ?_OS_Cooperate_");\
asm("global _os_cur_task");\
asm("incf low _os_cur_task,w");\
asm("movwf fsr");\
asm("movf ?_OS_Cooperate_,w");\
asm("movwf indf");\
asm("incf fsr");\
asm("movf ?_OS_Cooperate_ + 1,w");\
asm("movwf indf");\
OS_RET;\
}
#elif (OS_MEM_MODEL == SMALL)
#define OS_PICVER\
asm("save_address macro");\
asm("local label,label_out");\
asm("global _os_cur_task");\
asm("incf low _os_cur_task,w");\
asm("movwf fsr");\
asm("movlw low label_out");\
asm("movwf indf");\
OS_RET;\
asm("label:");\
asm("psect strings ");\
asm("label_out: ljmp label");\
asm("endm");
#elif (OS_MEM_MODEL == NORMAL)
#define OS_PICVER\
asm("save_address macro");\
asm("local label");\
asm("global _os_cur_task");\
asm("incf low _os_cur_task,w");\
asm("movwf fsr");\
asm("movlw low label");\
asm("movwf indf");\
asm("incf fsr");\
asm("movlw high label");\
asm("movwf indf");\
OS_RET;\
asm("label:");\
asm("endm");
#endif
#define OS_Cooperate()\
{\
os_status.state_parts.task_run = FALSE;\
asm("save_address");\
}
#define OS_Tree_Rest(a)\
{\
asm("fncall _OS_Kernel,_" #a);\
}
#if (OS_MEM_MODEL & SMALL)
#define OS_Task_Switch()\
{\
asm("global string_table");\
asm("clrf pclath");\
asm("incf low _os_cur_task,w");\
asm("movwf fsr");\
asm("movf indf,w");\
asm("movwf pcl");\
}
#else
#define OS_Task_Switch()\
{\
asm("incf low _os_cur_task,w");\
asm("movwf fsr");\
asm("incf fsr");\
asm("movf indf,w");\
asm("movwf pclath");\
asm("decf fsr");\
asm("movf indf,w");\
asm("movwf pcl");\
}
#endif
// OS_BANK_0;\
#ifndef OS_Is_Timer
#define OS_Is_Timer() T0IF
#endif
#ifndef OS_Timer_Tick_Set
#define OS_Timer_Tick_Set()\
{\
TMR0 -= OS_TMR_TICK;\
T0IF = 0;\
}
#endif
#endif // _JA_PRT_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -