大家来接蜜: os 大泻蜜...............................................

[复制链接]
xjw_xl_box 发表于 2011-11-7 22:03 | 显示全部楼层
Suspend 和 resume 函数就是切换程序指针啊。。
zzz1367 发表于 2011-11-7 22:51 | 显示全部楼层
ainideli 发表于 2011-11-7 23:48 | 显示全部楼层
Cortex-M0 发表于 2011-11-8 03:07 | 显示全部楼层
好贴,勤顶,学习
xsp123666 发表于 2011-11-8 16:07 | 显示全部楼层
别沉了
zhihuizhou 发表于 2011-11-8 16:54 | 显示全部楼层
刘前辈出马 比腥风血雨  墙裂围观
DownCloud 发表于 2011-11-8 17:09 | 显示全部楼层
本帖最后由 DownCloud 于 2011-11-8 17:13 编辑

汇编有写过简单的抢占式系统, C语言不算精, 所以目前还写不出来。
相信看了highgear老师的系统后定会有所进步。
流行音乐 发表于 2011-11-8 21:15 | 显示全部楼层
最简单的OS模型,欢迎拍砖!

#include
sbit LED = P0^0;

unsigned char TaskID = 0;
unsigned char TimerCount = 0;


void (*pTask[2])(void);

void Timer0Init()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0= ...
西安农民工 发表于 2011-11-7 19:54


这个能运行吗?
在定时器中断处理函数中调用死循环的 task 函数,什么时候中断处理才能结束?
312567150 发表于 2011-11-8 21:58 | 显示全部楼层
312567150 发表于 2011-11-8 21:59 | 显示全部楼层
ningling_21 发表于 2011-11-8 22:01 | 显示全部楼层
看似挺简单,和RTX51相比如何?
 楼主| highgear 发表于 2011-11-8 22:01 | 显示全部楼层
农民工的意思大概是想利用中断来切换任务,但有几个问题:51的中断如果没有 reti 则不会再次响应;
即便调用一次 reti 开放中断, 因为任务的死循环,堆栈最终会溢出。
koohappy 发表于 2011-11-8 22:20 | 显示全部楼层
30到了没有
DownCloud 发表于 2011-11-8 22:21 | 显示全部楼层
已经研究完了,嘿嘿。
思路很清晰。有一点疑问,highgear老师是不是先编完中断函数,看一下用了哪些寄存器再决定Registers的成员的,只是编程过程上的疑问,呵呵。当然也可以嵌入汇编都保存啦,哈哈。
哈哈,又进步了,重拾编程爱好。
以前写汇编觉得很有趣,写过很多很多,后来写高级语言,写的程序总感觉怪怪的,有点感觉把握不住。没有了在汇编里当国王的乐趣。
紫痕o0 发表于 2011-11-8 22:23 | 显示全部楼层
sunocean 发表于 2011-11-8 23:25 | 显示全部楼层
这个必须顶
Cortex-M0 发表于 2011-11-9 05:32 | 显示全部楼层
嘿嘿。俺也初步研究完了。
思路超级清晰。程序也写的超级精简,多一个字符显啰嗦,少一个字符则杯具。

为了更好的学习highgear老师的编程思路,平时不玩OS的俺,尝试改写了一下程序。
目标:
1.  将任务堆栈从片内256字节RAM内,移到扩充的外部 64K RAM中。
2.  将最大任务数扩展到127个。
3.  沿用highgear老师的编程思路,不用汇编插入PUSH, POP指令保存中断压栈寄存器,完全自动压栈保护各变量。
DownCloud 发表于 2011-11-9 08:02 | 显示全部楼层
紧跟contexm0斑竹,下午回来修改程序。
 楼主| highgear 发表于 2011-11-9 08:58 | 显示全部楼层
呵呵,谢谢大家关注,谢谢123姐姐的改进,能对大家有帮助,让我感到很欣慰。

这个程序为了精简易读,牺牲了一些效率,从实用性和效率都不能和tiny os 相提并论,但我相信包括我在内的很多人一看到汇编,头就大了。另外有一个小疏忽, 中断里的 ET0 = 1 应放在最最后。
keasy 发表于 2011-11-9 10:01 | 显示全部楼层
OS还是有用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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