c51写的最简单的操作系统

c51写的最简单的操作系统

ID:6601614

大小:36.50 KB

页数:12页

时间:2018-01-19

c51写的最简单的操作系统_第1页
c51写的最简单的操作系统_第2页
c51写的最简单的操作系统_第3页
c51写的最简单的操作系统_第4页
c51写的最简单的操作系统_第5页
资源描述:

《c51写的最简单的操作系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C51写的最简单的操作系统个人看法:这个机制思路比较简单清晰,比较容易上手应用,缺点实时性不是很好;我用C做了一个仅有键盘扫描、LED显示的程序把关于任务分配的部分帖了出来,请大家指点,源文章附后。/***************************操作系统有关定义部分*******************************/#defineMax_TaskNum4//本操作系统最大调度任务数//每个任务的调度次数由主程序中设定uintcodePRI_Task[Max_TaskNum]={4,100,0,0};//存放四个任务的次数uintTemp_Task[Max_

2、TaskNum]={0,0,0,0};//存放临时四个任务次数void(*RTime_Task[Max_TaskNum])();//存放四个任务的函数指针ucharNow_Task=0;//存放当前任务标号ucharTask_TH,Task_TL;//存放任务的定时时间片/***************************操作系统有关定义部分*******************************//***************************************************原型:voidtime0(void)interrupt1using

3、1*功能:定时器0中断子程序*说明:这里是操作系统占用资源,供任务调度程序使用每个任务时间长度为(定时时间片-15机器周期)*参数:无*返回:无**************************************************/voidtime0(void)interrupt1using1{uinttemp;TH0=Task_TH;TL0=Task_TL;Now_Task++;if(Now_Task==Max_TaskNum)Now_Task=0;temp=Temp_Task[Now_Task]++;if(temp==PRI_Task[Now_Task]){

4、RTime_Task[Now_Task]();Temp_Task[Now_Task]=0;}}/***************************************************原型:voidTask_Plot(void)*功能:任务分配*说明:任务函数分配,时间片分配*参数:无*返回:无**************************************************/voidTask_Plot(void){RTime_Task[0]=Led_Disp;RTime_Task[1]=Scan_Key;}/*****************

5、**********************************原型:voidSys_Init(void)*功能:系统初始化,定时器0初始化*说明:工作方式1,时间片512机器周期*参数:无*返回:无**************************************************/voidSys_Init(void){TMOD=0x01;//工作方式1TH0=0x02;TL0=0x00;Task_TH=0x02;Task_TL=0x00;//时间片256机器周期IP=0X00;TCON=0X10;IE=0X82;//开中断硬件优先级相同AUXR=AUX

6、R

7、0x10;//W78E516}/***************************************************原型:voidmain(void)*功能:系统初始化、任务调度分配、数据格式转换准备*说明:对执行频率无要求的操作、任务执行的动态改变*参数:无*返回:无**************************************************/voidmain(void){ucharch,cl,i;ls_enable();Task_Plot();Sys_Init();while(1){//有按键,显示缓冲左移,填入按键if(Ke

8、y_number){ch=Key_Data[Key_number];Key_number--;for(i=0;i<10;i++){dispbuff[11-i]=dispbuff[9-i];}cl=(ch&0x0f);dispbuff[0]=disprule[cl];cl=(ch&0xf0)>>4;dispbuff[1]=disprule[cl];}WATCHDOG=~WATCHDOG;}}多任务机制在单片机系统中的应用 作者:余 进 黄继武来源:电子应用技术  摘 要:提出了一种崭新的基于任务机制的单片

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。