barryliu 发表于 2013-2-8 12:59:38

清雨影 发表于 2013-2-1 13:53 static/image/common/back.gif
好帖啊……可是为什么能够10行就了事呢……我看人家最简单的操作系统也有100行啊……留着慢慢研究了 ...

有所舍便有所得啊。牺牲部分相对不那么重要的,换取相对更加重要的。

清雨影 发表于 2013-2-8 13:45:37

barryliu 发表于 2013-2-8 12:59 static/image/common/back.gif
有所舍便有所得啊。牺牲部分相对不那么重要的,换取相对更加重要的。

那请教一下,在Keil里面关于Project Option有Operating设置,其中有None Tiny Full,这个是别人写好的现成的系统吗?

barryliu 发表于 2013-2-8 13:55:05

清雨影 发表于 2013-2-8 13:45 static/image/common/back.gif
那请教一下,在Keil里面关于Project Option有Operating设置,其中有None Tiny Full,这个是别人写好的现 ...

貌似是的。传闻RTOS51是收费的,TINY免费。

清雨影 发表于 2013-2-21 22:55:31

rainyss 发表于 2008-8-18 11:49 static/image/common/back.gif
我说的速度是在保证可靠性的前提下.

很感谢楼主让我知道了什么事操作系统,但是在下有一点疑问:
1,51的RAM不大,如果有以下程序片段:(可以理解为你task_n函数while(1)里扣掉调用任务切换器的那一段剩下的代码)
prog1,占用95byteRAM
prog2,占用72byteRam
如果用状态机的话,扣掉main函数和其他某些函数(比如延时函数)占用的大约十几byte的内存,完全可以跑起这两个子程序
就是这样:
while(1){
    switch(flag){
    case 0:
      prog1();
      break;
    case 1:
      prog2();
      break;
    }
}
如果使用操作系统,需要同时申请(95+72+十几)byte内存,是不是会不够用呢?
本人新手,希望您能解惑.

清雨影 发表于 2013-2-21 23:05:28

rainyss 发表于 2009-4-22 01:00 static/image/common/back.gif
AVR上已经有很多现成的轻量系统,没必要自已做.
你把我专为51写的系统拿到AVR上用是不行的,不是改一点代码就 ...

个人比较倾向VC++的环境.请问VC++能够搭建类似的平台做轻量级操作系统吗?

barryliu 发表于 2013-2-22 09:59:07

清雨影 发表于 2013-2-21 22:55 static/image/common/back.gif
很感谢楼主让我知道了什么事操作系统,但是在下有一点疑问:
1,51的RAM不大,如果有以下程序片段:(可以理解 ...

调度才是关键,时分复用内存空间。

sedulity11 发表于 2013-2-22 10:27:49

收藏了,好好研究下

tinwy_zhang 发表于 2013-2-22 12:16:14

谢谢楼主分享~~

dengziq2 发表于 2013-2-22 12:24:07

很好,有参考价值

tinwy_zhang 发表于 2013-2-22 13:42:13

谢谢楼主分享~~

电子爱好者_MCU 发表于 2013-2-22 17:27:50

很好 学习下

sololey 发表于 2013-2-23 08:44:59


顶一下,好思路!

nnnwu 发表于 2013-3-6 14:45:12

void task_load(unsigned int fn, unsigned char tid){
      task_sp = task_stack + 1;
      task_stack = (unsigned int)fn & 0xff;
      task_stack = (unsigned int)fn >> 8;
楼主你好:请问为什么在 task_sp = task_stack + 1;
这一句要加1呢??期望你的解答哦。

361ygzzj 发表于 2013-3-7 00:46:27

有分量!改天详细拜读

barryliu 发表于 2013-3-7 14:52:20

本帖最后由 barryliu 于 2013-3-7 15:00 编辑

nnnwu 发表于 2013-3-6 14:45 static/image/common/back.gif
void task_load(unsigned int fn, unsigned char tid){
      task_sp = task_stack + 1;
   ...

先从51的堆栈机制说起,很简单的一条:堆栈出栈的时候是先从SP指向的地址取数,然后才减1,想象一下,当栈为空时,栈指针SP的值是栈是不是应该为堆栈的基地址-1?
进一步想,如果当前栈里已经存了2字节返回地址了,那么栈指针是不是应该为栈的基地址+2-1?

task_load做的实际上就是将任务函数的首地址事先存在私栈里(占2字节),并将SP指向私栈+2的地址处,所以SP的值应该是私栈基地址+2-1

把代码稍稍改改你就能看明白了:

void task_load(unsigned int fn, unsigned char tid){
      task_sp = task_stack - 1;    //将堆栈指针指向堆栈的基地址
      task_stack = (unsigned int)fn & 0xff; //向堆栈中压入任务函数地址低8位
      task_stack = (unsigned int)fn >> 8;   //向堆栈中压入任务函数地址高8位
      task_sp +=2;//修正堆栈指针,因为压入了2字节,所以堆栈指针+2。吗?
}

看看,
task_sp = task_stack - 1;
task_sp +=2;
两句合起来不就是
task_sp = task_stack + 1
吗?

Gost 发表于 2013-3-8 15:00:02

新手没看明白,以后重新温习

1125526801 发表于 2013-3-19 16:02:32

有空试一下。

一刀断天下 发表于 2013-3-21 21:16:27

在51上弄这个,牛啊,不过不实用。51的资源太少,功能不高,高精尖的控制与处理几乎不用。不过练手还是不错的。

ytfdhb 发表于 2013-3-25 17:16:40

mark,留名,慢慢研究^_^

李鸿鸿 发表于 2013-3-25 18:46:40

谢谢分享

独在异乡为异客 发表于 2013-3-25 20:47:41

MARK,已经看过一次了,以后闲着没事就看看

funny_me 发表于 2013-3-25 23:04:45

给51 DIY超轻量级多任务操作系统mark

szh_init 发表于 2013-3-25 23:38:00

楼主真强啊···

wanger 发表于 2013-3-31 03:04:49

标记慢慢看太强悍了!

colorat 发表于 2013-3-31 19:32:32

好东西。。。。{:lol:}

wind2100 发表于 2013-3-31 20:53:34

这个应该顶

18769007882 发表于 2013-4-1 15:23:17

不是并行的,,,

liyute 发表于 2013-4-5 18:56:02

高手高手,高高手!

i_kkyu 发表于 2013-4-5 19:32:41

任务调度。

PCBBOY1991 发表于 2013-4-5 19:57:43

标记下~~~~~··

Lboyve 发表于 2013-4-5 22:25:47

LZ这方面知道的太多了。。。。。

clarkewayne 发表于 2013-4-9 10:37:31

好贴,研究研究!!

1752482885 发表于 2013-4-11 16:02:27

一路狂找,找到了这篇文章的出生地。泪奔啊{:cry:}

xiaohe669 发表于 2013-4-11 16:25:42

好东西,值得收藏!

Alan.Z 发表于 2013-4-11 23:07:20

不错,学习下!

xckhmf 发表于 2013-4-12 03:08:39

mark                  

贝贝M 发表于 2013-4-13 16:53:17

{:smile:}建议至酷,顶

崆峒 发表于 2013-4-14 11:51:20

多谢楼主分享

AVR125 发表于 2013-4-21 00:23:57

初步看了下,很强大。谢谢分享!

jarodzz 发表于 2013-4-21 05:10:47

Mark!!,!!!!!!?

大哈欠E 发表于 2013-4-21 10:08:18

学生学习了

shiyue01 发表于 2013-4-21 12:45:20

好东西,值得收藏{:smile:}

shi_90 发表于 2013-4-21 15:41:31

回来慢慢研究!!!

李鸿鸿 发表于 2013-5-3 10:51:33

rainyss 发表于 2008-8-14 01:50 static/image/common/back.gif
四.用KEIL写多任务系统的技巧与注意事项

C51编译器很多,KEIL是其中比较流行的一种.我列出的所有例子都必须 ...

谢谢楼主的分享,本人很笨,刚学51不久,看的半懂,我把3个任务扩展到5个任务,2路PWM输出(延时模拟),2路检测信号,1路用于蜂鸣器,用在STC12C5A60S2。想了很久,有许多还是出现覆盖问题,如void delay(uint x),假如带入口参数怎么办?
而且是多个,如何解决呢?跪求楼主分析

dory_m 发表于 2013-5-3 11:11:55

先谢谢,再学习!!!{:biggrin:}

ludims 发表于 2013-5-4 10:27:23

简单看了下,看的迷迷糊糊的,不过绝对是个好帖子啊,有时间在好好看两遍

王力斯 发表于 2013-5-4 17:09:13

不错   我得下下来研究研究

bg0ek 发表于 2013-5-9 18:46:45

mark,回头过来再看一遍,认真学习。

夜尽天明 发表于 2013-5-10 16:57:34

标记一下,有空看看!

nnnwu 发表于 2013-5-21 11:57:54

谢谢你的回复,明白了。。楼主以后还要继续完善这个系统。

nnnwu 发表于 2013-5-21 11:58:30

barryliu 发表于 2013-3-7 14:52 static/image/common/back.gif
先从51的堆栈机制说起,很简单的一条:堆栈出栈的时候是先从SP指向的地址取数,然后才减1,想象一下,当 ...

谢谢你的回复,明白了。。楼主以后还要继续完善这个系统

point110 发表于 2013-5-23 23:19:07

这个必须顶!!!

zhang88766 发表于 2013-5-25 11:36:11

耳目一新,还是第一次听说,51可以上操作系统,呵呵!

sunplus 发表于 2013-5-30 13:10:02

标记 ~~~~~~

zhaoqingtao008 发表于 2013-5-30 23:24:44

rainyss 发表于 2008-8-14 01:50 static/image/common/back.gif
四.用KEIL写多任务系统的技巧与注意事项

C51编译器很多,KEIL是其中比较流行的一种.我列出的所有例子都必须 ...

太牛逼了,学习了

haphard 发表于 2013-5-30 23:47:06

还不错,明天仔细研究下

xou822 发表于 2013-6-1 14:23:00

这个看起来就需要mark一下的说

lukehua 发表于 2013-6-1 20:46:33

好贴,mark            

yuchi0902 发表于 2013-7-12 15:17:14

高手 学习

herolove小白 发表于 2013-7-15 23:09:20

偶的好学习 目标呀   顶

LOVEDOVE 发表于 2013-7-19 21:05:59

谢谢楼主分享

甲小虫 发表于 2013-7-26 11:25:43

好,对我们傻呼呼玩51的人有启蒙意义,从此进入OS世界,留下脚印

Making 发表于 2013-7-30 17:02:44

{:smile:}{:smile:}{:smile:} 强。。。。。。。。

519382868 发表于 2013-8-2 10:45:43

不错的思路,很有参考学习价值

linhao1581 发表于 2013-8-2 12:31:24

这个贴是长盛不衰啊,强帖就是牛B

tom_flag 发表于 2013-8-3 13:30:44

好贴好思路..一定要做出自己的操作系统..未来领域发展潜力大..

longfeix86 发表于 2013-8-3 14:16:46

楼主NB啊

LOVEDOVE 发表于 2013-8-10 12:50:56

收下~~~~~~

zlpvch 发表于 2013-8-12 00:22:01

mark            

zlpvch 发表于 2013-8-12 00:22:17

51其实很强大      

barryliu 发表于 2013-8-13 19:31:36

zlpvch 发表于 2013-8-12 00:22 static/image/common/back.gif
51其实很强大

51自身并不强大,搞笑的256字节内部存储早已不能满足技术狂人们的控制欲望。
但51的资源是强大的,它伴随了整整两代人的成长,从上世纪80年代到今天,30年的“研究”已把51的能力发挥到了极限,51理论上能做到的,几乎都已经被人做到了。
继续用吧,只要够用就行,能杀死51的,估计只有价钱。

yoghen 发表于 2013-8-14 11:41:58


记号,这个负担太重,要好好准备一下

xiefy21 发表于 2013-8-14 12:06:21

mark……
顶一个…

taoyikai 发表于 2013-9-3 22:29:06

估摸着要慢慢吸收呀

lunhuiliudao 发表于 2013-9-3 23:47:29

先顶一个,再看!!!!

happy521837 发表于 2013-9-4 19:09:45

厉害!学习学习!顶下!

lq1573 发表于 2013-9-22 22:24:55

强帖留名

宅在家里当菜包 发表于 2013-9-23 16:09:09

顶      

szmini2006 发表于 2013-9-23 16:28:24

支持一下。

add00 发表于 2013-9-30 16:45:14

马克 参考 2013.09.30 51多任务

JESTER9 发表于 2013-9-30 16:59:04

好东西,学习了

tsj1992 发表于 2013-10-7 10:00:31

思路很开阔,虚心受教。

xyr 发表于 2013-10-8 22:39:42

怎样对红外遥控解码如NEC协议。

dangeranimal 发表于 2013-10-8 23:33:16

以前在哪里看过的,谢谢了

BOERLBH 发表于 2013-10-10 21:28:45

很不错 。。打算用在M3上试试不知道 有没有 更新?

Maurice 发表于 2013-10-10 22:00:31

好帖一定要顶 {:victory:}

csb1030 发表于 2013-10-10 22:13:42

mark,好东西

JESTER9 发表于 2013-10-11 12:58:30

有帮助,谢谢

lj11hy 发表于 2013-10-11 21:56:31

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

xCamel 发表于 2013-10-19 15:30:59

不错,学习了。

lianghao9041 发表于 2013-10-19 18:05:49

虽然看的我一头雾水,那是我水平所限, 顶!

znxsjay 发表于 2013-10-23 10:16:16

楼主辛苦了!

yinzhongxing 发表于 2013-10-25 12:21:40

先顶,顶完再细细看。

fs2011 发表于 2013-11-5 22:36:01

好文   学习

背西风酒旗 发表于 2013-11-5 23:19:44

很通俗易懂

wpami 发表于 2013-11-6 08:54:56

深入持久的学习....................

jialaolian 发表于 2013-11-7 20:00:02

看完了,感觉还是不咋懂,谢谢楼主

爱情转移 发表于 2013-11-13 17:31:43

楼主描写的很详细,可以作为入门的资料,虽然我还没有看完

lzf8601 发表于 2013-11-14 14:48:07

非常好,不过不是实用际性不怎高,但学习了

NewKing 发表于 2013-11-17 21:12:56

好的,学习了。
页: 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17
查看完整版本: 给51 DIY超轻量级多任务操作系统