首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
单片机系统中的多任务多线程机制的实现 | |||||
收集整理:佚名 来源:本站整理 时间: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; } } 限于篇幅,不可能详述任务、线程和标识的细节,仅提出一种单片机等嵌入式控制系统对多任务进行实时处理的一种思想;借鉴于主流操作系统中的多任务和多线程机制。实践证明,这种想法是行之有效的,并且取得了很好的效果。 虽然我们研制的系统是对多个相同的任务进行并行处理,但该种设计方法应该可以推广到多种不同性质的实时任务的并行处理当中去。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |