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

📄 test.c

📁 1621程序
💻 C
字号:
/*
*********************************************************************************************************
*
*********************************************************************************************************
*/

#include "includes.h"

/**************************************Varible************************************************/
OS_STK Task1[256];
OS_STK Task2[256];
OS_STK Task3[256];
OS_STK Task4[256];
OS_STK Task5[256];
OS_STK Task6[256];
OS_STK Task7[256];

/******************Sem*****************************/
OS_EVENT *Cou1Sem;
OS_EVENT *Cou2Sem;

INT16U mm=0;


void task1(void *pdata);
void task2(void *pdata);
void task3(void *pdata);
void task4(void *pdata);
void task5(void *pdata);
void task6(void *pdata);
void task7(void *pdata);


void main (void)
{
	 PC_DispClrScr(DISP_BGND_BLUE+DISP_FGND_WHITE) ;

	 PC_DOSSaveReturn();

	 PC_VectSet(uCOS,OSCtxSw);

	 OSInit();
	 OSTaskCreate(task1,(void *)0,&Task1[255],10);
	 OSTaskCreate(task2,(void *)0,&Task2[255],14);
	 OSTaskCreate(task3,(void *)0,&Task3[255],12);
	 OSTaskCreate(task4,(void *)0,&Task4[255],13);
	 OSTaskCreate(task5,(void *)0,&Task5[255],15);
	 OSTaskCreate(task6,(void *)0,&Task6[255],16);
	 OSTaskCreate(task7,(void *)0,&Task7[255],17);
	 Cou1Sem = OSSemCreate(1);
	 Cou2Sem = OSSemCreate(1);
	 OSStart();
}


/**************************************Varible************************************************/

void task1(void *pdata)
{
	#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
	 OS_CPU_SR  cpu_sr;
	#endif
	char s[80];
	pdata = pdata;
	OS_ENTER_CRITICAL();
	PC_VectSet(0x08, OSTickISR);                           /* Install uC/OS-II's clock tick ISR        */
	PC_SetTickRate(OS_TICKS_PER_SEC);                      /* Reprogram tick rate                      */
	OS_EXIT_CRITICAL();

	PC_DispStr(49,24,"Task5: " ,DISP_FGND_YELLOW+DISP_BGND_BLUE);
	PC_DispStr(20,0,"The UCOS-II run in the Personal-Computer",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	PC_DispStr(0,2,"Task1 a~z :",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	PC_DispStr(0,4,"Task2 num :",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	PC_DispStr(0,6,"Task3 A~Z :",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	PC_DispStr(0,8,"Task4 Cou :",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	PC_DispStr(13,13,"!!********************Information********************!!",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	PC_DispStr(0,15,"1. Task2 will count once per second  !!",DISP_FGND_YELLOW+DISP_BGND_RED);
	PC_DispStr(0,16,"2. Task3 will print A to Z  !!",DISP_FGND_YELLOW+DISP_BGND_RED);
	PC_DispStr(0,17,"3. Task4 will count once after that task3 complete to display A to Z once!!",DISP_FGND_YELLOW+DISP_BGND_RED);
	PC_DispStr(0,18,"4. Task1 will print a to z controlled by the UCOS-II embbed clock!!",DISP_FGND_YELLOW+DISP_BGND_RED);
	PC_DispStr(0,19,"5. Task5 will display the time on your computer!!",DISP_FGND_YELLOW+DISP_BGND_RED);
	for(;;)
	{
		PC_GetDateTime(&s[0]);

		PC_DispStr(60,24,s,DISP_FGND_WHITE+DISP_BGND_BLACK);
		OSTimeDly(10);
	}
}

void task2(void *pdata)
{
	char s='a';
	INT8U *err;
	INT8U y=10;
	pdata = pdata;
	for(;;)
	{
		OSSemPend(Cou1Sem,600,err);
		PC_DispChar(y,3,s,DISP_BGND_BLUE+DISP_FGND_WHITE);
		s=s+1;
		if(s>'z'+1) {s='a';y=10;PC_DispClrRow(3,DISP_BGND_BLUE);}
		y=y+1;
		OSTimeDly(50);
	}
}


void task3(void *pdata)
{
	char s='A';
	INT8U y=10;
	pdata = pdata;
	for(;;)
	{
		PC_DispChar(y,7,s,DISP_BGND_BLUE+DISP_FGND_WHITE);
		s=s+1;
		if(s>'Z'+1) {s='A';y=10;PC_DispClrRow(7,DISP_BGND_BLUE);OSSemPost(Cou1Sem);OSSemPost(Cou2Sem);}
		y=y+1;
		OSTimeDly(50);
	}
}

void task4(void *pdata)
{
	INT8S cou = -1;
	INT8U *err;
	char s[2];
	pdata=pdata;
	for(;;)
	{
		OSSemPend(Cou2Sem,0,err);
		cou++;
		sprintf(s,"%2d ",cou);
		PC_DispStr(10,9,s,DISP_BGND_PURPLE+DISP_FGND_WHITE);
		OSTimeDly(100);
	}
}

void task5(void *pdata)
{
	char s[1];
	INT8U y=10;
	pdata=pdata;
	mm=1;
	for(;;)
	{
	  sprintf(s,"%+4d ",mm);
	  PC_DispStr(y,5,s,DISP_FGND_YELLOW+DISP_BGND_BLUE);
	  y=y+1;
	  mm=mm+1;
	  if(mm>=28)
	  {
		 mm=1;
		 y=10;
		 PC_DispClrRow(5,DISP_BGND_BLUE);
	  }
	  OSTimeDly(200);
	}
}

void task6(void *pdata)
{
  pdata=pdata;
  for(;;)
  {
	 PC_DispStr(49,22,"Author : MaoDashi by 2007.10.2",DISP_FGND_YELLOW+DISP_BGND_GREEN);
	 OSTimeDly(600);
  }
}

void task7(void *pdata)
{
  pdata=pdata;
  for(;;)
  {
	 PC_DispClrRow(22,DISP_BGND_BLUE);
	 OSTimeDly(800);
  }
}

⌨️ 快捷键说明

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