久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機小小調度器源程序 操作系統相關
[打印本頁]
作者:
年華七堇1
時間:
2019-5-11 08:45
標題:
單片機小小調度器源程序 操作系統相關
一個簡易的調度器
0.png
(7.51 KB, 下載次數: 76)
下載附件
2019-5-17 06:24 上傳
單片機源程序如下:
#include <stc89c51.h>
/****小小調度器開始**********************************************/
#define MAXTASKS 3
volatile unsigned char timers[MAXTASKS];
#define _SS static unsigned char _lc=0; switch(_lc){default:
#define _EE ;}; _lc=0; return 255;
#define WaitX(tickets)??do {_lc=(__LINE__+((__LINE__%256)==0))%256; return tickets ;} while(0); case (__LINE__+((__LINE__%256)==0))%256:
#define RunTask(TaskName,TaskID) do { if (timers[TaskID]==0) timers[TaskID]=TaskName(); }??while(0);
#define RunTaskA(TaskName,TaskID) { if (timers[TaskID]==0) {timers[TaskID]=TaskName(); continue;} }? ?//前面的任務優先保證執行
#define CallSub(SubTaskName) do {unsigned char currdt; _lc=(__LINE__+((__LINE__%256)==0))%256; return 0; case (__LINE__+((__LINE__%256)==0))%256:??currdt=SubTaskName(); if(currdt!=255) return currdt;} while(0);
#define InitTasks() {unsigned char i; for(i=MAXTASKS;i>0 ;i--) timers[i]=0; }
#define UpdateTimers() {unsigned char i; for(i=MAXTASKS;i>0 ;i--){if((timers[i-1]!=0)&&(timers[i-1]!=255)) timers[i-1]--;}}
#define SEM unsigned int
//初始化信號量
#define InitSem(sem) sem=0;
//等待信號量
#define WaitSem(sem) do{ sem=1; WaitX(0); if (sem>0) return 1;} while(0);
//等待信號量或定時器溢出, 定時器tickets 最大為0xFFFE
#define WaitSemX(sem,tickets)??do { sem=tickets+1; WaitX(0); if(sem>1){ sem--;??return 1;} } while(0);
//發送信號量
#define SendSem(sem)??do {sem=0;} while(0);
/*****小小調度器結束*******************************************************/
sbit LED1 = P2^1;
sbit LED2 = P2^2;
sbit LED0 = P2^5;
unsigned char task0(){
_SS
while(1){
WaitX(50);
LED0=!LED0;
}
_EE
}
unsigned char??task1(){
_SS
while(1){
WaitX(100);
LED1=!LED1;
}
_EE
}
unsigned char??task2(){
_SS
while(1){
WaitX(100);
LED2=!LED2;
}
_EE
}
void InitT0()
{
TMOD = 0x21;
IE |= 0x82;??// 12t
TL0=0Xff;
TH0=0XDB;
TR0 = 1;
}
void INTT0(void) interrupt 1 using 1
{
TL0=0Xff;? ? //10ms 重裝
TH0=0XDB;//b7;
UpdateTimers();
RunTask(task0,0);//任務0具有精確按時獲得執行的權限,要求:task0每次執行消耗時間<0.5個 ticket
}
void main()
{
InitT0();
InitTasks(); //初始化任務,實際上是給timers清零
while(1){
//? ?? ?? ???RunTask(task0,0);
RunTaskA(task1,1);//任務1具有比任務2高的運行權限
RunTaskA(task2,2);//任務2具有低的運行權限
}
}
復制代碼
所有資料51hei提供下載:
小小調度器.zip
(11.96 KB, 下載次數: 40)
2019-5-11 08:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
51hei團團
時間:
2019-5-17 06:25
好資料,51黑有你更精彩!!!
作者:
mmlyy2001
時間:
2022-12-7 14:21
編譯后出現test.c(99): warning C294: unreachable code。這個怎么消除呢?
作者:
_風云無忌_
時間:
2022-12-7 19:38
樓主棒棒的
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久九九
|
国产成人精品一区二区三区在线
|
中文字幕日韩欧美一区二区三区
|
久久精品免费
|
国产精品久久久久久吹潮
|
日韩精品在线观看一区二区三区
|
天天干天天谢
|
在线视频中文字幕
|
www.夜夜骑
|
一级片成人
|
伊人久麻豆社区
|
久久久久国产成人精品亚洲午夜
|
日韩国产在线
|
精品乱码一区二区
|
h视频免费在线观看
|
中文字幕中文字幕
|
欧美一级做性受免费大片免费
|
欧美精品网站
|
国产精品久久久久久久久久免费看
|
五月槐花香
|
欧美激情 一区
|
国产一区二区精品在线
|
欧美一级视频
|
日韩免费成人av
|
久久精品免费
|
亚洲成av人影片在线观看
|
亚洲精品在线视频
|
日韩欧美第一页
|
成人免费在线观看视频
|
日韩综合网
|
国精产品一区一区三区免费完
|
精品国产18久久久久久二百
|
精品一区二区三区中文字幕
|
久久黄色精品视频
|
日韩中文一区二区三区
|
超碰操
|
精品亚洲一区二区三区
|
香蕉久久av
|
国产精品久久久久久久久久
|
在线国产99
|
国产人成精品一区二区三
|