我一菜鸟级自已写的时间片轮询程序

[复制链接]
 楼主| fsngood 发表于 2014-9-6 09:04 | 显示全部楼层 |阅读模式
在网上查找资料学习了时间片轮询的好处是可以并行执行任务,实时性也不错,但我花了一个月时间看出明白,现在我拿出我自己写的一个简单的时钟程序,仅仅是显示:小时、分钟、秒针,共6位数字,

我用的是时间片轮询的方法来实现时间的显示的,所以把显示弄成了6个任务,我的程序简单易懂,附件内附有:程序源码,和protues电路文件
欢迎大家批评指证;

但在编完这个程序后,我有一个小小的提问,中断服务函数中的那个void renwumark()  函数是如何实现精确的打标服务的。 时钟仿真SCH.zip (32.09 KB, 下载次数: 198)
keer_zu 发表于 2014-9-6 11:18 | 显示全部楼层
本帖最后由 keer_zu 于 2014-9-6 11:20 编辑

很粗略看了一下程序,你这个称不上多任务,也称不上时间片轮询,也就是一个大循环。真正的多任务应该是这样的:
1. 时间片切换由中断触发(时钟中断)。
2.当时间片结束时,保存当前执行任务的运行上下文(压入堆栈),然后将下一个要执行任务的环境出栈。继而切换到下一个任务。



因为你的程序不是真正的多任务,不是并发的,所以所有“任务”在时间上相互影响,无法保证时间上的准确性(是准确性而不是精确性,准确都做不到哦)
 楼主| fsngood 发表于 2014-9-6 12:23 | 显示全部楼层
所以我的疑问就在这里,实时性…………。
sxhhhjicbb 发表于 2014-9-6 13:51 | 显示全部楼层
大循环都算不上。就是一个中断程序
 楼主| fsngood 发表于 2014-9-6 14:06 | 显示全部楼层
能否帮我改动一下,变为实时的多任务的,
keer_zu 发表于 2014-9-6 16:48 | 显示全部楼层
fsngood 发表于 2014-9-6 14:06
能否帮我改动一下,变为实时的多任务的,

参考一下ucos的这部分实现吧。
逍遥派掌门 发表于 2014-9-6 18:38 | 显示全部楼层
每个子程序都有一个delay(x),感觉不好,霸道的延时严重浪费资源;
中断里面就不要做那么多的运算了,严重影响实时性,
象:
TH0=(65536-1000)/256;
                        TL0=(65536-1000)%256;

完全可以用 TH0 = xxx; TL0 = YYY; 代替了。

另外,在硬件上,用P2代替P3,程序还可以优化。软、硬结合才能高效。
叶伤 发表于 2014-9-6 18:46 来自手机 | 显示全部楼层
逍遥派掌门 发表于 2014-9-6 18:38
每个子程序都有一个delay(x),感觉不好,霸道的延时严重浪费资源;
中断里面就不要做那么多的运算了,严重 ...

TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
这是给人看的,编译器在编译时会把常数换算为定值。

这程序没看,最近一直不敢看他人程序,所以,默默走过,嘿嘿。
mgf006 发表于 2014-9-6 18:56 | 显示全部楼层
同意楼上的 常数运算表达式编译器会处理的说法,没必要人为地的计算的。
 楼主| fsngood 发表于 2014-9-6 22:27 | 显示全部楼层
那这里有没有谁自己写过一个简单的实时操作的系统,要求简单,不要像UCOS一样复杂,
逍遥派掌门 发表于 2014-9-9 15:21 | 显示全部楼层
叶伤 发表于 2014-9-6 18:46
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
这是给人看的,编译器在编译时会把常数换算为定值。

从实用性来搞,应该弄成:
#define xx  (65536-1000)/256

TH0 =  xx ;

好处,你懂的。
逍遥派掌门 发表于 2014-9-9 15:23 | 显示全部楼层
fsngood 发表于 2014-9-6 22:27
那这里有没有谁自己写过一个简单的实时操作的系统,要求简单,不要像UCOS一样复杂, ...

简单的51调度系统,大概符合你的胃口,查以前的帖子。
keer_zu 发表于 2014-9-9 15:33 | 显示全部楼层
fsngood 发表于 2014-9-6 22:27
那这里有没有谁自己写过一个简单的实时操作的系统,要求简单,不要像UCOS一样复杂, ...

只借鉴入栈出栈部分即可。

评分

参与人数 1威望 +1 收起 理由
fsngood + 1 很给力!

查看全部评分

 楼主| fsngood 发表于 2014-9-9 22:41 | 显示全部楼层
我找到了一个入栈出栈的例子,实时性不太清楚,还要考虑重入问题,感觉也是有些难懂,我想在我的程序的基础上面,把时间片切好,这一点希望有谁能够提供点指导
xlsbz 发表于 2014-10-20 21:19 来自手机 | 显示全部楼层
都是从菜鸟过来的。
xlsbz 发表于 2014-10-21 08:59 | 显示全部楼层
格式非常整齐。做事认真。有高人的潜质啊。
但是可以考虑多看看别人的格式,
 楼主| fsngood 发表于 2014-10-22 18:46 | 显示全部楼层
谢谢指导
keer_zu 发表于 2014-10-22 19:27 | 显示全部楼层
fsngood 发表于 2014-10-22 18:46
谢谢指导

做得怎么样了?你的OS
jueji 发表于 2019-10-16 11:25 | 显示全部楼层
学习学习,谢谢分享
yzjyh1 发表于 2019-11-19 09:55 | 显示全部楼层
yyy71cj 发表于 2014-9-13 11:56
这个程序,逻辑结构变复杂了,倒确实是对多任务的一个有条理的组织,不过只有看头,没有用头。也就是说不但 ...

有准备出新的书籍吗?讲讲单片机操作系统的,买过你以前的书
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部