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

📄 ucos.c

📁 ucos-ii 的用户文件编程 实现多任务的执行和调度
💻 C
字号:
#include"includes.h"

OS_STK 	Taskstk[3][128];


OS_EVENT *Mailbox1,*Mailbox2;
//OS_EVENT *sem;

INT8U key1[2],key2[2];

void Task_1(void *osdata) reentrant;
void Task_2(void *osdata) reentrant;
void Task_3(void *osdata) reentrant;

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



	 OSTaskCreate(Task_1,(void *)0,&Taskstk[0][0],0);
	 OSTaskCreate(Task_2,(void *)0,&Taskstk[1][0],1);
	 OSTaskCreate(Task_3,(void *)0,&Taskstk[2][0],2);


	 Mailbox1=OSMboxCreate((void *)0);
	 Mailbox2=OSMboxCreate((void *)0);
 //    sem=OSSemCreate(0);

//	    P1=0x35;
//     P3_1=0; 

	 OSStart();  
}

void Task_1(void *osdata) reentrant
{
     INT8U i,err,*key,os_p1,on=0x10;
     i=*(int *)osdata;
	 EA=1;
     for(;;) 
     {	  
		 
		 //for(;;);
         key=OSMboxPend(Mailbox1,0,&err);
		
         if(err==OS_NO_ERR&&key!=(void *)0)
         {	  
             if(*key!=on)
			 { 
			   on=*key;
			   os_p1=*key;
               P1=os_p1;
             }
			
		//	P1=on; 
         }
 		 
		 key=OSMboxPend(Mailbox2,0,&err);

         if(err==OS_NO_ERR&&key!=(void *)0)
         {
         	if(*key==0)
         	{
         	   os_p1=os_p1+1;
         	   if(os_p1==16)
         	    os_p1=0;
         	    P1=os_p1;
         	
         	}

         	 if(*key==1)
         	{
         	    os_p1=os_p1-1;
         	   if(os_p1==0)
         	    os_p1=16;
         	    P1=os_p1;
         	
         	}
         }
        //OSTaskResume(2);	  
	   // OSSemPost(sem);
	   OSTimeDlyResume (1);		
	 }
}


void Task_2(void *osdata)  reentrant
{
     INT8U i,err;
     i=*(int *)osdata; 
     for(;;)
     {
         	     
		 key1[0]=P1;
		 key1[0]=key1[0]>>4;
		 //P1=key1[0];	  
		 //for(;;);
         err=OSMboxPost(Mailbox1,key1);
		//P1=*key;
		 
		// OSTaskSuspend(OS_PRIO_SELF);	  
		OSTimeDly(1);  
     //	OSSemPend(sem,0,&err); 
     }
           	
	
}
void Task_3(void *osdata) reentrant
{
     INT8U i,err;
     i=*(int *)osdata; 
     for(;;)
     {
         
         if(P3_0==0)
           key2[0]=0;
         else if(P3_1==0)
           key2[0]=1;
         else
           key2[0]=2;
           

          for(;;)
          {
           	if((P3_0==1)&&(P3_1==1))
           	   
			   break;
          } 
			
         err=OSMboxPost(Mailbox2,key2);  
     	
     }
           	
	
}

⌨️ 快捷键说明

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