大家好,本人由于工作需要刚开始学UC/OS,C语言的基础都不是很扎实。今天碰到一个邮箱的问题。望大家帮忙解决。为什么当第一个任务运行完后不能够把邮箱消息传到第2个任务当中去呢,本人刚开始学,任务又比较急,所以大家别见笑。多多指导一下,尤其在如何学习的方面。谢谢了。程序如下: void main (void) { OSInit(); InitTimer2(); OSTaskCreate(tongxin, (void *)0, &tongxin_Stk[0],6); OSStart(); } void tongxin(void *lcnpdata) reentrant { int h; uchar *msg; uchar xdata trdata[10]={'M','C','S','-','5','1',0x0d,0x0a,0x00}; uchar k; uint j; int t=0; lcnpdata=lcnpdata; TMOD=0x21 TL1=0xff;TH1=0xff; S0CON=0xd8;PCON=0x80; TR1=1;//EA=1;ES0=1; TI=1; printf("display is ok"); KeySem=OSMboxCreate(0); OSTaskCreate(second, (void *)0, &second_Stk[0],7); if (KeySem==NULL) { printf("create is fail"); } else { printf("create is succeed"); OSTaskChangePrio(0,3); } for(h=0;h<=3;h++) { k=0; while(trdata[k]!=0x00) { S0BUF=trdata[k]; while(TI==0); TI=0; k++; for(j=0;j<1450;j++); } } OSMboxPost(KeySem,msg); } void second(void *lcnpdata) reentrant { UCHAR *lcnerr; uchar xdata tdata[10]={'g','o','o','d','5','1',0x0d,0x0a,0x00}; uchar k; int j; void *msg; lcnpdata=lcnpdata; TMOD=0x21; TL1=0xff;TH1=0xff; S0CON=0xd8;PCON=0x80; TR1=1; while(1) { msg=OSMboxPend(KeySem,100,&lcnerr); k=0; while(tdata[k]!=0x00) { S0BUF=tdata[k]; while(TI==0); TI=0; k++; for(j=0;j<1450;j++); } } } |