IN_TIME_OS操作系统升级版.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:7 大小:163KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

IN_TIME_OS操作系统升级版.doc

IN_TIME_OS操作系统升级版.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

IN_TIME_OS操作系统很开心写下这篇文章,本人喜欢研究单片机的编程方法以及各种算法,最近因工作繁忙,任务较多,编程频繁,所以研究一些可以提高编程效率的方法,因此想在单片机上做一个模块,但是找了很久找不到可以各种单片机可以通用的模块,于是看到了陈明计的51单片操作系统非常感兴趣,画了一星期的时间研究,确实非常的好,可是发现该系统虽然占用内存很小但是实时性还是有欠缺,而且内存比51还要小的单片机是很难应用该系统的,因此我个人做了一个非常微型的操作系统用于内存小且rom也小的单片机中比如义隆的时速的,三星的,凌阳的松瀚的等等他们所发布的低端单片机中,本系统非常容易移植。/*学习了陈明计的操作系统后,对51单片机的应用深有感触,因此闲暇之余参照了陈明计以及网友发表的操作系统写下了本人的51操作系统,是入门级的,不足之处还望大家多多提意见,本人邮箱:zhudeng66@163.com,QQ:550606839非常欢迎网友提供宝贵的建议,本系统是基于时间片轮转的操作系统,我设定了两个任务,无需扩展RAM,在51和52上都可以运行,是一个非常简单的操作系统,本系统自动保存断点,可以添加任务,但需注意内存是否够用2011年7月5日修改内容:在原系统上增加以下几个功能:增加任务定时器使任务具有挂起功能挂起后的任务不再占用cpu资源使其他任务执行速度更快本RTOS命名为:IN_TIME_OS*/以下是该操作系统的全部源码:/*学习了陈明计的操作系统后,对51单片机的应用深有感触,因此闲暇之余参照了陈明计以及网友发表的操作系统写下了本人的51操作系统,是入门级的,不足之处还望大家多多提意见,本人邮箱:zhudeng66@163.com,QQ:550606839非常欢迎网友提供更好的建议,本系统是基于时间片轮转的操作系统,我设定了两个任务,无需扩展RAM,在5152上都可以运行,是一个非常简单的操作系统,本系统自动保存断点,可以添加任务,但需注意内存是否够用本OS命名为:IN_TIME_OS*/#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineos_int(tid){task_sp[tid]=task_stack[tid]+1;SP=task_sp[tid];}//初始化操作系统#definetimeT_delay(TT){EA=0;TR0=0;TH0=0xff;TL0=0xfe;\timeT[task_id]=TT;EA=1;TR0=1;;;}//任务定时器#defineMAXTASK3//定义3个任务,其中一个任务为实时任务sbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;sbitP1_3=P1^3;//引脚定义:我只是简单的通过这几个引脚演示了本操作系统的工作sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7=P1^7;uchartask_stack[MAXTASK][10];//定义2个任务私栈uchartask_sp[MAXTASK];//定义堆栈指针uchartimeT[MAXTASK];//定义任务定时器uchartask_id=0;//定义任务号,如果想要1号任务先启动那么该值初始化为1ucharzz,aa;//定义的全局变量是任务中要用到的变量,为静态变量/***********************************函数名称:task_load**功能描述:装载任务**输入:任务地址ID**输出:无**全局变量:无**调用模块:无****作者:朱登**日期:2011年7月1日**-------------------------------------------------------------------------------------------------------**修改:**日期:****************************************/voidtask_load(uintfn,uchartid){task_stack[tid][0]=(uint)fn&0xff;task_stack[tid][1]=(uint)fn>>8;task_sp[tid]=task_stack[tid]+7;}//中断产生6字节压栈调整栈顶,具体看51的堆栈操作/***********************************函数名称:T0_int**功能描述:初