系统介绍以及准备工作
1、RTX51_Tiny需要占用 定时器0 、定时器0中断以及寄存器组0。用户程序不可再使用这些资源。
2、首先将RTX51_Tiny的头文件和Lib库文件添加到工程,这两个文件在keil C51的安装目录下,我的KEIL装载G盘,所以路径为:G:KEIL5MDKC51RtxTiny2SourceCode 大家可以参考一下。
3、需要在keil中打开系统支持
4、程序中需要包含 “RTX51TNY.h” 头文件 #include “RTX51TNY.H”
代码
1、不再需要main()函数,使用任务0来创建其它所需的任务, 标识符 task tasknumber
任务创建格式 void your_task_name (void) task task_number
注意:任务函数的类型必须是void类型,任务里面不允许有返回值
2、函数介绍:
os_create_task() @parameter:task_number
os_delete_task() @parameter:task_number
3、每一个任务里面使用while(1)
4、实例代码:
#include 'rtx51tny.h'
#include 'stdio.h'
#include 'reg51.h'
/*********************
hhm_master@163.com
2020/02/28
*********************/
#define u8 unsigned char
#define u16 unsigned short int
#define u32 unsigned long int
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
void delay(u16 time)
{
u16 i,j;
for(i=time;i>0;i--)
for(j=110;j>0;j--);
}
void Creat_Task(void) _task_ 0
{
os_create_task(1);
os_create_task(2);
os_create_task(3);
os_delete_task(0);
}
void my_Task1(void) _task_ 1
{
while(1)
{
//printf('task1 run ');
P1_0 = 0;
P1_1 = 1;
P1_2 = 1;
}
}
void my_Task2(void) _task_ 2
{
while(1)
{
P1_0 = 1;
P1_1 = 0;
P1_2 = 1;
//printf('task2 run ');
}
}
void my_Task3(void) _task_ 3
{
while(1)
{
P1_0 = 1;
P1_1 = 1;
P1_2 = 0;
//printf('task3 run ');
}
}