上次发布了一个在 dos 下运行的 os 内核 ----- 任务调度器。这次我把 8051 下的任务调度器也发布出来,虽然在 8051 下 os 实用性不高,但是用作学习目的,还是相当有用。
这个 os 还是一样的简洁,纯 c, 没有一条汇编指令,当然,代价是效率的降低。同时我把 Suspend 和 resume 两个函数去掉了,如果需要,可以从 dos os 代码中找到。
主程序如下,可以通过 uart 窗口观察效果。
#include <REG51.H>
#include <stdio.h>
#include "os.h"
void InitializeComPort()
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xF0;
TR1 = 1;
TI = 1;
}
char putchar (char c)
{
SBUF = c;
while (!TI);
return c;
}
char c = '1';
void Test()
{
while (1) {
putchar(c);
Sleep(1000);
}
}
void Test1()
{
while (1) {
while (!RI) Sleep(10);
RI = 0;
c = SBUF;
}
}
void main (void)
{
InitializeComPort();
InitializeTasks();
CreateTask(0, (int) Test);
CreateTask(1, (int) Test1);
RunTasks();
while (1) {
}
}
我要求不高,同时为了提高人气,超过30楼就公布完整的源代码。 |