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

📄 main.c

📁 该源码是本人经调试通过的UCOS2操作系统在51单片机上移植好的源代码
💻 C
字号:
#include <includes.h>

#define MAX_STK_SIZE 64
extern void serial_initial(void);
void TaskStartyya(void *yydata) reentrant;
void TaskStartyyb(void *yydata) reentrant;
void TaskStartyyc(void *yydata) reentrant;

OS_STK TaskStartStkyya[MAX_STK_SIZE+1];//注意:我在ASM文件中设置?STACK空间为40H即64,不要超出范围。
OS_STK TaskStartStkyyb[MAX_STK_SIZE+1];//用户栈多一个字节存长度
OS_STK TaskStartStkyyc[MAX_STK_SIZE+1];

void *MessageStorage[2];
OS_EVENT *Uart0ReviceMbox;
INT8U err,i;
INT8U *cp,*Buf;
INT8U *o,*t,*th,*f;

void main(void)
{
o="one";
t="two";
th="three";
f="four";
OSInit();
serial_initial();
InitTimer0();
Uart0ReviceMbox = OSQCreate(MessageStorage,2);
OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],2);
OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);
OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);

OSStart();
}

void TaskStartyya(void *yydata) reentrant
{
yydata=yydata;



for(;;){
      cp = (INT8U *)OSQPend(Uart0ReviceMbox, 80, &err);         /* 接收数据 */	
      if(cp==o) {
                  printf("one\n");
                 
				}
      else if(cp==t) printf("two\n");
      else if (cp==th) printf("three\n");
      else if(cp==f)  printf("four\n");
	  else printf("wait timeout\n");
       } 
 
}

void TaskStartyyb(void *yydata) reentrant
{
yydata=yydata; 

for(;;){
i=P0;
switch(i)
{
  case 1:  Buf="one";break;
  case 2:  Buf="two";break;
  case 4:  Buf="three";break;
  case 8:  Buf="four";break;
  default: Buf="error";break;
}
if((Buf==o)||(Buf==t)||(Buf==th)||(Buf==f)) OSQPost(Uart0ReviceMbox, (void *)Buf);

//OSTimeDly(2*OS_TICKS_PER_SEC); 
} 

}

void TaskStartyyc(void *yydata) reentrant
{
yydata=yydata; 

for(;;){


printf("t3.\n");

//OSTimeDly(3*OS_TICKS_PER_SEC); 

} 
}

⌨️ 快捷键说明

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