单片机系统中的多任务多线程机制的实现
返回的任意跳转地址*/
voidputadd(unsignedcharenv1)reentrant
{unsignedchartemp[15];chari;
/*下面保存进入中断程序时的压栈值*/
for(i=0,i<15;i++)
{temp[i]=(*((unsignedcharidata*)SP));
SP--;
}
/*放置新地址*/
SP=JMPEnv[env1][2];SP++;
(*((unsignedcharidata*)SP)=JMPEnv[env1][1];SP++;
(*((unsignedcharidata*)SP))=JMPEnv[env1][0];
/*恢复中断开始时的那些压栈值*/
for(i=14;i>=0;i--)
{SP++;
(*((unsignedcharidata*)SP))=temp[i];
}
}
结语
限于篇幅,不可能详述任务、线程和标识的细节,仅提出一种单片机等嵌入式控制系统对多任务进行实时处理的一种思想;借鉴于主流操作系统中的多任务和多线程机制。实践证明,这种想法是行之有效的,并且取得了很好的效果。
虽然我们研制的系统是对多个相同的任务进行并行处理,但该种设计方法应该可以推广到多种不同性质的实时任务的并行处理当中去。
《单片机系统中的多任务多线程机制的实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/173113.html
voidputadd(unsignedcharenv1)reentrant
{unsignedchartemp[15];chari;
/*下面保存进入中断程序时的压栈值*/
for(i=0,i<15;i++)
{temp[i]=(*((unsignedcharidata*)SP));
SP--;
}
/*放置新地址*/
SP=JMPEnv[env1][2];SP++;
(*((unsignedcharidata*)SP)=JMPEnv[env1][1];SP++;
(*((unsignedcharidata*)SP))=JMPEnv[env1][0];
/*恢复中断开始时的那些压栈值*/
for(i=14;i>=0;i--)
{SP++;
(*((unsignedcharidata*)SP))=temp[i];
}
}
结语
限于篇幅,不可能详述任务、线程和标识的细节,仅提出一种单片机等嵌入式控制系统对多任务进行实时处理的一种思想;借鉴于主流操作系统中的多任务和多线程机制。实践证明,这种想法是行之有效的,并且取得了很好的效果。
虽然我们研制的系统是对多个相同的任务进行并行处理,但该种设计方法应该可以推广到多种不同性质的实时任务的并行处理当中去。
《单片机系统中的多任务多线程机制的实现(第3页)》