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

📄 userc.c

📁 一个小的操作系统包括应用程序很有参考价值
💻 C
字号:
#include <reg52.h>   //插入52寄存器声明

#include <minix.h>   //插入内核文件

//线程1
void task_1(void)             
{
 static unsigned long aa=0;
 for (;;)
  {
   for (aa=0;aa<0xff;aa++);
   aa=OS_GET_READY(&task_1);//获取线程状态
   P0=P0^0X01;
   OS_TASK_DLY(1);          //等待一个时钟片轮
  }
}

//线程2
void task_2(void)
{
 static unsigned long bb=0;
 for (;;)
  {
   for (bb=0;bb<0x3ff;bb++);
   bb=OS_GET_TASK_ID(&task_2);//获取线程ID
   P0=P0^0x02;
   OS_TASK_DLY(1);            //等待一个时钟片轮
  }
}

//线程3
void task_3(void)
{
 static unsigned long cc=0;
 for (;;)
  {
   for (cc=0;cc<0x7ff;cc++);
   cc=OS_GET_TASK_ID((void (*))&task_3);//获取线程ID
   P0=P0^0x04;                
   OS_TASK_DLY(1);                      //等待一个时钟片轮
   OS_SET_READY(&task_1,0);             //停止线程1
  }
}

//空闲线程该线程不能使用OS_TASK_DLY函数延时
void task_free(void)
{
 static unsigned long dd=0;
 for (;;)
  {
   if (OS_GET_READY(&task_1))
        {;}
	 else
	    {OS_SET_READY(&task_1,1);}//激活线程1
   dd++;
   P0=P0^0X08;
  }
}


void main (void)
{
 OS_CREATE_TASK(&task_1,1,0,SP_POINTER+60);
 OS_CREATE_TASK(&task_2,1,1,SP_POINTER+90);
 OS_CREATE_TASK(&task_3,1,2,SP_POINTER+120);
 OS_CREATE_TASK(&task_free,1,255,SP_POINTER+150);
 OS_START_TICK();//开时钟
 for (;;);
}

⌨️ 快捷键说明

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