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

📄 light_struct.c

📁 UCOSII源码,三星4510下面的uCOSII源码.
💻 C
字号:
#include <includes.h>
#include <math.h>
#include "stdio.h"
#include "stdlib.h"

	
void TaskStartyya(void *yydata) ;
void TaskStartyyb(void *yydata) ;
void TaskStartyyc(void *yydata) ;
void TaskStartyyd(void *yydata) ;


OS_STK TaskStartStkyya[MaxStkSize];//注意:我在ASM文件中设置?STACK空间为40H即64。
OS_STK TaskStartStkyyb[MaxStkSize];
OS_STK TaskStartStkyyc[MaxStkSize];
OS_STK TaskStartStkyyd[MaxStkSize];

  
sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit LED4 = P3^4;
sbit LED5 = P3^5;
sbit LED6 = P3^2;
sbit LED7 = P3^3;

	 OS_EVENT *sem;
	 OS_EVENT *CommQ1,*CommQ2,*CommQ3; 
	 void     *CommMsg0[10];
	 void     *CommMsg1[10];
	 void     *CommMsg2[10];
	 struct num_data
	{
		unsigned int data1;
		unsigned int data2;
		unsigned int data3;
	}; 

   	
void main(void)
{
    OSInit();
     
	
    InitTimer0();
    InitSerial();
    InitSerialBuffer();

		sem = OSSemCreate(1);
	    CommQ1 = OSQCreate(&CommMsg0[0],10);
	    CommQ2 = OSQCreate(&CommMsg1[0],10);
	
    
  OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],8);
  OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],7);
  OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],5);
  OSTaskCreate(TaskStartyyd, (void *)0, &TaskStartStkyyd[0],10);
    
	OSStart();
	
}


/*
void TaskStartyya(void *yydata) reentrant
{
    yydata=yydata;
    clrscr();
    PrintStr("\n\t\t*******************************\n");
    PrintStr("\t\t*     Hello! The world.       *\n");
    PrintStr("\t\t*******************************\n\n\n");
  
    for(;;)
	{
        PrintStr("\tAAAAAA111111 is active.\n");
        OSTimeDly(OS_TICKS_PER_SEC);    
    }    
}

void TaskStartyyb(void *yydata) reentrant
{
    yydata=yydata; 
    
    for(;;)
	{
        PrintStr("\tBBBBBB333333 is active.\n");
        OSTimeDly(3*OS_TICKS_PER_SEC);    
    }    
}

void TaskStartyyc(void *yydata) reentrant
{
    yydata=yydata; 
    
    for(;;)
	{
        PrintStr("\tCCCCCC666666 is active.\n");
        OSTimeDly(6*OS_TICKS_PER_SEC);    
    }    
}



  void TaskStartyy(void *yydata) 
{
    INT8U err;
    unsigned char *msg;
    
    while(1)
	{
      			
		msg = OSSemPend(CommQ, 0, &err);
		
		LED0=1;
	    OSTimeDly(6*OS_TICKS_PER_SEC);
	    LED0=0;
	    OSTimeDly(6*OS_TICKS_PER_SEC);
 
    }    
}

  */

 void TaskStartyya(void *yydata) 
{
	INT8U  err;	
	int i;
	static struct num_data ddd;
	
	 yydata =yydata;
	 while(1)
	   {
			  /*ddd.data1=rand()%3+1;
			 ddd.data2=rand()%3;
			  ddd.data3=ddd.data1+ddd.data2;*/
			  ddd.data1=8;
			  for(i=0;i<16;i++)
			  { 
			  
			  switch(i)
			  {
			  case 0: ddd.data2=0;break;
			  case 1: ddd.data2=1;break;
			  case 2: ddd.data2=3;break;
			  case 3: ddd.data2=7;break;
			  case 4: ddd.data2=15;break;
			  case 5: ddd.data2=31;break;
			  case 6: ddd.data2=63;break;
		      case 7: ddd.data2=127;break;
			  case 8: ddd.data2=255;break;
			  case 9: ddd.data2=128;break;
			  case 10: ddd.data2=192;break;
			  case 11: ddd.data2=224;break;
			  case 12: ddd.data2=240;break;
			  case 13:  ddd.data2=248;break;
			  case 14: ddd.data2=252;break;
			  case 15: ddd.data2=254;break;
			  case 16: ddd.data2=255;break;
			   
			  }
			   ddd.data3=ddd.data1+ddd.data2;
			  OSTimeDly(200);
			  err = OSQPost(CommQ1,&ddd);
			  
			  }
		
			 
        }
}



void TaskStartyyb(void *yydata) 
{ 
     INT8U  err;
   	 static struct num_data *pdat_taskb;
	 static unsigned char   buf0,buf1,buf2;
	 yydata =yydata;
	 while(1)
	 {
	   	 pdat_taskb = OSQPend(CommQ1, 0, &err);
	     buf0 = pdat_taskb->data1;
		 buf1 = pdat_taskb->data2;
		 buf2 = pdat_taskb->data3;
		 OSSemPend(sem, 0, &err); 
		  
		 /*  switch(buf0)
		 {	case 0:   PrintStr("0\n");	break;
		    case 1:   PrintStr("1\n");	break;
 		    case 2:   PrintStr("2\n");	break;
			case 3:   PrintStr("3\n");	break;
		    
		 }

		 switch(buf1)
		 {	
		    case 0:   PrintStr("0\n");	break;
		    case 1:   PrintStr("1\n");	break;
 		    case 2:   PrintStr("2\n");	break;
		
		   
		 }
		 switch(buf2)
		 {	
		    case 0:   PrintStr("0\n");	break;
		    case 1:   PrintStr("1\n");	break;
 		    case 2:   PrintStr("2\n");	break;
		    case 3:   PrintStr("3\n");	break;
		    case 4:   PrintStr("4\n");	break;
			 case 5:   PrintStr("5\n");	break;
		 } */
		 PrintStr("TaskB\n\n\n");  
		 OSSemPost(sem); 
		 err = OSQPost(CommQ2,pdat_taskb);
		

	 }
}
 
void TaskStartyyc(void *yydata) 
{   INT8U  err;
    static unsigned int  buf0_taskc,buf1_taskc,buf2_taskc;
    static struct num_data *pdat_taskc;
	yydata=yydata;

     while(1)
	{	  
	     pdat_taskc= OSQPend(CommQ2, 0, &err);
		 buf0_taskc = pdat_taskc->data1;
		 buf1_taskc = pdat_taskc->data2;
		 buf2_taskc = pdat_taskc->data3; 

 		 if(buf2_taskc!=buf0_taskc+buf1_taskc) PrintStr("Erro\n");
		   else {   OSSemPend(sem, 0, &err); 
		          /*switch(buf0_taskc)
		            {
				        case 1: if(buf1_taskc) LED1=0;else LED1=1;  PrintStr("LED1\n");break;
				        case 2: if(buf1_taskc) LED2=0;else LED2=1;  PrintStr("LED2\n");break;
				        case 3: if(buf1_taskc) LED3=0;else LED2=1;  PrintStr("LED3\n");break;
						
		             }*/
					  if(buf1_taskc & 1) {LED0=0; PrintStr("LED0\n"); }
					  else LED0=1;  
					  if(buf1_taskc & 2) {LED1=0; PrintStr("LED1\n");}
					  else LED1=1;  
					  if(buf1_taskc & 4) {LED2=0;PrintStr("LED2\n"); }
					  else LED2=1; 
					  if(buf1_taskc & 8) {LED3=0;  PrintStr("LED3\n");}
					  else LED3=1; 
					  if(buf1_taskc & 16) {LED4=0; PrintStr("LED4\n");}
					  else LED4=1; 
					  if(buf1_taskc & 32) {LED5=0;  PrintStr("LED5\n");}
					  else LED5=1; 
					  if(buf1_taskc & 64) {LED6=0; PrintStr("LED6\n");}
					  else LED6=1; 
					  if(buf1_taskc & 128) {LED7=0; PrintStr("LED7\n");}
					   else LED7=1; 
					  PrintStr("TaskC\n\n\n");
		              OSSemPost(sem);
		   		 }
		 
		 	
	
		}  
}         

void TaskStartyyd(void *yydata) 
   {
      INT8U  err;
	  static struct num_data *pdat_taskd;
	  static unsigned char  buf0_taskd,buf1_taskd,buf2_taskd;
	  yydata=yydata;
	  while(1)
	 {
	    /* pdat_taskd = OSQPend(CommQ3, 0, &err);
		 buf0_taskd = pdat_taskd->data1;
		 buf1_taskd = pdat_taskd->data2;
		 buf2_taskd = pdat_taskd->data3; */
		 /* 
		 switch(buf0_taskd)
		 {	case 0:   PrintStr("0\n");	break;
		    case 1:   PrintStr("1\n");	break;
 		    case 2:   PrintStr("2\n");	break;
		   
		 }

		 switch(buf1_taskd)
		 {	
		    case 0:   PrintStr("0\n");	break;
		    case 1:   PrintStr("1\n");	break;
 		    case 2:   PrintStr("2\n");	break;
		 
		 }
		 switch(buf2_taskd)
		 {	
		    case 0:   PrintStr("0\n");	break;
		    case 1:   PrintStr("1\n");	break;
 		    case 2:   PrintStr("2\n");	break;
		    case 3:   PrintStr("3\n");	break;
		    case 4:   PrintStr("4\n");	break;
		 } 
		 */
		OSSemPend(sem, 0, &err); 
			PrintStr("TaskD\n\n\n");
		OSSemPost(sem);
		OSTimeDly(150);	
	 }

   }

⌨️ 快捷键说明

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