RTX51是keil专门为8051系列量身定做的RTOS,分为Full和Tiny两个版本,Full为可抢占,Tiny为不可抢占,其中,RTX51 Full已经停产,目前只有RTX51 Tiny。RTX51 Tiny RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程序没有main( )函数,是从任务0开始执行的。

使用时,必须注意两个条件:第一,keil C51 集成开发环境,其许可证版本必须为PK51,否则无法编译通过。第二,RTX51 Tiny使用定时器0、定时器0中断和寄存器组1。如果在程序中使用了定时器0,则RTX51 Tiny将不能正常运转。可以在定时器0的中断服务程序后追加自己的定时器0中断服务程序代码(修改配置文件Conf_tny.A51)。

最好的RTX51文档,keil的HELP文档。

万能模板demo工程链接:

demo(51MCU_RTX51Tiny)万能模板-嵌入式文档类资源-CSDN下载

1、创建工程

按照原先的使用方式建立工程,芯片选择AT89C52,表示有256个字节的RAM,8K的ROM,并将STARTUP.A51加入工程。

(1)将Conf_tny.A51文件复制到工程文件夹下。我们在C:\Keil_v4\C51\RtxTiny2\Examples中,选择没有过多动作的RTX_EX1例程中复制。

说明:这里我们将Conf_tny.A51文件放在了工程文件夹RTX51 OS文件夹中,方便管理。

(2)在Keil中选择OS。 【Project】-【Options……】-【Operation System】-【RTX-51 Tiny】。同时,修改晶振12MHz或者其他值。

(3)需要调用OS API的地方引入头文件rtx51tny.h。 #include<rtx51tny.h>

2、代码举例

工程中,其他文件按照上述做好就行,demo.c中的代码如下:

#include <reg52.h>
#include <rtx51tny.h>sbit LED1=P1^1;
sbit LED2=P1^2;int counter1=0,counter2=0;void job0 (void) _task_ 0
{os_create_task (1);           /* start task 1  */os_create_task (2);           /* start task 2  *//*初始化操作*/os_delete_task (0);           /* delete task 0,初始化动作执行一次*/
}void job1 (void) _task_ 1
{while (1){LED1=1;os_wait2(K_TMO,5);          //10ms*5=50ms,延时50msLED1=0;os_wait2(K_TMO,5);          //10ms*5=50ms,延时50mscounter1++;                 /* increment counter */}
}void job2 (void) _task_ 2
{while (1){LED2=1;os_wait2(K_TMO,10);         //10ms*10=100ms,延时100msLED2=0;os_wait2(K_TMO,10);         //10ms*10=100ms,延时100mscounter2++;                 /* increment counter */}
}

3、配置文件说明

Conf_tny.A51配置文件一般只关注INT_CLOCK和TIMESHARING。

INT_CLOCK是配置用户Task的心跳Tick,也就是对于用户任务而言,一个Tick就是一个心跳,用户任务都在Tick下进行工作,根据8051系统的单片机时钟初始化配置,填上实际的数值,比如如果想让一个Tick是2ms,那么就要配置对应的INT_CLOCK数值,需要和实际硬件时钟配置相对应,假设8051的时钟频率为12Mhz不分频,那么配置1000为1ms,于是1 Tick = 1 ms。

TIMESHARING是配置调度器算法:
        当TIMESHARING == 0的时候,选择协议调度,任务的切换需要主动进行,如果一个任务不进行任务的切换动作(wait / switch……),那么这个任务将一直运行,其它任务得不到运行。
        当TIMESHARING > 0的时候,选择时间片调度,也是就是分配给每一个任务固定的时间片TIMESHARING * Tick (ms),如果在此时间内任务没有主动切换,则由调度器挂起任务,切换到下一个可执行的任务中。

简而言之:

INT_CLOCK    EQU  10000           //10000个定时周期为一个时钟滴答 记为t1

TIMESHARING EQU   5                //每个任务一次性可以运行5个时钟滴答T=5

4、API说明

想超时等待一段时间,用K_TMO,想做周期性动作,用K_IVL。

基于51单片机的实时多任务操作系统(RTX51)使用教程相关推荐

  1. 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc

    基于51单片机的实时时钟设计报告 PAGE PAGE 24 课程设计(论文)任务书 信息工程 学 院 信息工程 专 业 (2) 班 一.课程设计(论文)题目 嵌入式课程设计 二.课程设计(论文)工作自 ...

  2. 51单片机8255扩展c语言,参阅:基于51单片机的实时时钟的设计与开发8255扩展io口1V0.1...

    <基于51单片机的实时时钟的设计与开发(8255扩展io口) (1).doc>由会员分享,可免费在线阅读全文,更多与<基于51单片机的实时时钟的设计与开发(8255扩展io口) (1 ...

  3. 基于51单片机的实时时钟设计

    功能: 通过8位数码管实现实时时钟,可以设置时间,切换显示模式,显示年月日,时分秒信息:可通过按键修改信息,增加.减少.确定.取消.上一个.下一个.切换模式.设置等功能. 时分秒 年月日: 部分程序: ...

  4. 基于51单片机运行RTX51 Tiny操作系统源码模板之1.LED闪烁

    什么是RTX51 Tiny: RTX51 Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务(函数)同时执行的应用.能灵活的调度系统资源,像CPU和存储器,并且提供任务间的通信.RTX51 ...

  5. 单片机检测电机频率c语言,基于51单片机的电动机测速表的设计.doc

    基于51单片机的电动机测速表的设计 基于51单片机的电动机测速表设计 摘 要 本文介绍了采用光电传感器实施电机转速测量的方法.基本原理,完成了一种基于AT89C51单片机平台的电动机测速表的软硬件设计 ...

  6. 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc

    课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...

  7. 51单片机计算器_基于51单片机的倒计时温度检测报警器

    基于51单片机的倒计时温度检测报警器 学习单片机断断续续半年了,在学长学姐的教学帮助下,完成了51单片机的入门学习,开始实践做项目,在一周时间内设计和制作出个人项目.起初,我设计和选择的是12864显 ...

  8. 基于51单片机电子时钟

    keil工程与protues仿真电路 1 基于51单片机用LCD1602实现时-分的显示 2. 按键控制时-分的调整 3. 能实现整时报时的功能(蜂鸣器响) 4. 闹钟模式 5.按键切换模式(模式一: ...

  9. 基于51单片机的车速控制系统

    本次带来的项目是基于51单片机的车速控制系统,所谓的车速控制,即通过单片机作为主控,实现加速刹车过程中的能量释放与吸收的控制. 具体要求如下: 1.汽车减速存在两种形式,即刹车和动能回收. 2.由于汽 ...

最新文章

  1. 当前日期得到本周的开始和结束日期
  2. 面试题:一条 sql 语句是如何经过 MySQL 的体系结构的?
  3. 衡量时间序列相似度的方法:从欧氏距离到DTW及其变种
  4. (又有惊喜)Redis5.0重量级特性Stream尝鲜
  5. 编译 Linux2.6 内核总结【ZT】
  6. 还在直接操作Redis?赶快来试试它....
  7. 显示脸上的关键点的程序
  8. https://leetcode.com/problems/palindromic-substrings/description/
  9. Android开发性能优化大总结
  10. Android经典蓝牙开发简介(Google官网译文)
  11. 实现Windows访问Linux文件系统
  12. idm integration module(idm) Chrome插件 安装
  13. 计算机图形学教程动画实验报告,计算机图形学画圆实验报告.doc
  14. 华东交通大学计算机专业分数,往年华东交通大学优势专业排名及分数线参考
  15. kallsyms_lookup_name使用简介
  16. JavaWeb: Tomcat优化
  17. Locating Elements
  18. 单侧游离端缺失设计图_单侧游离端附着体义齿的应力中断设计及其力学传导分析...
  19. 百度搜索引擎压力测试报告
  20. ubuntu下安装qq2012

热门文章

  1. O(nlogn)级排序之希尔排序
  2. 小冰冰传奇最新服务器,小冰冰传奇开服表
  3. WOT干货大放送:大数据架构发展趋势及探索实践分享
  4. matlab如何看线性趋势线,matlab自动画趋势线指标公式
  5. 简单的医院挂号排队系统(c语言)
  6. dataframe 模仿sql实现窗口函数功能 lead lag dataframe groupy 实现窗口函数
  7. 视频剪辑必备的6个免费素材库~
  8. 逆时针螺旋矩阵的学习
  9. Zookeeper的领导者选举机制解析
  10. 什么是docker –rm选项