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

📄 taskisr.c

📁 MCS-51的一个小型操作系统,在KeilC中大模式下编译工作
💻 C
字号:
/********************************************
       嵌入式系统 小型操作系统
		  作者:汪普宏
	    制作日期:2006.9
*********************************************/

#include "os.h"
#include"OS_Mail.h"
#include "OS_Memory.h"
/****************************************
模块功能:任务级任务调度
模块接口:当前任务优先级,任务挂起延迟时间
调用者:任务
返回值:  无
*****************************************/

void OSTask_TimeDal(uchar TimeDal)			//任务级任务切换函数
{   
	ISR_num++; 
	#pragma ASM 
	PUSH    ACC
	PUSH    B 
	PUSH    DPH 
	PUSH    DPL 
	PUSH    PSW 
	MOV     PSW,  0
	PUSH 	AR0
	PUSH 	AR1
	PUSH 	AR2
	PUSH 	AR3
	PUSH 	AR4
	PUSH 	AR5
	PUSH 	AR6
	PUSH 	AR7
	#pragma	 ENDASM	
	OSPCB[Prio].timedal=TimeDal;	
	if(Prio!=FREE_TASK)
	{
		  if(TimeDal>0)
		  {
			    OSPCB[Prio].flg=WAIT_TIME;   //任务因时间延迟挂起
		  }
		  else   
		  {
			    OSPCB[Prio].flg=WAIT_MSG;	 //非空闲任务应因等待消息挂起
		  }
          if((OSRdyTab[Prio>>3]&=~OSMapTab[Prio&0x07])==0)	//从就绪表中删除该任务
          {
		        OSRdyGrp&=~OSMapTab[Prio>>3]; 
		  }
		  OSISR_Task_Sched();								
    }	
    #pragma ASM
	POP  	AR7
	POP  	AR6
	POP  	AR5
	POP  	AR4
	POP  	AR3
	POP  	AR2
	POP  	AR1
	POP  	AR0
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	B
	POP  	ACC
	DEC  	ISR_num
	RETI
	#pragma	 ENDASM	 
}

⌨️ 快捷键说明

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