51单片机上实时多任务操作系统-教程

  • RTX51是用与8051系列的实时多任务RTOS 1。
  • RTX 两个版本区别:
    1. RTX51 FULL:允许4个优先任务循环和切换,并行利用终端,支持邮箱系统的信号和消息传递
    2. RTX TINY 子集,不支持占先式任务切换,不能进行信息处理
  • RTX的循环任务调度

    • 准并行
    • 利用内部定时器的中断实现定时
    • 使用时不需要包含main()函数,自动从任务0开始
    • 如果包含main()函数,则需要利用os-start-system 或 os-creat-task来启动

Example1:

    ps:注意事项:

    关于Keil报错 *** FATAL ERROR L210: I/O ERROR ON INPUT FILE:缺少RTX51.LIB

    需要在项目里面选择操作系统,RTX-51TINY

    

例子:

 程序启动时从任务0开始,同时创建任务1,任务 1等待任务0产生信号0,信号量为0时任务挂起,为1时清除信号标准并继续执行任务-》启动任务2,任务2执行一段时间后删除自身任务。

  

#include <rtx51tny.h>
#include <stc.H>
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
long cnt;
job0() _task_ 0
{
    os_create_task(1);
    while(1)
    {
        LED1=~LED1;
        os_wait2(K_TMO,10);
        cnt++;
        if(cnt==20)
            os_send_signal(1);
    }
}
job1() _task_ 1
{
    while(1)
    {
        LED2=~LED2;
        os_wait(K_SIG,0,0);
        os_create_task(2);
        cnt=0;
    }
}
job2() _task_ 2
{
        LED3=0;
        os_wait2(K_TMO,50);
        LED3=1;
        os_delete_task(2);
        return 0;
}
  • 优先级:

  当job0 发送信号到job1之后,job1并不是立即执行,而是等待job0的超时出现后才开始执行,默认情况下。所有优先级均为0

    优先级可以定为0-3;

重新定义如下:

  

job1() _task_ 1 _priority_1{

}

此时,当1个信号量到达之后,将马上开始执行。
  • 中断

  RXT51可以与中断并行工作,中断函数可以与RTX51通讯,向RTX51的任务发送信号或消息

  RTX51-Tiny 本身不包括任何中断管理,对中断允许寄存器的操作同普通一样。

  由于内部使用了定时器0,因此不允许禁止定时器0中断  

    isr_send_message /isr_recv_messge 从中断中发送或接受信息

  • 时间片切换

  时间片的持续时间可以通过配置文件conf_tny.a51中变了TIMESHARING来设置

  • RTX51 TINY配置

  1. INT_CLOCK 时钟间隔
  2. TIMESHARING 循环任务切换时间片
  3. INT_REGBANK 定义哪一个寄存器作为中断 默认组1
  4. RANTOP 定义TINY使用内部RAM的最高地址 STC系列可以使用FFH
  5. FREE_STACK 定义自由栈区的大小,以字节为单位,默认值20
  6. STACK_ERROR 当RTX检测到栈区出错时,将启用该宏
时间: 2024-10-06 00:10:56

51单片机上实时多任务操作系统-教程的相关文章

教你如何在51单片机上模拟串口通信!!!

我们可以不使用单片机本身带有的串口,而自己用程序去模拟一个串口并达到和本身的串口具有同样的功能, 首先,我们需要用到CH340串口模块,大家可以上某宝自行购买. 正面: 反面: 然后我们需要了解一下这串口模块上的引脚: 5V  :与VCC短路为5V TLL输出(电源和信号输出都是5V) VCC:可以与3.3V和5V用跳帽连接 3.3V:与VCC短路为3.3V TLL输出(电源和信号输出都是3.3V) TXD:发送数据端口(与单片机上的接收引脚用杜邦线连接) RXD:接收数据端口(与单片机上的发送

使用51单片机点亮我们的点阵灯

通过前面我们都知道点亮我们的不管是点阵,数码管,还是LED灯,不仅要熟悉我们的代码还要会看我们的原理图和真值表,所以我们如果真的要写代码倒是其次的,首先我们得学会看我们的原理图和真值表,但是认识那个我们可以在网上找教程的,所以啊我这里就不去重诉别人的话了.那么我们今天要讨论什么问题勒!?我们今天讲一下点阵吧,点阵说实话对于单片机来说虽然并不是最重要的,但是点阵却是我们单片机中花样最多的之一.可能说到这么有人会说了,学了单片机我们有什么用呢,那么我们可以留意一下我们身边的一些物品,比如我们常在街上

ESP8266 AT指令开发(基于STC89C52单片机): 测试下诱人的程序(51单片机,8266,MQTT远程通信控制)

前言 实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器, 简而言之: 51单片机+ESP8266用AT指令实现实现MQTT,(连接的本人云服务器上的MQTT服务器软件) ESP8266订阅的主题:device/Wi-Fi的MAC地址 ESP8266发布的主题:user/Wi-Fi的MAC地址 下载单片机程序 安装APP 调整拨动开关-51单片机和ESP8266通信 跳线帽 打开APP 选择添加设备 手机连接自家的路由器,输入路由器

工业自控 西门子S7-200PLC教程 51单片机视频教程 Proteus视频教程 Protel DXP 教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

工业自控西门子S7-200PLC教程 51单片机视频教程 Proteus视频教程 Protel DXP 教程 更多&gt;

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

真正意义上的多任务、多用户操作系统

w https://books.google.com/books?id=w7-8Im-JkuQC&pg=PA6&lpg=PA6&dq=Linux+真正意义上的多任务.多用户操作系统

关于51单片机IO引脚的驱动能力与上拉电阻

单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. 单片机的输出电流,很大程度上是取决于引脚上的外接器件. 单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”:单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”. 这些电流一般是多少?最大限度是多少? 这就是常见的单片机输出驱动能力的问题. 早期的 51 系列单

51单片机入门基础教程,视频、课件、源码免费下载

今天也是分享资料,不过是很大量的学习资料,足够您国庆七天在家闭关学习了,4G的51单机片开发学习视频和资料,包括每一节的视频.课件和源码!内容很大,想要更多的单机片学习.交流和实战的机会,可以上闯客网论坛,和同行并肩同行,一起学习 图一 下面就给大家分享单片机的基础知识PCB的种类1. 单面板(只在一个面走线)2. 双面板(在两个面都走线)3. 多层板(4.6.8.10......)(出两个面外还有内层)4. 柔性PCB(触摸屏等的连接) 图二 PCB的制作步骤(工业企业环境下的PCB制作步骤)

初识单片机(51单片机学习之旅系列)

作为电子信息工程专业的一名大二学生,单片机目前仅仅是我脑海中出现过的名词.既没有过很深的认识,更没有系统的学习和仔细的研究,因此在单片机应用上还是一个不折不扣的小白菜.初次听说单片机还是在大二第一学期的电子电工认识实习课上,老师介绍了电子系统领域几大器件:单片机.DSP.ARM.FPGA等.我便从中得知单片机是最基础的一个,并且对于此类只是比较感兴趣,但对于我的专业大三才开这门课程,为了更好地掌握这门技术,便决定开始学习单片机.我选择的是最基础的51单片机. 在开发板还未到手中之前,查找一些基础