shijingyu

    1. 这个程序我感觉没什么问题  可是一下载到单片机中就没反应了   程序停止再DISPLAY(1)  中间  而DISPLAY(2)  根本就不会执行  只有把两个DISPLAY函数中间的时间延时函数取掉才可以   但是两个显示 1  和 2  太快了      是不是程序太大了?  我觉得没啥问题啊   编译后 data是115.0   xdata 227.0  code   6540   我用的是AT89C52单片机  应该能装下啊 /* 本例程uCOS-II 版本为2.51,仅创建一个LED闪烁任务于 P1.0 上,每隔 0.5 秒闪动一次,任务而此例程运行于内 RAM > 300 Byte 的51内核单片机即可。*/   #include "includes.h" //#include "stdio.h" sbit LED=P1^7; sbit LED1=P1^6; sbit dula=P2^6; sbit wela=P2^7; INT8U err;          INT8U code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; OS_EVENT *semp; OS_STK TaskStartStk[MaxStkSize+1]; OS_STK MyTaskStk[MaxStkSize+1]; OS_STK YouTaskStk[MaxStkSize+1]; void Task(void *ppdata); void MyTask(void *ppdata); void YouTask(void *ppdata); void DigInit(); void Display(INT8U num); void main(void) {                          DigInit();         OSInit();         InitHardware();         semp=OSSemCreate(0);         OSTaskCreate(Task,(void*)0,&TaskStartStk[0],0);         OSStart(); } void Task(void *ppdata) {         ppdata=ppdata;         OSTaskCreate(MyTask,(void*)0,&MyTaskStk[0],1);         OSTaskCreate(YouTask,(void*)0,&YouTaskStk[0],2);         for(;;)             {                 LED=~LED;         OSTimeDly(OS_TICKS_PER_SEC/2);             }    } void MyTask(void *ppdata) {         INT8U temp;                 ppdata=ppdata;         for(;;)         {                                 P3=0xfd;                 temp=P3;                 temp=temp&0xf0;                 if(temp!=0xf0)                 {                         OSTimeDly(1);                         temp=P3;                         temp=temp&0xf0;                         if(temp!=0xf0)                         {                                 temp=P3;                                 switch(temp)                                 {                                         case 0xed:  OSSemPost(semp);                                         break;                                     case 0xdd:                                           break;                                         case 0xbd:                                         break;                                         case 0x7d:                                         break;                                 }                         }                                         }                 OSTimeDly(1);         }         } void YouTask(void *ppdata) {           ppdata=ppdata;                 for(;;)         {                 OSSemPend(semp,0,&err);                 Display(1);                                                     OSTimeDly(50);        //就是这里一加上延时 程序就不会往下继续执行了                 OSSemPend(semp,0,&err);                 Display(2);         } } void DigInit() {         dula=1;         P0=table[0];         dula=0;         wela=1;         P0=0xc0;         wela=0; } void Display(INT8U num) {                 dula=1;                 P0=table[num];                 dula=0;        }
    2. 51上面也能跑操作系统了啊 147/55417 51单片机 2009-03-23
      都不会  来好好学习学习了
    3. 本人认为最好的单片机学习资料 184/34827 单片机 2009-03-20
      好贴  支持啊

最近访客

< 1/1 >

统计信息

已有69人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:3

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言