用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

单片机系统中的多任务多线程机制的实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:27:29
初始化完成后进入多任务所属线程的循环处理阶段,其间可以随时由通道按键引起的中断来加入新的任务,每个线程的调度标识可以由相关的前台线程给出,也可来自相关的后台线程。配合Getadd()和Putadd()从中断强制返回某地此后,使用跳转语句到真正的目标地址。

最后给出强制返回程序代码(供参考):

/*保存当前地址信息到环境变量JMPEnv[env1][]中,每个变量由三项组成,env1是二维下标参数*/

void getadd(unsigned char env1)

{unsigned char temp;

temp=SP;

JMPEnv[env1][0]=(*((unsigned char idata*)SP));

temp--;

JMPEnv[env1][1]=(*((unsigned char idata*)temp));

JMPEnv[env1][2]=SP-2;

}

/*置中断返回的任意跳转地址*/

void putadd(unsigned char env1)reentrant

{ unsigned char temp[15];char i;

/*下面保存进入中断程序时的压栈值*/

for(i=0,i<15;i++)

{temp=(*((unsigned char idata*)SP));

SP--;

}

/*放置新地址*/

SP=JMPEnv[env1][2];SP++;

(*((unsigned char idata*)SP)=JMPEnv[env1][1];SP++;

(*((unsigned char idata*)SP))=JMPEnv[env1][0];

/*恢复中断开始时的那些压栈值*/

for(i=14;i>=0;i--)

{SP++;

(*((unsigned char idata*)SP))=temp;

}

}
javascript:window.open(this.src);" style="cursor:pointer;"/>
结语

限于篇幅,不可能详述任务、线程和标识的细节,仅提出一种单片机等嵌入式控制系统对多任务进行实时处理的一种思想;借鉴于主流操作系统中的多任务和多线程机制。实践证明,这种想法是行之有效的,并且取得了很好的效果。

虽然我们研制的系统是对多个相同的任务进行并行处理,但该种设计方法应该可以推广到多种不同性质的实时任务的并行处理当中去。



上一页  [1] [2] 

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:4,593.75000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号