上次发布了一个在 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楼就公布完整的源代码。
|