ex1.c

来自「c8051f020单片机的例程」· C语言 代码 · 共 186 行

C
186
字号
#include <includes.h>
#include <cygnalcon.h>
//#include    <ucos_ii.h>
#define uchar unsigned char
#define uint  unsigned int
  OS_EVENT  *TASKA1;         
//OS_EVENT  *TASKB1;    
//OS_EVENT  *TASKC1;   
//OS_EVENT  *TASKD1;  
INT8U i;
OS_EVENT *OSSemCreate(INT16U cnt);
//void OSSemPend(OS_EVENT  *pevent,INT16U timeout,INT8U *err);
//INT8U OSSemPost(OS_EVENT  *pevent);
void TaskA(void*) reentrant;
void TaskB(void*) reentrant;
void TaskC(void*) reentrant;
void TaskD(void*) reentrant;

OS_STK TaskStartStkA[MaxStkSize];//注意:在ASM文件中设置?STACK空间为40H即64。
OS_STK TaskStartStkB[MaxStkSize];
OS_STK TaskStartStkC[MaxStkSize];
OS_STK TaskStartStkD[MaxStkSize];

void  UART0_SendByte(INT8U data1)
{  SBUF0=data1;
    while(TI0==0);
//	while(!TI);
	TI0=0;     // &micro;&Egrave;&acute;&yacute;&Ecirc;&yacute;&frac34;&Yacute
}




void main(void)
{	 
    i=0;
	config();
  // TASKA1 = OSSemCreate(1);
    OSInit();

    InitTimer0();

   
    OSTaskCreate(TaskA, (void *)0, TaskStartStkA,1);
    OSTaskCreate(TaskB, (void *)0, TaskStartStkB,2);
    OSTaskCreate(TaskC, (void *)0, TaskStartStkC,4);
	OSTaskCreate(TaskD, (void *)0, TaskStartStkD,5);
    
   //TASKA1 = OSSemCreate(1);
   // TASKB1 = OSSemCreate(0);  
   // TASKC1 = OSSemCreate(0);     
   // TASKD1 = OSSemCreate(0); 
    OSStart();
}


void TaskA(void *pdat) reentrant
	{

    	pdat=pdat;

   	for(;;){     // OSSemPend(TASKA1,10,&err);
				//INT8U sz=0;
				//INT8U d[10]={63,6,91,79,102,109,124,7,127,103};
				//for( sz=0;sz<10;sz++)
				//	{
					//	P3=d[sz];
				   if(i==0)
                 { UART0_SendByte(0x01);
				    i=1;}
				 // OSSemPost(TASKA1);
				  //OSTimeDly(OS_TICKS_PER_SEC);
				  OSTimeDly(1);
				  
				//	}
	 	
            			} 
		/*	OSSemPost(TASKB1);
   	 for (;;)
        {
             OSSemPend(TASKB1,10,&err);    
             if(err==OS_NO_ERR)
             {        
            
               UART0_SendByte(0x01); 
            
               OSSemPost(TASKC1);   

             }
       
        }*/


	}

void TaskB(void *pdat) reentrant
	{
    	pdat=pdat; 
    	
    	for(;;){//OSSemPend(TASKA1,10,&err);
		   if(i==1)
                {P3=~P3;
		    	UART0_SendByte(0x02);
				i=2;}
               // OSSemPost(TASKA1);
    			OSTimeDly(2);    
    			}   
 			   /* for (;;)
        {
             OSSemPend(TASKC1,10,&err);    
             if(err==OS_NO_ERR)
             {        
            
               UART0_SendByte(0x02); 
            
               OSSemPost(TASKD1);   

             }
       
        }*/
	}

void TaskC(void *pdat) reentrant
	{
    	pdat=pdat; 

   	for(;;){if(i==2)

			//	P0=~P0;
               {UART0_SendByte(0x03);
        		
				i=3;}  
				OSTimeDly(3);  
    			}   
			/*	 for (;;)
        {
             OSSemPend(TASKD1,10,&err);    
             if(err==OS_NO_ERR)
             {        
            
               UART0_SendByte(0x03); 
            
               OSSemPost(TASKA1);   

             }
       
        }*/
 
	}

void TaskD(void *pdat) reentrant
	{	

		//INT8U sx;
		//INT8U e[10]={103,127,7,124,109,102,79,91,6,63};

   	//	pdat=pdat;
   
 	for(;;){if(i==3)
			
			//	for( sx=0;sx<10;sx++)
				//	{
					///	P2=e[sx];
               {  UART0_SendByte(0x04);
					
						i=0;}
				//	}
			 			OSTimeDly(4);	
    			}
				}
			/*	 for (;;)
        {
             OSSemPend(TASKA1,10,&err);    
             if(err==OS_NO_ERR)
             {        
            
               UART0_SendByte(0x02); 
            
               OSSemPost(TASKA1);   

             }
			 }
   
	}*/

⌨️ 快捷键说明

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