|
一個(gè)簡(jiǎn)單的51實(shí)時(shí)操作系統(tǒng)程序,內(nèi)含電路可用
Easy51RTOS仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (31.03 KB, 下載次數(shù): 69)
下載附件
2018-4-18 16:15 上傳
0.jpg (22.4 KB, 下載次數(shù): 64)
下載附件
2018-4-18 16:16 上傳
單片機(jī)源程序(主程序)如下:
- #include <reg51.h>
- #include "os_cfg.h"
- #define TASK_DELAY0 TIME_PER_SEC/50 //任務(wù)0的執(zhí)行頻度
- #define TASK_DELAY1 TIME_PER_SEC/150 //任務(wù)1的執(zhí)行頻度
- #define TASK_DELAY2 TIME_PER_SEC/160 //任務(wù)2的執(zhí)行頻度
- #define TASK_DELAY3 TIME_PER_SEC/2 //任務(wù)3的執(zhí)行頻度
-
- #define uchar unsigned char
- #define uint unsigned int
- void (*(task[]))()={task0,task1,task2,task3};//函數(shù)指針數(shù)組
- /*主函數(shù)*/
- void main()
- {
- uchar i;
- os_timer0_init();
- while(1)
- {
- for(i=0;i<MAX_TASK;i++)
- {
- if(task_delay[i]==0)
- {
- run(task[i]);break;
- }
- }
- }
- }
- /*任務(wù)體0*/
- void task0(void)
- {
- //添加任務(wù)內(nèi)容
- task_delay[0]=TASK_DELAY0;
- }
- /*任務(wù)體1*/
- void task1(void)
- {
- //添加任務(wù)內(nèi)容
- task_delay[1]=TASK_DELAY1;
- }
- /*任務(wù)體2*/
- void task2(void)
- {
- //添加任務(wù)內(nèi)容
- task_delay[2]=TASK_DELAY2;
- }
- /*任務(wù)體3*/
- void task3(void)
- {
- //添加任務(wù)內(nèi)容
- task_delay[3]=TASK_DELAY3;
- }
復(fù)制代碼 os_c.c
- #include "os_cfg.h"
- unsigned char task_delay[MAX_TASK];
- //定時(shí)器0初始化
- void os_timer0_init(void)
- {
- unsigned char i;
- for(i=0;i<MAX_TASK;i++)
- {
- task_delay[i]=0;
- }
- TMOD = (TMOD & 0XF0) | 0X01; //定時(shí)器0工作在模式1,16Bit定時(shí)器模式
- TH0 = (65536-CLOCK/TIME_PER_SEC/12) / 256; //CRY_OSC,TIME_PER_SEC在easycfg.h中配置
- TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256;
- TR0 =1;
- ET0 =1; //開啟定時(shí)器和中斷
- }
- // 系統(tǒng)OS定時(shí)中斷服務(wù)
- void os_timer0(void) interrupt 1
- {
- unsigned char i;
- TH0 = (65536-CLOCK/TIME_PER_SEC/12) / 256; //CRY_OSC,TIME_PER_SEC在easycfg.h中配置
- TL0 = (65536-CLOCK/TIME_PER_SEC/12) % 256;
- for(i=0;i<MAX_TASK;i++)
- {
- if(task_delay[i])
- {
- task_delay[i]--;//每節(jié)拍對(duì)任務(wù)延時(shí)變量減1,減至0后,任務(wù)就緒。
- }
- }
- }
- void run(void (*ptask)())
- {
- (*ptask)();
- }
-
復(fù)制代碼
0.png (41.62 KB, 下載次數(shù): 69)
下載附件
2018-4-18 16:16 上傳
所有資料51hei提供下載:
44915610Easy51RTOS.rar
(88.76 KB, 下載次數(shù): 78)
2018-4-18 09:20 上傳
點(diǎn)擊文件名下載附件
51實(shí)時(shí)操作系統(tǒng) 下載積分: 黑幣 -5
|
|