⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 模仿ucos ii和RTX Tiny写的一个小操作系统
💻 C
字号:

#include <AT89X52.H>

#include "os_core.h"
#include "main.h"
#include "task_switch.h"
#include "sem.h"
#include "uart.h"
#include "q.h"

//任务0
 void task_0(void)  
{
  static uint8 i ;
 OSSemCreat(0,0);
 while(1)
 {
    i++;
    P0=0x01<<(i%8);
    OSTaskSemPend(0,0);
  }
}

//任务1
 void task_1(void) 	
{ 
  static uint8 i,err ; static void * msg;
 while(1)
 {  
    i++;
    P1=0x01<<(i%8);
    OSTaskSemPend(0,100); 
	msg=OSTaskWaitMsg(&err,0);
    prints(msg);
  }
}

//任务2
void task_2(void)
{
 static uint8 i ;

 while(1)
 {  
    i++;
    P2=0x01<<(i%8	);
	OSWait(K_TMO,100);
	sendbyte(getbyte());  	
	prints("I send a sem\n");    
    OSSemPost(0);
  }
}
//任务3
void task_3(void)
{
 static uint8 i ;
 while(1)
 {  
    i++;
    P3=0x01<<(i%8);
   	OSWait(K_TMO,255);
    OSSendMsg("I get the msg\n");
  }
}
//任务IDLE
void task_idle(void)
{
  OSSched();
  while(1)
 {
  }
}	


///////////////////////////////////主函数//////////////////////////////////////////////
void main(void)
{

 OS_Init();       //OS初始化

 uart_init();

 OS_Task_Create(0,0,(uint16)(&task_0),OS_TCB[0].Task_SP);   //创建任务0

 OS_Task_Create(0,1,(uint16)(&task_1),OS_TCB[1].Task_SP);   //创建任务1

 OS_Task_Create(1,2,(uint16)(&task_2),OS_TCB[2].Task_SP);   //创建任务2

 OS_Task_Create(1,3,(uint16)(&task_3),OS_TCB[3].Task_SP);   //创建任务3

 OS_Task_Create(255,TASK_NUM-1,(uint16)(&task_idle),OS_TCB[TASK_NUM-1].Task_SP);   //创建任务idel

 OS_Start();      //OS启动

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -