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