亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtos.c

?? 完全用C語言編寫的C51單片機多任務操作系統,任務調度基于主動放棄,特別適合STC單片機.
?? C
字號:
#include "reg52.h"
#include "ABSACC.H"
#include "device.h"

#include "rtos.h"


TCB xdata task_tcb[TASK_USER];


//#define usr_stack ((unsigned char xdata *)0);



UCHAR data TASK_SCHEDULE_IDX,SYS_STACK_BOTM;

unsigned char code seeki[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
bdata char cnt_idx=0;
sbit cnt0 = cnt_idx^0;
sbit cnt1 = cnt_idx^1;
sbit cnt2 = cnt_idx^2;
sbit cnt3 = cnt_idx^3;
sbit cnt4 = cnt_idx^4;
sbit cnt5 = cnt_idx^5;
sbit cnt6 = cnt_idx^6;
sbit cnt7 = cnt_idx^7;
unsigned int  cntx[8];
void Timer0() interrupt 1
{
	unsigned char i;

	TIME2MS;
	
	for(i = 0; i < 8; i++)
	{
		if(cnt_idx&seeki[i])
		{
			cntx[i]++;/*if((cnt_idx>>i)&0x01)cntx[i]++;*/
			if(cntx[i] >= task_tcb[i].task_sleepcnt)
			{
				if((task_tcb[i].task_stat&TASKRUN) == 0)
				{
					cntx[i] = 0;
					cnt_idx &= ~seeki[i];
					task_tcb[i].task_stat = TASKRDY;// TASK READY;
				}	
			}
		}
	}	
}
void init_timer0(void)
{
	TMOD = (TMOD & 0XF0) | 0X01;
	TIME2MS;
	TR0 = 1;
	ET0 = 1;
	TF0 = 0;
}

void start_cnt(UCHAR idx)
{
	if(idx>=8)return;
	cntx[idx] = 0;
	cnt_idx |= seeki[idx];
}

void task_init()
{

	UCHAR i;
	uint addr = USR_EXR_MEM_TOP;

	for(i=0;i<TASK_USER;i++)
	{
		task_tcb[i].task_id = i;
		task_tcb[i].task_stack_top = addr;
		task_tcb[i].task_stat = TASKBLOCK;
		task_tcb[i].ev_wait = 0;
		addr -= TASK_STACK_SIZE;
	}

	TASK_SCHEDULE_IDX = 0;
	init_timer0();

}


void task_switch(void)
{
	unsigned char i ;
	unsigned int j;
	task_tcb[TASK_SCHEDULE_IDX].task_stat = TASKBLOCK;

	i = TASK_SCHEDULE_IDX;
	while(1)
	{
		i++;
		if(i>=TASK_USER)i = 0;
		if(task_tcb[i].task_stat==TASKRDY)break;
	}
	task_tcb[i].task_stat = TASKRUN;
	if(i==TASK_SCHEDULE_IDX)return;
	

	j = task_tcb[TASK_SCHEDULE_IDX].task_stack_top;
	EA = 0;

	task_tcb[TASK_SCHEDULE_IDX].task_stack_len = SP-SYS_STACK_BOTM;

	while(SP>SYS_STACK_BOTM)
	{
		XBYTE[j--] = DBYTE[SP--];
	}

	XBYTE[j--] = ACC;
	XBYTE[j--] = PSW;
		
	TASK_SCHEDULE_IDX = i;

	i = PSW&0x18;
	/*
	i >>= 3;
	i *= 8;// equ i<<=3
	*/
	i += 7;
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j--] = DBYTE[i--];
	XBYTE[j] = DBYTE[i];

	SP = SYS_STACK_BOTM+task_tcb[TASK_SCHEDULE_IDX].task_stack_len;

	j = task_tcb[TASK_SCHEDULE_IDX].task_stack_top;

	while(SP>SYS_STACK_BOTM)
	{
		 DBYTE[SP--]  = XBYTE[j--];

	}
	ACC = XBYTE[j--];
	PSW = XBYTE[j--];

	i = PSW&0x18;
	i >>= 3;
	i += 7;
	DBYTE[i--] = XBYTE[j--]; 
	DBYTE[i--] = XBYTE[j--];	
	DBYTE[i--] = XBYTE[j--]; 
	DBYTE[i--] = XBYTE[j--];	
	DBYTE[i--] = XBYTE[j--]; 
	DBYTE[i--] = XBYTE[j--];	
	DBYTE[i--] = XBYTE[j--]; 
	DBYTE[i] = XBYTE[j];	


	
	SP = SYS_STACK_BOTM+task_tcb[TASK_SCHEDULE_IDX].task_stack_len;

	EA = 1;

	
}
void task_sleep(uint time)
{
	if(time>1)time	/= 2;
	start_cnt(TASK_SCHEDULE_IDX);
	task_tcb[TASK_SCHEDULE_IDX].task_sleepcnt = time;
	task_switch();
}
void start_task(void)
{

	uint j;
	EA = 0;

	SP = SYS_STACK_BOTM+task_tcb[0].task_stack_len;

	j = task_tcb[0].task_stack_top;
	while(SP>SYS_STACK_BOTM)
	{
		 DBYTE[SP--]  = XBYTE[j--];
	}
	ACC = XBYTE[j--];
	PSW = XBYTE[j];

	SP = SYS_STACK_BOTM+task_tcb[0].task_stack_len;
	TASK_SCHEDULE_IDX = 0;
	EA = 1;

}
void task_creat(unsigned int task,unsigned char taskid)
{

	UCHAR i;
	unsigned int j;
	TCB *ptcb; 
	if(taskid>=TASK_USER)return;

	ptcb = &task_tcb[taskid];
	ptcb->task_id = taskid;
	ptcb->task_stat = TASKRDY;
	
	i = SP;
	
	j = ptcb->task_stack_top;
	
	XBYTE[j--]= *(UCHAR *)&task;
	XBYTE[j--] = *((UCHAR *)&task+1);



	ptcb->task_stack_len = i - SYS_STACK_BOTM;
	
	while(i>SYS_STACK_BOTM)
	{
		XBYTE[j--] = 0;
		i--;
	}	
	
}


void task_event_send(unsigned char taskid,unsigned char ev)
{
	
	if(taskid>=TASK_USER)return;

	if((task_tcb[taskid].ev_wait & ev)==0)return;

	task_tcb[taskid].task_stat =  TASKRDY;

	task_tcb[taskid].ev_wait &= ~ev;
}

unsigned char  task_event_wait(unsigned char ev)
{
	task_tcb[TASK_SCHEDULE_IDX].ev_wait = ev;
	task_switch();

	return task_tcb[TASK_SCHEDULE_IDX].ev_wait;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线看| 国产精品久久久久久一区二区三区 | 成人欧美一区二区三区白人| 精品少妇一区二区三区免费观看| 欧美日韩综合一区| 欧美性受xxxx黑人xyx| 欧美三级韩国三级日本三斤| 欧美亚洲动漫精品| 欧美日韩一区二区三区高清| 56国语精品自产拍在线观看| 91精品欧美久久久久久动漫| 精品久久国产字幕高潮| 精品99久久久久久| 中文字幕一区二区三区乱码在线| 亚洲欧美日韩国产中文在线| 一区二区三区日韩在线观看| 日本午夜一区二区| 国产美女久久久久| 97精品国产露脸对白| 欧美男同性恋视频网站| 欧美va在线播放| 国产精品久久免费看| 一区二区三区不卡视频在线观看| 日韩国产欧美三级| 国产成人丝袜美腿| 日本高清无吗v一区| 日韩一区二区三区高清免费看看| 久久久久久久久久久久电影| 亚洲婷婷国产精品电影人久久| 亚洲国产精品影院| 国产一级精品在线| 在线欧美日韩精品| 精品成人免费观看| 亚洲一区在线电影| 国产一区二区三区免费| 色婷婷综合久久久| 久久影音资源网| 亚洲成av人片一区二区| 成人av电影免费观看| 91精品在线免费| 《视频一区视频二区| 激情欧美一区二区三区在线观看| 91黄色免费版| 欧美国产一区在线| 免费成人美女在线观看| 色综合天天做天天爱| 久久久久99精品国产片| 午夜欧美大尺度福利影院在线看| 国产成人精品一区二区三区网站观看| 欧美少妇一区二区| 中日韩av电影| 国产老肥熟一区二区三区| 欧美人与z0zoxxxx视频| 亚洲视频狠狠干| 国产98色在线|日韩| 久久综合久久综合久久| 日日嗨av一区二区三区四区| 色丁香久综合在线久综合在线观看| 中文字幕亚洲欧美在线不卡| 国产一区在线精品| 精品久久久久久久久久久久久久久| 亚洲v精品v日韩v欧美v专区| 91久久国产最好的精华液| 国产精品国产三级国产aⅴ中文 | 亚洲女爱视频在线| 成人深夜视频在线观看| 久久久噜噜噜久噜久久综合| 视频在线观看国产精品| 欧美久久久影院| 亚洲福利电影网| 欧美日产在线观看| 亚洲午夜久久久久久久久电影网| 色av一区二区| 亚洲国产综合在线| 欧美日韩国产区一| 日韩高清一级片| 日韩一区二区三区精品视频| 蜜臀国产一区二区三区在线播放| 欧美高清激情brazzers| 欧美bbbbb| 欧美大肚乱孕交hd孕妇| 激情文学综合插| 国产日韩影视精品| av一区二区久久| 一区二区三区四区精品在线视频| 在线欧美日韩国产| 日韩高清不卡在线| 久久午夜羞羞影院免费观看| 国产在线看一区| 中文字幕日韩一区二区| 欧美自拍偷拍一区| 美日韩黄色大片| 国产欧美日韩精品一区| 成人黄色免费短视频| 亚洲一区在线视频| 26uuu色噜噜精品一区二区| 国产精品一区二区三区四区| 国产精品人人做人人爽人人添| 91猫先生在线| 免费成人av资源网| 精品伊人久久久久7777人| 国产精品一二三在| 欧美日韩情趣电影| 天天色图综合网| 国产午夜精品在线观看| 色婷婷av一区二区三区大白胸| 久久久久久久av麻豆果冻| 国产在线播精品第三| 在线播放/欧美激情| 成人一道本在线| 国产风韵犹存在线视精品| 激情国产一区二区| 激情综合色丁香一区二区| 视频在线观看国产精品| 日韩avvvv在线播放| 日本不卡免费在线视频| 奇米精品一区二区三区在线观看一| 午夜精品久久久久久久 | 亚洲国产精品高清| 国产欧美1区2区3区| 中文在线资源观看网站视频免费不卡| 国产欧美视频一区二区| 国产精品免费视频一区| 亚洲欧美偷拍卡通变态| 亚洲一二三专区| 91在线云播放| 色偷偷久久人人79超碰人人澡 | 亚洲三级小视频| 一区二区三区国产豹纹内裤在线| 一区二区在线看| 日韩av二区在线播放| 狠狠色综合色综合网络| 成人免费av资源| 日本精品一区二区三区高清 | 国产a区久久久| 色综合色综合色综合| 欧美日韩亚洲综合在线| 欧美大片免费久久精品三p| 久久久久久久电影| 一区二区三区欧美日| 美女网站色91| av一区二区三区黑人| 欧美高清激情brazzers| 久久综合色婷婷| 亚洲精品免费在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产另类ts人妖一区二区| 91久久精品一区二区| 欧美va亚洲va香蕉在线| 亚洲同性gay激情无套| 日本一道高清亚洲日美韩| 国产69精品久久久久毛片| 欧美日韩一区国产| 国产视频一区二区在线| 亚洲一区二区三区免费视频| 久久不见久久见中文字幕免费| 94-欧美-setu| 久久午夜色播影院免费高清| 亚洲一区二区精品久久av| 国产精品自拍一区| 欧美日韩亚洲综合| 国产精品久久久99| 精品一区中文字幕| 欧美日韩一区二区不卡| 国产精品日韩精品欧美在线| 人人精品人人爱| 日本乱码高清不卡字幕| 中文字幕第一页久久| 蜜桃91丨九色丨蝌蚪91桃色| 一本色道亚洲精品aⅴ| wwwwww.欧美系列| 肉色丝袜一区二区| 日本精品一级二级| 国产欧美日韩麻豆91| 久久国内精品视频| 欧美精品色综合| 亚洲图片欧美色图| 色猫猫国产区一区二在线视频| www欧美成人18+| 美女精品一区二区| 欧美精品在线观看播放| 一区二区在线观看av| a在线播放不卡| 国产欧美一区二区在线| 国产在线不卡一区| 精品va天堂亚洲国产| 日本大胆欧美人术艺术动态| 欧美日韩一本到| 亚洲综合色视频| 91成人免费电影| 亚洲综合视频在线| 在线亚洲一区二区| 亚洲综合一区二区三区| 色老头久久综合| 亚洲精品一二三区| 一本大道久久a久久精品综合| 亚洲欧洲三级电影| 91亚洲精品一区二区乱码| 亚洲三级在线播放| 在线亚洲人成电影网站色www|