在51上实现多任务,任务切换是难点

2020-01-30 13:59发布

我是仿真的,是C语言和汇编结合的,
主要思想就是时间片,我10ms 切换一次
最蛋疼就是切换任务了,我比较笨,我是用一段RAM来保存 程序现场的。把ACC PSW R0-R7  地址都保存在RAM中,一个任务就是13个字节,这样开销,还有就是任务
切换想不到好的办法,求思想,那位能说说如何实现任务切换,。
我加如汇编的原因是编译器编译的时候生成的代码不确定,所以我直接就手动人为控制了。我现在就是如果我纯C来写,我完不成,必须C和ASM结合。
任务切换不是很懂,对这个有点兴趣的讨论下吧。

/RAM  ID addr16 PSW ACC R0-R7  ID  addr16 PSW ACC R0-R7 /
上面就是RAM中的两个任务的示意图。我这个开销太大了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
wear778899
1楼-- · 2020-01-31 07:45
51    上合作式调度器比较有价值
sky5566
2楼-- · 2020-01-31 07:51
STC15 SRAM有 2KByte~4KByte 因該夠用了
fqc168
3楼-- · 2020-01-31 12:39
我就用着呢,不过任务不能太多,否则不是很现实,我也是采用12C60S2的,内部256+1024RAM,正常用没有什么问题,作为一种学习爱好用,在程序比较小的时候,好处不明显,程序大的时候比较好,我仿照别人的51系统,自己写了一个,满好用的,主要问题是切换任务需要200个指令时间,所以为了提高性能,尽量使用频率高的晶振,比如20M吧,那样的话运行大的程序效果很好

一周热门 更多>