51单片机操作系统——RTX51 Tiny

这篇具有很好参考价值的文章主要介绍了51单片机操作系统——RTX51 Tiny。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

RTX51 是keil公司开发的一款实时操作系统,其有两个版本:

1.Tiny 2.Full,区别如下:

  1. RTX51 Full :使用四个任务优先权完成同时存在时间片轮转调度和抢先的任务切换 RTX51工作与中断功能相似的状态下 ,信号和信息可以通过邮箱系统在任务之间互相传递 ,你可以从一存储池中分配和释放内存 你可以强迫一个任务等待中断 超时或者是从另一个任务或中断发出的信号或信息。
  2. RTX51 Tiny:仅支持时间片轮转任务切换和使用信号进行任务切换 ,不支持抢先式的任务切换不包括消息历程, 没有存储器池分配程序。

总结来说,Tiny就是RTX51 Full的精简版,只有基本的任务切换功能。

使用方法

使用RTX51操作系统需要有以下要求:

1.keil C51 集成开发环境,其许可证版本必须为PK51,否则无法编译通过。

51单片机操作系统——RTX51 Tiny

2. RTX51_Tiny需要占用 定时器0 、定时器0中断以及寄存器组0。用户程序不可再使用这些资源。

下面介绍STC15W系列单片机如何使用RTX51_Tiny操作系统:

1.首先将RTX51_Tiny的头文件和Lib库文件添加到工程,这两个文件在keil C51的安装目录下

51单片机操作系统——RTX51 Tiny

把这两个文件拷贝到工程目录下,并在Keil中把这两个文件添加到工程。51单片机操作系统——RTX51 Tiny

2.keil配置选项里选择RTX51_Tiny操作系统

 51单片机操作系统——RTX51 Tiny

3.RTX51_Tiny 相关配置 

由于RTX51_Tiny是基于时间片的操作系统,而且它没有优先级的概念,每个任务执行的时间是一定的,即当前任务的时间片达到时,会立即切换到其他就绪的任务,任务的时间片可以通过Conf_tny.A51文件的相关参数修改。

51单片机操作系统——RTX51 Tiny

 INT_CLOCK 是 RTX系统的1个滴答时钟的时间,此处定义为33177是指 1个系统滴答时钟=33177个单片机的机器周期,由于我的单片机时钟的33.1776Mhz,所以其一个机器周期为1/33.1776 ≈ 0.0301us,33177个机器周器就是 999.9us≈1ms。注意:此值最大为65536
TIMESHARING 是 一个时间片等于多少个RTX系统的滴答时钟,此处定义为10,即定义时间片为10ms。
 文章来源地址https://www.toymoban.com/news/detail-477826.html

实验例程:

#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */
#include "reg51.h"

sbit LED=P2^7;
sbit a=P2^2;
sbit b=P2^3;
sbit c=P2^4;
sbit SET=P3^1;	 
sbit ADD=P3^0;	  
sbit SUB=P3^2; 

bit  key_mark,direction,sec;
char state,hour,minute,second,pos;
unsigned char buf[8]={0},zxm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void CS(unsigned char n)
{
   c=n/4;
   b=n%4/2;
   a=n%2;   
}

void Send(unsigned char n)
{
   P0=n;
}

void key()
{
   if(!SET)
   {
      if(++state>3)
	      state=0;
   }
   else if(!ADD)
   {
			 if(state==1)
			 { 		   
					if(++hour>23)
						hour=0;
			 }
			else if(state==2)
			{	     
				 if(++minute>59)
					minute=0;
			}    
			else if(state==3)
			{		    
				 if(++second>59)
				 second=0;
			}
   }
   else if(!SUB)
   { 
   	  if(state==1)
	    { 		   
				if(--hour<0)
					 hour=23;
	    }
			else if(state==2)
			{	     
				 if(--minute<0)
					  minute=59;
			}    
			else if(state==3)
			{		    
				 if(--second<0)
				    second=59;
			}
   } 
}

job0 () _task_ 0  
{                  
  os_create_task (1);                 /* start task 1                         */
  os_create_task (2);                 /* start task 2                         */
  os_create_task (3);
	
	while(1)
	{
		 if(++pos>5)
				pos=0;
		 
		 Send(0);
		 CS(pos);

		 if(pos==2||pos==4)
				Send(zxm[buf[pos]] | 0x80); 
		 else
				Send(zxm[buf[pos]]);  
		 
     os_wait(K_TMO,1,0);	 
	}
}

job1 () _task_ 1  
{	
	hour=12;
	state=0;
	
  while (1)  
	{             
    if(sec)
	  {
			sec=0;
			if(state==0)
			{
				if(++second>59)
				{
					 second=0;
					 if(+++minute>59)
					 {
							minute=0;
						if(++hour>23)
							 hour=0;
					 }			
				}
			}	
			buf[0]=second%10;
			buf[1]=second/10;
			buf[2]=minute%10;
			buf[3]=minute/10;
			buf[4]=hour%10;
			buf[5]=hour/10;				
   }		
 }
}

job2 () _task_ 2  
{
  while (1)
	{		
    if((!SET || !ADD || !SUB) && !key_mark)
	  {
	    os_wait(K_TMO,10,0);
			if(!SET || !ADD || !SUB) 
			{
				 key_mark=1;
				 key();		  
			}
		}
		else if(SET && ADD && SUB)
			 key_mark=0;		
  }
}

job3() _task_ 3
{
	int n=0;
	while(1)
	{
		if(++n==300)
		{
			n=0;
			sec=1;
			LED=~LED;
		}
		os_wait(K_TMO,1,0);
	}
}

到了这里,关于51单片机操作系统——RTX51 Tiny的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】按键操作(单个灯闪烁&&流水灯)

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 ⭐注意 🍔同一个灯  🏳️‍🌈效果 🏳️‍🌈代码 🏳️‍🌈问题分析 ⭐注意 ⭐P3_1=0,表示按下按键  ⭐为什么while(

    2024年02月01日
    浏览(70)
  • 51单片机中断系统

    我们先来举一个生活事例: 你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。 对于

    2024年02月05日
    浏览(54)
  • 基于51单片机的单片机倒车雷达报警系统

      前言 至今世界汽车工业通过了近122年的进展,今世汽车已经超级成熟和普遍了。汽车已经渗透于国防建设、国民经济和人类生活的各个领域当中,成为人类生存必不可少的、最要紧的交通工具,尽管每辆车都有后视镜,但不可幸免地都存在一个后视盲区,倒车雷达那么能够

    2024年02月04日
    浏览(49)
  • 【MCS-51】51单片机指令系统大全

    指令是指挥微型计算机工作的的计算机命令,对于51单片机来说,其主要使用的指令有两种形式: 机器语言 指令和 汇编语言 指令。 机器语言指令是指使用 二进制代码 表示的指令; 汇编语言指令是指使用 容易我们记忆的缩写符号 表示的机器语言。 下面我使用的是使用 汇

    2024年02月03日
    浏览(50)
  • 51单片机的中断系统

    程序中断 CPU 执行现行程序 的过程中,出现 某些急需处理的异常情况或特殊请求 ,CPU 暂时中止现行程序 ,而转去对 异常情况或特殊请求进 行处理,处理完毕后再 返回现行程序断点处 ,继续执行原程序。 中断可以实现的主要功能 CPU与I/O设备并行工作。 CPU切换到内核态,

    2024年02月03日
    浏览(42)
  • 单片机/嵌入式小白教程—硬件(三)51单片机最小系统

    目录 简介 51单片机器件原理图 复位电路 供电电路 晶振电路 下载电路 最小系统原理图  更加方便的51单片机 传统51单片机最小系统包含:复位电路、供电电路、晶振电路、下载电路   其中, 第9脚(RST)为复位引脚, 第40脚(VCC)第20脚(GND)为供电引脚, 第19脚(XTAL1)第

    2024年02月08日
    浏览(71)
  • 单片机设计基于51单片机的智能风扇控制系统设计与实现

      我们常见的电风扇一般只有四、五个风速档,用的是人工开关,而且并不是每个人家里都会有空调,或者在一些小型的工厂或者一些小型加工厂,这些地方都可能没有配备大型的中央空调系统这些东西,所以这些东西往往都会采用风扇这种小成本的东西来代替,但是不清楚

    2024年02月03日
    浏览(65)
  • 基于51单片机的通讯聊天系统

    通过编写51单片机通讯聊天程序,掌握51单片机的各个模块的知识点和运用C语言编写51单片机的能力。 用51单片机与口袋开发板设计实现一个单片机与电脑串口助手实现通讯功能的程序。程序的主要功能如下: 1 OLED初始化显示Welcome to Bluetooth communication! 字符串。 2 程序开始时

    2023年04月08日
    浏览(29)
  • 51单片机最小系统制作完整流程

    目录 一、51单片机最小系统原理图 电源电路 晶振电路 按键复位电路 二、51单片机最小系统制作元器件表 三、51单片机最小系统实物展示   51单片机最小系统是51单片机能够正常运行的最基本电路,由电源电路、晶振电路和按键复位电路组成。 电源电路         电源电路中在

    2023年04月10日
    浏览(39)
  • 基于51单片机的智能教室系统

    功能: 1.通过LCD实时温度、光照强度、人数以及手自动模式 2.温度过高且有人的情况下打开空调 3.光强过弱的时候且有人的情况下打开照明灯 4.通过两个运放电路模拟进人出人 5.通过按键调整手自动模式,手动模式可以手动打开照明灯和空调 哔哩哔哩视频演示链接跳转,请直

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包