`
wuzijingaip
  • 浏览: 329811 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

51 单片机 操作系统

 
阅读更多
51 单片机 操作系统,很小的操作系统,学习用

贴一个超简版的(上传有更全面的):

#include <reg51.h> 

#define MAX_TASKS 2       //任务槽个数.必须和实际任务数一至 
#define MAX_TASK_DEP 12   //最大栈深.最低不得少于2个,保守值为12. 
unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];//任务堆栈. 
unsigned char task_id;    //当前活动任务号 


//任务切换函数(任务调度器) 
void task_switch(){ 
        task_sp[task_id] = SP; 

        if(++task_id == MAX_TASKS) 
                task_id = 0; 

        SP = task_sp[task_id]; 
} 

//任务装入函数.将指定的函数(参数1)装入指定(参数2)的任务槽中.如果该槽中原来就有任务,则原任务丢失,但系统本身不会发生错误. 
void task_load(unsigned int fn, unsigned char tid){ 
        task_sp[tid] = task_stack[tid] + 1; 
        task_stack[tid][0] = (unsigned int)fn & 0xff; 
        task_stack[tid][1] = (unsigned int)fn >> 8; 
} 

//从指定的任务开始运行任务调度.调用该宏后,将永不返回. 
#define os_start(tid) {task_id = tid,SP = task_sp[tid];return;} 




/*============================以下为测试代码============================*/ 

void task1(){ 
        static unsigned char i; 
        while(1){ 
                i++; 
                task_switch();//编译后在这里打上断点 
        } 
} 

void task2(){ 
        static unsigned char j; 
        while(1){ 
                j+=2; 
                task_switch();//编译后在这里打上断点 
        } 
} 

void main(){ 
        //这里装载了两个任务,因此在定义MAX_TASKS时也必须定义为2 
        task_load(task1, 0);//将task1函数装入0号槽 
        task_load(task2, 1);//将task2函数装入1号槽 
        os_start(0); 
} 




分享到:
评论

相关推荐

    51单片机操作系统.rar

    《51单片机操作系统详解》 51单片机,作为微控制器领域的经典之作,以其结构简单、应用广泛而深受工程师喜爱。本压缩包文件“51单片机操作系统.rar”显然聚焦于51单片机上的操作系统设计与实现,这对于我们深入理解...

    圈圈写的一个51单片机操作系统

    标题中的"圈圈写的一个51单片机操作系统"指的是一个专门为51系列单片机设计的操作系统。51单片机是微控制器领域中非常经典的一种,由Intel公司开发,广泛应用于各种嵌入式系统中。这个操作系统可能是由个人或团队名...

    自己编的51单片机操作系统,比keil强

    标题中的“自己编的51单片机操作系统,比keil强”暗示了这是一个自研的、针对51系列单片机的操作系统,且作者认为它在某些方面优于KEIL,一个广泛使用的51单片机开发环境。 KEIL包含了μVision IDE、编译器、调试器...

    51单片机操作系统....

    51单片机操作系统开发中的问题与技巧 & 构造一个51单片机的实时操作系统

    51单片机操作系统的实现源代码.pdf

    51单片机操作系统的实现源代码.pdf 本文档主要讲述了基于51单片机的操作系统的设计和实现,讨论了在开发过程中需要注意的问题和技巧。首先,文档介绍了51单片机的特点和应用范围,然后讨论了基于51单片机的操作系统...

    51单片机操作系统-RTX51 Tiny

    《51单片机操作系统-RTX51 Tiny详解及应用》 51单片机是微控制器领域中广泛使用的一类芯片,以其结构简单、性价比高、资源丰富等特点深受工程师喜爱。在51单片机的应用开发中,为了实现更高效、更复杂的任务管理,...

    开发51单片机操作系统时应注意的问题

    ### 开发51单片机操作系统时应注意的问题 #### 一、引言 随着嵌入式系统的广泛应用,针对特定硬件平台的操作系统开发变得尤为重要。51单片机作为一款经典的微控制器,在工业控制、家用电器等领域有着广泛的应用。...

    51单片机操作系统的实现+源代码.pdf

    根据提供的文件信息,以下是关于51单片机操作系统实现及源代码的知识点总结: 1. 51单片机概述: 51单片机是一种经典的微控制器系列,最初由英特尔公司在1980年代推出。这类单片机基于Intel 8051微控制器架构,广泛...

    个人写的基于51单片机的小操作系统

    《51单片机上的微型操作系统详解》 51单片机是微控制器领域中一款经典且广泛应用的芯片,以其简单、经济、易用的特点深受工程师喜爱。在电子设计和嵌入式系统开发中,51单片机常被作为教学和实践的基础平台。本文将...

    rxt51单片机操作系统使用指南

    《rxt51单片机操作系统使用指南》 在嵌入式系统开发中,单片机操作系统(MCU OS)是实现复杂任务管理和资源优化的关键。RTX51是一款广泛应用于8位和16位单片机的实时操作系统,特别适合于资源有限但需要高效执行多...

    51单片机操作系统开发中的问题与技巧(附原代码)

    在51单片机操作系统开发过程中,会遇到各种挑战,同时也蕴含着许多实用的技巧。51单片机因其简单易用、性价比高而广泛应用于嵌入式领域,但其有限的内存和处理能力对操作系统的开发提出了特殊要求。本文将深入探讨51...

    51单片机操作系统演示

    这是自己写的51单片机操作系统演示程序,调度算法采用的是先进先出的算法,可以在此基础上修改代码,采用优先级调度算法。程序中有4个任务,负责在串口打印A、B、C、D。头文件#include请在宏晶官方网站下载,或者将...

    一个跑在51单片机上的简单操作系统

    一个简单的51单片机操作系统可能包含以下关键组件: 1. **内核**:内核是操作系统的最核心部分,负责任务调度、中断处理、内存管理等。在51单片机上,内核可能包括了任务切换机制,使得多个任务可以并发执行,尽管...

    uCOS精简内核 51单片机操作系统移植

    通过这个过程,初学者不仅可以学习到uCOS的使用,还能深入了解单片机操作系统的基本原理和移植技巧。提供的"精简内核20110214"文件很可能是移植后的源代码,供学习者参考和实践。这个实例为嵌入式开发的学习者提供了...

    开发51单片机操作系统时应注意哪些问题

    如果开发一套基于51系列单片机的操作系统,那么用户只需要编写各个任务的程序,不必同时将所有任务运行的各种情况记在心中,不但大大减少了程序编写的工作量,而且减少了出错的可能性。1 开发平台的选择和论证开发...

    一种基于C51单片机的非抢占式的操作系统架构

    多年来我们一直想找一个合适的实时操作系统,作为自己的开发基础。根据开发需求,整合一些常用的嵌入式构件,以节约开发时间,尽最大可能地减少开发工作量;另外,要求这个实时操作系统能非常容易地嵌入到小容量的...

    一个跑在51单片机上的简单操作系统.zip

    本资料包“一个跑在51单片机上的简单操作系统.zip”提供了关于51单片机操作系统的基础知识,旨在帮助学习者理解和掌握如何在51单片机上实现简单的操作系统。 首先,我们来理解一下51单片机的基本架构。51系列单片机...

    给51单片机diy多任务操作系统

    51单片机多任务操作系统的设计和实现 在嵌入式系统中,操作系统扮演着至关重要的角色,能够使得系统变得更加灵活、可靠和高效。然而,对于资源有限的 51 单片机来说,实现一个操作系统是非常具有挑战性的。鉴于此,...

Global site tag (gtag.js) - Google Analytics