乙個簡單的51作業系統

2021-08-08 10:19:54 字數 1287 閱讀 8245

/* os_cfg.h

* ** */

#include "reg51.h"

#define time_per_sec 200 //定義任務時鐘頻率,200hz

#define clock 22118400 //定義時鐘晶振,單位hz

#define max_task 4 //定義任務數量

/*函式變數宣告,在需要用以下函式或變數的檔案中包含此檔案即可*/

extern void task0();

extern void task1();

extern void task2();

extern void task3();

extern unsigned char task_delay[max_task];

extern void run(void (*ptask)());

extern void os_timer_init(void);

/* os_c.c

* */

#include "os_cfg.h"

//定時器0初始化

void os_timer0_init(void)

/*系統os定時中斷服務*/

void os_timer0(void)interrupt 1

}/*指向函式的指標函式*/

void run(void (*ptask)())

/* main.c

* */

#include "os_cfg.h"

#define task_delay0 time_per_sec/1 //任務執行頻率為1hz

#define task_delay0 time_per_sec/2 //任務執行頻率為2hz

#define task_delay0 time_per_sec/10 //任務執行頻率為10hz

#define task_delay0 time_per_sec/20 //任務執行頻率為20hz

void (*code task()) = ; //獲取任務pc指標

sbit led0 = p1^0;

sbit led1 = p1^1;

sbit led2 = p1^2;

sbit led3 = p1^3;

void main(void)

} }}void task0(void)

void task1(void)

void task2(void)

void task3(void)

}

乙個簡單的作業系統

電腦上電後,bios在自檢後會根據使用者指定的裝置啟動作業系統。假設我們指定軟盤為啟動盤,bios會把軟盤的第乙個扇區 512位元組 讀取到記憶體的0x7c00處,如果這個扇區的最後兩個位元組為0xaa55,bios會跳轉到0x7c00處開始執行。我們可以利用這樣乙個過程做乙個簡單的作業系統。我們的...

乙個小作業系統

1 1 chapter1 a boot.asm 乙個 作業系統 可以只有20行 把下面這段 用nasm編譯一下 nasm boot.asm o boot.bin org 07c00h 告訴編譯器程式載入到7c00處 mov ax,cs mov ds,ax mov es,ax call dispstr...

作業系統開發之 乙個簡單的Bootsect

先嚇唬一下讀者朋友呵呵,直接發 這是uos作業系統的bootsect 有興趣的朋友能夠增加我們,在最後 檔名稱 bootsect.asm 檔案建立者 imcjy 檔案編碼 utf 8 狀態 o build 3 檔案建立日期 2015年7月24日 檔案最後改動日期 2015年8月12日 備註 本檔案為...