打印

PK 使人进步:highgear 向网友刘前辈提出很简单的切磋请求

[复制链接]
楼主: highgear
手机看帖
扫描二维码
随时随地手机跟帖
121
zjsyjbb| | 2011-12-5 21:43 | 只看该作者 回帖奖励 |倒序浏览
支持啊.有学习的机会啦..

使用特权

评论回复
122
DownCloud| | 2011-12-6 23:53 | 只看该作者
且慢,是传统51的20个任务吗,一个任务只能12字节多点,R0到R7必需保护,A,B,dph,dpl必需保护,psw必需保护,堆栈深度不就没了?
敢问刘前辈怎么玩噢?
让小菜我开开眼呀?

使用特权

评论回复
123
Cortex-M0| | 2011-12-7 07:31 | 只看该作者
本帖最后由 Cortex-M0 于 2011-12-7 10:52 编辑

:lol

使用特权

评论回复
124
DownCloud| | 2011-12-7 07:59 | 只看该作者
难道m0前辈也能解决?
20个任务我实在想不通了。难道要用压缩?呵呵。

使用特权

评论回复
125
Cortex-M0| | 2011-12-7 08:36 | 只看该作者
本帖最后由 Cortex-M0 于 2011-12-7 10:52 编辑

俺哪有这本事,解决这一世界级难题~~~

不过,天朝人喜欢造假,将片内RAM的内容保存到片外SRAM中不就行啦~~~ :P

使用特权

评论回复
126
Cortex-M0| | 2011-12-7 08:42 | 只看该作者
本帖最后由 Cortex-M0 于 2011-12-7 10:51 编辑

上次好像是你DownCloud提的,如何在C51中断中,保存全部 R0到R7,A,B,dph,dpl,psw 等 SFR , 俺想到一个通用的方法,可能比较适合在 C51中使用,保存这些全部数据,待俺亲自验证后,再写出来供你参考~~~ :lol

使用特权

评论回复
127
yytdragon| | 2011-12-7 09:26 | 只看该作者
除了人身攻击,还是人身攻击……
我菜,看不明白

使用特权

评论回复
128
望断云山| | 2011-12-7 10:48 | 只看该作者
好久没有来了,又有pk,但是好像都是口水!

使用特权

评论回复
129
Cortex-M0| | 2011-12-7 10:51 | 只看该作者
谢谢LS两位盆友提醒,立马改正

使用特权

评论回复
130
刘前辈| | 2011-12-7 10:59 | 只看该作者
#124
俺哪有这本事,解决这一世界级难题~~~
不过,在二姨家,满大街的随手抓十个,至少有8个能解决~~~
天朝人喜欢造假,将片内RAM的内容保存到片外SRAM中不就行啦~~~


哈哈……123jj 以为自己解决不了的,别人也解决不了?咱老刘不会像你那么逊,每个任务50字节?!占用5K外部XRAM 。单片机学到40多岁了,就这水平?跳黄河得了。

老刘讲清楚一点,20个任务(不止)只占用片内idata 256字节!就用所长的调度器做基础;——如若完不成,永不登录21IC。

如若完成了,所长和21IC一家子就没脸再装相啦。

二姨家123jj你想抓8个能完成此题目的?哼哼,不说别的,能找到一个把所长的调度器修改好的人至今还未出世,更别说在此满是BUG的调度器上基础上玩20个任务啦……


、、

使用特权

评论回复
131
刘前辈| | 2011-12-7 11:05 | 只看该作者
本帖最后由 刘前辈 于 2011-12-7 12:30 编辑
#121 DownCloud
且慢,是传统51的20个任务吗,一个任务只能12字节多点,R0到R7必需保护,A,B,dph,dpl必需保护,psw必需保护,堆栈深度不就没了?
敢问刘前辈怎么玩噢?
让小菜我开开眼呀?


有个中间人就好办了,我把完成后的程序发给DownCloud,由你来作证:谁在造假!——扇那些拿着不能运行的OS调度器忽悠大众的人一个耳光。一定要“超级”响亮、“超级”漂亮点的耳光……否则当今满大街的骗子越来越多,10个人能抓出8个造假的,狼狈为奸,还有**两人一块联手骗的……骗到21IC论坛上来了 ……

           如若不想再背“大忽悠骗子”这个臭名,赶紧把自己的OS大泄密调度器BUG修改好,第三版发上来,时间已经过了一个月啦,到底有没有能力修改好???!!!没能力就看刘前辈的吧,二位老工程师自己不得不长久背着“大忽悠”的名声了。


、、

//

使用特权

评论回复
132
zch_genius| | 2011-12-7 13:06 | 只看该作者
两位明显已经跨入了另一层境界,在华山论剑,多培养新人啊,我的主,要不**功益阳指失传,连九阴真经,你看现在谁会,牛技术后继无人咋办。

使用特权

评论回复
133
Cortex-M0| | 2011-12-7 13:11 | 只看该作者
回DownCloud大侠:

您那个传统的51,玩20个任务,俺水平实在太菜,玩不转,直接认输,俺存认,能在传统的51中,玩转20个任务,都是超级牛人,俺坚决赞同您的观点,一个任务,要保护R0到R7,A,B,dph,dpl,psw,这些必须保护的,已占用13级堆栈深度了,20个任务总计占用 13X20 = 260字节RAM,  已大于传统51的片内 256字节RAM了,俺没本事玩,如不考虑片外扩展XRAM,可少掉2字节堆栈深度,20个任务总计占用 11X20 = 220字节RAM,  免强能玩,但是,还有个限定,每个任务不能全调用子函数,更不能实现多级子函数嵌套,因为,每个任务调用一次子函数,需增加 2字节X20个任务= 增加 40字节,220字节+40字节=260字节,已经大于,传统51的片内 256字节RAM了,俺没本事玩,假如任务中,需用到一些复杂的浮点数**算,俺更没本事玩了,直接出局,电工们都知道,Keil C51自带的浮点库,内带的复杂一些的浮点数**算库,不但要占用全部的R0到R7,A,B,psw等SFR资源,还要占用好几级内部临时变量,需占用N个字节的内部临时变量,再加上调用子函数时,传递变量等需要占用N个内部变量,因此,俺只是个普通的凡人,根本没这本事玩,除非,仅仅限制于玩个跑马灯,毫无价格的数据送进送出之类的~~~~

使用特权

评论回复
134
Cortex-M0| | 2011-12-7 13:13 | 只看该作者
上贴名词解说  浮点数**算 = 浮点数 运 算

使用特权

评论回复
135
haochengdi| | 2011-12-7 15:25 | 只看该作者
都是牛X人物啊,看的我云里雾里,崇拜一下啊!

使用特权

评论回复
136
刘前辈| | 2011-12-7 18:34 | 只看该作者
#131
两位明显已经跨入了另一层境界,在华山论剑,多培养新人啊,我的主,要不**功益阳指失传,连九阴真经,你看现在谁会,牛技术后继无人咋办。


放心,早就有人写成书了。书是凝固的时间,一千年不会失传的。



、、

使用特权

评论回复
137
刘前辈| | 2011-12-7 19:16 | 只看该作者
本帖最后由 刘前辈 于 2011-12-7 19:17 编辑

看132楼M0版主绕进死胡同挺有意思。提示一点:

所长写的调度器是典型的抢夺式调度器,抢夺式调度器是异步调度器,——异步调度器需要保存被抢夺的任务的完整环境,——即断点数据,包括所有寄存器和断点地址和断点下面任务(执行到断点时)堆栈的内容,——这可不止15个字节啦,应该25~30个字节,或者正如123jj写的——每任务50个字节堆栈备份才是可靠的。

      没错呀。所有人都是这样钻牛角尖的。
      所以,刘前辈用的是另一思想,如若谁都想得到,老刘还敢在这和所长这样的职业高手叫板?还敢和M0这样玩了20年单片机的理论和实践高手叫板?岂不是自找没趣?

      坏了,话说到此,几乎是把答案提示泄露了,所长和123jj 从今天的此刻开始,就不要以此问题和刘前辈“切磋”了;——既然已经“认输出局”,后事就别像所长,输了800次了,每次正确答案公布后,都是别人的错。——“这我早就知道了,我是特意留了个BUG 不说,……”这种人,像54岁人的言行?84岁差不多……

      哈哈,刘前辈早就看透所长的BUG了,俺也特意拖着不说,拖了一个月,所长跑啦,这等职业高手如此做男人,没责任心,不敢担当,难怪54了还单身一人。(漂亮MM就喜欢男人有责任心,敢担当……)


、、

使用特权

评论回复
138
aihe| | 2011-12-7 20:55 | 只看该作者
看了半天都是吹水的,骂人的,没有实际的程序写出来让大家评的

使用特权

评论回复
评分
参与人数 2威望 +2 收起 理由
highgear + 1
Cortex-M0 + 1
139
DownCloud| | 2011-12-7 22:55 | 只看该作者
123# Cortex-M0
谢谢123姐姐!

使用特权

评论回复
140
highgear|  楼主 | 2011-12-7 23:00 | 只看该作者
刘公公叽叽歪歪,也不知道扯些什么,我也懒的看。技术这东西,懂就是懂,不懂就是不懂,一行代码顶得了千言万语。而且可以看出,刘公公私下里把我的程序当作了宝贝,刘公公你也找不到比我的程序更简单明了的 os 了。

我前后发过两个 51 下的 os, 两个 dos 下的 os. 完完全全可以运行,这么多人下载了,不能运行早就有人提出来了,我也不会把不能运行的程序发出来。

两个 51 下的 os 的栈结构不同,前一个只保存 6 个,后一个保存了 13个寄存器。而两个程序中中断部分唯一的不同是把   ET0 = 1 改为一条汇编  __asm setb ET0。这或许就是刘公公认为 stack 有问题不能运行的原因,刘公公去看看汇编的代码吧,不要被像那个 CY 以及 结构copy 那样用汇编的代码打脸。

"如何在C51中断中,保存全部 R0到R7,A,B,dph,dpl,psw 等 SFR", 其实很简单,嵌入任何一条汇编就会让C51保存全部sfr, 至少在我使用的 uVision 4.00a 下如此。尽管我不想嵌入汇编,以免打破“没有一条汇编的纯C程序”,但我没有找到其他更简单的方法。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则