📄 light.c
字号:
#include <includes.h>
#include "stdio.h"
void TaskStartyya(void *yydata) ;
void TaskStartyyb(void *yydata) ;
void TaskStartyyc(void *yydata) ;
void TaskStartyy(void *yydata) ;
OS_STK TaskStartStkyya[MaxStkSize];//注意:我在ASM文件中设置?STACK空间为40H即64。
OS_STK TaskStartStkyyb[MaxStkSize];
OS_STK TaskStartStkyyc[MaxStkSize];
OS_STK TaskStartStkyy[MaxStkSize];
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
OS_EVENT *CommQ;
void *CommMsg[100];
void main(void)
{
OSInit();
InitTimer0();
InitSerial();
InitSerialBuffer();
CommQ = OSQCreate(&CommMsg[0],10);
OSTaskCreate(TaskStartyya, (void *)0, &TaskStartStkyya[0],8);
OSTaskCreate(TaskStartyyb, (void *)0, &TaskStartStkyyb[0],3);
// OSTaskCreate(TaskStartyyc, (void *)0, &TaskStartStkyyc[0],4);
// OSTaskCreate(TaskStartyy, (void *)0, &TaskStartStkyya[0],2);
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;
unsigned char data0,data1,data2;
yydata =yydata;
while(1)
{
for(i=0;i<4;i++)
{ switch(i)
{case 0: data0=1;
data1=1;
data2=2; break;
case 1: data0=2;
data1=1;
data2=3; break;
case 2: data0=3;
data1=1;
data2=4;break;
case 3: data0=2;
data1=0;
data2=2;break;
}
OSTimeDly(80);
err = OSQPost(CommQ, (unsigned char *)&data0);
err = OSQPost(CommQ, (unsigned char *)&data1);
err = OSQPost(CommQ, (unsigned char *)&data2);
}
}
}
void TaskStartyyb(void *yydata)
{ INT8U err;
unsigned char *msg0,*msg1,*msg2, buf0,buf1,buf2;
yydata=yydata;
//msg0 = OSQPend(CommQ, 0, &err);
while(1)
{
msg0 = OSQPend(CommQ, 0, &err);
buf0 = *msg0;
msg1 = OSQPend(CommQ, 0, &err);
buf1= *msg1;
msg2 = OSQPend(CommQ, 0, &err);
buf2 = *msg2;
//PrintStr("Light\n");
switch(buf0)
{
case 1: PrintStr("1\n"); break;
case 2: PrintStr("2\n"); break;
case 3: PrintStr("3\n"); break;
case 4: PrintStr("4\n"); break;
}
switch(buf1)
{
case 1: PrintStr("1\n"); break;
case 2: PrintStr("2\n"); break;
case 3: PrintStr("3\n"); break;
case 4: PrintStr("4\n"); break;
}
switch(buf2)
{
case 1: PrintStr("1\n"); break;
case 2: PrintStr("2\n"); break;
case 3: PrintStr("3\n"); break;
case 4: PrintStr("4\n"); break;
}
PrintStr("\n\n\n");
if((buf2)!=(buf0)+(buf1)) PrintStr("Erro\n");
else {
switch(buf0)
{
case 1: if(buf1) LED1=0;else LED3=1; PrintStr("LED1\n");break;
case 2: if(buf1) LED2=0;else LED3=1; PrintStr("LED2\n");break;
case 3: if(buf1) LED3=0;else LED3=1; PrintStr("LED3\n");break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -