⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mjy.c

📁 UCOS系统下多任务显示自己名字的第一个字母
💻 C
字号:
/*	test   */

#include "includes.h"
#define TASK_STK_SIZE	512
OS_STK  MTaskStk[TASK_STK_SIZE];
OS_STK  JTaskStk[TASK_STK_SIZE];
OS_STK  YTaskStk[TASK_STK_SIZE];
INT16S	key;
INT8U	x1=0,y1=21,x2=30,y2=5,x3=60,y3=4,t1,t2,t3;
void MTask(void *data);
void JTask(void *data);
void YTask(void *data);

void main(void)
{
    char* s_M="M";
    OSInit();	                                                  
    PC_DOSSaveReturn();	                                        
    PC_VectSet(uCOS, OSCtxSw);	                                 
	 OSTaskCreate(
			MTask,
			s_M,
			&MTaskStk[TASK_STK_SIZE-1],
			0
			);
    OSStart();	                                                 
}


void MTask(void *pdata)
{
	char* s_J="J";
	char* s_Y="Y";
#if OS_CRITICAL_METHOD == 3
	OS_CPU_SR cpu_sr;
#endif
	pdata = pdata;
	OS_ENTER_CRITICAL();
	PC_VectSet(0x08,OSTickISR);
	PC_SetTickRate(OS_TICKS_PER_SEC);
	OS_EXIT_CRITICAL();
	OSStatInit();
	OSTaskCreate(
		JTask,
			s_J,
			&JTaskStk[TASK_STK_SIZE-1],
			1
		);
   OSTaskCreate(
		YTask,
			s_Y,
			&YTaskStk[TASK_STK_SIZE-1],
			2
		);
	for(;;)
	{
		if(x1>18){x1=0; y1=21;}

		PC_DispChar(
				x1,y1,
				*(char*)pdata,
				DISP_BGND_BLACK + DISP_FGND_WHITE
			);
		x1+=1;

		if(y1==21)t1=25;
		if(y1>1&&t1>y1){t1=y1; y1=y1-4;}
		if(y1==1)t1=0;
		if(y1<21&&t1<y1){t1=y1; y1=y1+4;}

		if(PC_GetKey(&key) == TRUE)
			{
				if(key == 0x1B)
				{
					PC_DOSReturn();
				}
			}
		OSTimeDlyHMSM(0,0,2,0);
	}
}


void JTask(void *pdata)
{
#if OS_CRITICAL_METHOD == 3
	OS_CPU_SR cpu_sr;
#endif
	pdata = pdata;
	for(;;)
	{
		if(y2==5)
		{
			x2+=1;
			t2=0;
		}
		if(x2>50||t2==1)
		{
			x2=41;
			y2+=1;
			t2=1;
		}
		if(y2==21)
		{
			x2=x2-1;
			t2=0;
		}
		if(x2==32&&y2==21)
		{
			x2=31;
			y2=5;
		}
		PC_DispChar(
				x2,y2,
				*(char*)pdata,
				DISP_BGND_BLACK + DISP_FGND_WHITE
			);
		OSTimeDlyHMSM(0,0,1,0);
	}
}

void YTask(void *pdata)
{
#if OS_CRITICAL_METHOD == 3
	OS_CPU_SR cpu_sr;
#endif
	pdata = pdata;
	for(;;)
	{
		if(x3>=60&&x3<70)
		{
			x3+=1;
			y3+=1;
		}

		PC_DispChar(
				x3,y3,
				*(char*)pdata,
				DISP_BGND_BLACK + DISP_FGND_WHITE
			);

		if(x3==70)
		{
			y3+=1;
			t3=0;
		}
		if(y3==22&&t3==0)
		{
			x3=80;
			y3=4;
			t3=1;
		}
		if(t3==1)
		{
			x3=x3-1;
			y3=y3+1;
		}

		OSTimeDlyHMSM(0,0,2,0);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -