📄 userc.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 + -