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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ex1_8051r.c

?? uCos-II 在多種處理器上移植的源代碼
?? C
字號(hào):
/*****************************************************************************
|*
|*  Copyright (c) 2001 TASKING, Inc.
|*
|*  Description:
|*
|*	This module shows an example how to use uC/OS.
|*	It implements 5 tasks:
|*	Stat() calculates some statistics about the processor usage
|*	DispStr() is used to display string created by other tasks
|*	Task() sets/resets an I/O pin and creates a string to display by DispStat()
|*	Task() is created 3 times, each with other startup data.
|*	Stat() is created in main(). The other tasks are created by Task();
|*
 ****************************************************************************/

#include "includes.h"

#define	VIRT_STACK_1	0x400
OS_STK		Stk3[VIRT_STACK_1 + OS_SYS_STACK_SIZE];

#define	VIRT_STACK_2	0x400
OS_STK		Stk2[VIRT_STACK_2 + OS_SYS_STACK_SIZE];

#define	VIRT_STACK_3	0x400
OS_STK		Stk1[VIRT_STACK_3 + OS_SYS_STACK_SIZE];

#define	VIRT_STACK_STAT	0x400
OS_STK		Stk_stat[VIRT_STACK_STAT + OS_SYS_STACK_SIZE];

#define	VIRT_STACK_DISP	0x400
OS_STK		Stk_disp[VIRT_STACK_DISP + OS_SYS_STACK_SIZE];

#define printfQ_SIZE	10


char		TaskMsg[3][40];			/* Messages from task 1..3 */
char		StatMsg[100];			/* Message from Stat() */


OS_EVENT	* printfSem;			/* semaphore for printf */
OS_EVENT	* printfQPtr;			/* pointer to queue for printf messages */
void		* printfQ[printfQ_SIZE];	/* printf queue */


void Task(void *pdata);
void Stat(void *data);
void DispStr(void *data);
void StartTimer0(void);
int main( void );

/*
 * Data[] is organized as "taskno,bitno,delay"
 */

int	Data1[] = {1,7,20};
int	Data2[] = {2,6,40};
int	Data3[] = {3,5,80};



/*****************************************************************************
|*
|*  FUNCTION:           Task
|*
|*  DESCRIPTION:
|*
|*      Set/reset I/O pin (P1x) and post a message to display a string
|*
 */
void Task(void *pdata)
{
	unsigned char	err;

	unsigned char	output;				/* used to display if pin is set or reset */
	unsigned char	port;				/* used to displat which pin is set */
	unsigned char	task;				/* used to display which task set the pin */

	unsigned char	mask;				/* holds bitmask for the pin */
	unsigned int	dlay;				/* timeticks between toggling the pin */


	task = ((int *)pdata)[0] & 0xFF;
	port = ((int *)pdata)[1] & 0xFF;
	mask = 1 << port;
	dlay = ((int *)pdata)[2];

	/* avoid compiler warning */
	pdata = pdata;

	while (1)
	{
		/* Toggle P1.<bitno> */
		P1 ^= mask;
		output = (P1 & mask)? 1 : 0;

		/* wait for semaphore to use the printf routine (not reentrant) */
		OSSemPend(printfSem, 0, &err);
		sprintf(TaskMsg[task],"Task %d set output P1.%d to %d \n", (int) task, (int) port, (int) output);
		OSSemPost(printfSem);

		/* Post message to display the string */
		OSQPost(printfQPtr, &TaskMsg[task][0]);

		/* wait for a certain time */
		OSTimeDly(dlay);
	}
}


/*****************************************************************************
|*
|*  FUNCTION:           Stat
|*
|*  DESCRIPTION:
|*
|*      Starts the other tasks and compute CPU usage
|*
 */
void Stat(void *data)
{
	unsigned long	max;					/* Maximal idle count if no other processes run */
	int		usage;					/* Percent of used CPU time */
	unsigned char	err;					/* Contains err if OSSemPend() fails */


	data = data;					/* Prevent compiler warning */

	OSSemPend(printfSem, 0, &err);
	printf("\nDetermining  CPU's capacity ...\n");	/* Determine maximum count for OSIdleCtr */
	OSSemPost(printfSem);

	OSTimeDly(1);					/* Synchronize to clock tick */
	OSIdleCtr = 0L;					/* Determine max. idle counter value ... */
	OSTimeDly(15);					/* ... for 15 clock ticks (about 1 sec at 12 MHz) */
	max = OSIdleCtr;

	OSTaskCreate(Task, Data3, &Stk3[VIRT_STACK_3 + OS_SYS_STACK_SIZE], 20);
	OSTaskCreate(Task, Data2, &Stk2[VIRT_STACK_2 + OS_SYS_STACK_SIZE], 30);
	OSTaskCreate(Task, Data1, &Stk1[VIRT_STACK_1 + OS_SYS_STACK_SIZE], 40);
	OSTaskCreate(DispStr, (void *)0, &Stk_disp[VIRT_STACK_DISP + OS_SYS_STACK_SIZE], 60);

	OSIdleCtr = 0L;

	while (1)
	{
		OS_ENTER_CRITICAL();

		/* Reset statistics counters */
		OSCtxSwCtr = 0L;
		OSIdleCtr  = 0L;
		OS_EXIT_CRITICAL();

		/* Wait about one second */
		OSTimeDly(15);

		/* Compute and display statistics */
		usage = 100 - ((100 * OSIdleCtr) / max);
		OSSemPend(printfSem, 0, &err);
		sprintf(StatMsg, "***** Task Switches/sec: %ld   CPU Usage: %d percent   Idle Ctr: %ld / %ld \n",
                	OSCtxSwCtr, usage, OSIdleCtr, max);
		OSQPost(printfQPtr, &StatMsg[0]);
		OSSemPost(printfSem);
	}
}


/*****************************************************************************
|*
|*  FUNCTION:           DispStr
|*
|*  DESCRIPTION:
|*
|*      After receiving a message, display the corresponding string
|*
 */
void DispStr(void *data)
{
	unsigned char	err;					/* Contains err if OSQPend() fails */	
	char		* s;					/* pointer to string to display */

	data = data;					/* avoid compiler warnings */

	while (1)
	{
		/* Wait forever for message */
		s = OSQPend(printfQPtr, 0, &err);

		/* Wait for semaphore and print string */
		OSSemPend(printfSem, 0, &err);
		printf(s);
		OSSemPost(printfSem);
	}
}

/*****************************************************************************
|*
|*  FUNCTION:           StartTimer0
|*
|*  DESCRIPTION:
|*
|*      Initialize Timer 0
|*
 */
void StartTimer0(void)
{
	unsigned char Temp;

	/* Program Timer 0:
	 *     Gate = 0 => timer enabled on TR0
	 *     C/nT = 0 => source = 1/12 fOSC
	 *     mode = 1 => 16-Bit counter/timer
	 */

	Temp = TMOD;
	Temp &= 0xF0;
	Temp |= 0x01;
	TMOD = Temp;

	TL0 = 0;
	TH0 = 0;

	ET0 = 1;		/* Enable Interrupt on Timer 0 Overflow */

	TR0 = 1;		/* Start Timer 0 */
}


/*****************************************************************************
|*
|*  FUNCTION:           main
|*
|*  DESCRIPTION:
|*
|*      Create first task (Stat()) and start OS
|*
 */
int main( void )
{
	OSInit();

	printfSem = OSSemCreate(1);
	printfQPtr = OSQCreate(&printfQ[0], printfQ_SIZE);

	OSTaskCreate(Stat, (void *)0, &Stk_stat[VIRT_STACK_STAT + OS_SYS_STACK_SIZE], 50);

	OS_ENTER_CRITICAL();

	StartTimer0();

	/* Start multitasking - will do OS_EXIT_CRITICAL() */
	OSStart();

	return 0;	/* will never happen... */
}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91.xcao| 2020国产精品自拍| 精品一区二区三区在线播放| 综合亚洲深深色噜噜狠狠网站| 7777女厕盗摄久久久| 91麻豆免费视频| 国产精品自在在线| 天天色天天操综合| 中文字幕一区二区三区在线不卡 | 亚洲激情在线播放| 久久久夜色精品亚洲| 欧美精品视频www在线观看| 成人av小说网| 国产一区二区中文字幕| 天天综合天天综合色| 中文字幕在线不卡一区| 日韩精品中文字幕在线不卡尤物| 欧美三级电影网| 91黄色激情网站| 91免费版pro下载短视频| 国产东北露脸精品视频| 国产美女精品人人做人人爽| 麻豆精品国产传媒mv男同 | 欧美精品一二三| caoporen国产精品视频| 国产成人高清视频| 国产一区二区视频在线播放| 麻豆成人久久精品二区三区红 | 久久精品国产一区二区三区免费看| 亚洲五码中文字幕| 亚洲一区二区在线播放相泽 | 亚洲免费在线播放| 成人免费在线视频| ...xxx性欧美| 亚洲视频在线观看一区| 中文字幕一区在线观看视频| 国产精品天美传媒| 国产精品每日更新在线播放网址| 中文字幕第一区综合| 中文字幕乱码亚洲精品一区 | 国产一区美女在线| 精品在线视频一区| 国产精品自拍av| 丰满亚洲少妇av| 99国产精品久久久| 日本精品一区二区三区高清| 欧美色图在线观看| 欧美一区二区三区喷汁尤物| 精品国产乱码久久久久久久| 久久人人超碰精品| 国产精品女同一区二区三区| 国产精品国产自产拍高清av| 亚洲与欧洲av电影| 奇米精品一区二区三区在线观看一| 美国一区二区三区在线播放| 国产一区二区福利视频| 成人黄色免费短视频| 91激情在线视频| 日韩一卡二卡三卡| 中文字幕欧美三区| 亚洲777理论| 国产另类ts人妖一区二区| av中文字幕不卡| 欧美日韩免费一区二区三区视频| 欧美一区二区成人6969| 国产日韩欧美精品一区| 亚洲一区二区欧美| 精品在线免费观看| jlzzjlzz国产精品久久| 欧美主播一区二区三区| 日韩精品一区二区三区老鸭窝 | 国产日产欧产精品推荐色| 亚洲精品高清在线| 美女精品自拍一二三四| 成人av手机在线观看| 欧美日韩大陆在线| 欧美国产日韩在线观看| 午夜精品久久久久久久99樱桃| 久久66热偷产精品| 一本大道久久a久久综合| 日韩一区二区三| 中文字幕佐山爱一区二区免费| 青青草伊人久久| 色婷婷亚洲婷婷| 久久亚洲捆绑美女| 亚洲国产精品久久久男人的天堂| 韩国v欧美v日本v亚洲v| 欧美亚洲日本国产| 国产精品三级视频| 蜜臀a∨国产成人精品| 91视视频在线观看入口直接观看www| 日韩欧美国产wwwww| 一区二区三区欧美久久| 国产九色精品成人porny| 欧美视频完全免费看| 国产精品麻豆网站| 久久av中文字幕片| 欧美裸体一区二区三区| 亚洲桃色在线一区| 国产精品白丝jk白祙喷水网站 | 欧美日韩国产精品成人| 中文无字幕一区二区三区| 男男成人高潮片免费网站| 日本电影欧美片| 日韩一区在线播放| 高清beeg欧美| 国产午夜精品福利| 欧美一区二区三区小说| 亚洲最色的网站| 91视频观看免费| 国产精品久久久久久亚洲毛片| 精品一区二区成人精品| 在线不卡a资源高清| 一二三区精品福利视频| 97久久人人超碰| 国产精品每日更新| 高清成人在线观看| 精品第一国产综合精品aⅴ| 日韩不卡免费视频| 欧美福利视频一区| 亚洲福利国产精品| 欧美三级在线播放| 亚洲国产乱码最新视频 | 琪琪久久久久日韩精品| 欧美三级电影网站| 午夜伦欧美伦电影理论片| 色噜噜夜夜夜综合网| 亚洲精品伦理在线| 色婷婷综合久久久久中文一区二区 | 一区在线观看视频| 懂色av一区二区夜夜嗨| 久久你懂得1024| 高清成人免费视频| 国产精品女人毛片| 99这里都是精品| 亚洲欧洲中文日韩久久av乱码| 成人h精品动漫一区二区三区| 国产午夜精品一区二区三区四区 | 国产精华液一区二区三区| 2021久久国产精品不只是精品 | 欧美日产国产精品| 日韩在线一区二区| 日韩欧美自拍偷拍| 国产精品77777| 国产精品久久久久桃色tv| 91麻豆国产精品久久| 亚洲精品国产成人久久av盗摄| 欧美日韩在线三级| 日本最新不卡在线| 久久久电影一区二区三区| 成人国产精品免费观看动漫| 亚洲天堂av老司机| 欧美色视频在线观看| 久国产精品韩国三级视频| 精品国产不卡一区二区三区| 丁香网亚洲国际| 亚洲综合色成人| 日韩一级黄色片| 国产a久久麻豆| 一区二区三区四区不卡在线| 欧美午夜影院一区| 麻豆精品一区二区av白丝在线 | 免费成人美女在线观看| www成人在线观看| 成人毛片老司机大片| 一区二区三区在线不卡| 日韩欧美亚洲国产精品字幕久久久| 国产真实精品久久二三区| 亚洲人xxxx| 91精品国产欧美日韩| 不卡一区中文字幕| 日韩和欧美一区二区三区| 久久精品亚洲乱码伦伦中文| 91福利社在线观看| 日韩一级免费观看| 成人av在线播放网站| 日韩精品亚洲一区| 国产精品国产自产拍高清av| 欧美理论在线播放| 丁香网亚洲国际| 日韩va欧美va亚洲va久久| 国产丝袜欧美中文另类| 欧美日韩激情在线| 成人亚洲精品久久久久软件| 婷婷综合五月天| 国产精品久久久久婷婷| 欧美不卡一区二区三区四区| 91丨九色丨黑人外教| 狠狠色2019综合网| 天天做天天摸天天爽国产一区| 欧美国产欧美综合| 精品久久久久久久久久久久久久久| 在线免费视频一区二区| 高清国产午夜精品久久久久久| 日本va欧美va瓶| 亚洲欧美日韩国产综合| 国产亚洲精品久| 欧美va亚洲va国产综合| 欧美日韩国产区一| 91高清视频免费看|