本帖最后由 刘前辈 于 2011-11-14 19:23 编辑  
 
            看了所长写的OS大泻蜜调度器,正所谓内行看门道,外行看热闹;看得老刘是稀里哼哈,涕泪横飞;         再读123jj 的修改版,简直感动得不能自己,—— 太精彩了!胜读十年书啊。  
 
                  俺建议123jj 不用玩127个流水灯任务忽悠自己,玩下面三个printf()打印输出任务足够了。  
 
举例:main.c  
 
#include <REG51.H>  #include <stdio.h>  #include "os.h"  
#define   Xms   500  
void  InitializeComPort( )     // 初始化串口 { 
SCON= 0x50; 
TMOD |= 0x20;  
TH1= 0xF0; 
TR1= 1; 
 TI= 1;  }  
void   TestP0_0(  )        // 任务1 { 
while (1) { 
      Sleep(Xms); 
  
printf("Task1 is using --------------------UART!\n");
    
      Sleep(Xms);  
} }  
 
 
  
void TestP0_1( )       // 任务2 { 
 while (1) { 
      Sleep(Xms); 
printf("Task2 is using ********************UART! \ n" ); 
    Sleep(Xms); 
} }  
void TestP0_2()           // 任务3 { 
while (1) { 
Sleep(Xms); 
  
printf(" Task3 is using =====================UART!\n" );   
Sleep(Xms);  
}
 } 
  
/* 
这叫啥子测试任务?忽悠老百姓呢。  
void TestP0_3( ) 
 { 
while (1) { 
Sleep(Xms); 
Sleep(Xms); 
Sleep(Xms);  
P0_3 = ~P0_3; 
Sleep(Xms); 
P0_3 = ~P0_3; 
Sleep(Xms); 
Sleep(Xms); 
Sleep(Xms); 
Sleep(Xms); 
}
 }  
 void TestP0_4()  { 
while (1) { 
Sleep(Xms); 
Sleep(Xms); 
Sleep(Xms); 
Sleep(Xms); 
P0_4 = ~P0_4;  
 
Sleep(Xms); 
P0_4 = ~P0_4; 
Sleep(Xms); 
Sleep(Xms); 
Sleep(Xms); 
}
 } 
 */  
 
void main (void) { 
InitializeComPort();     // 初始化串口 
InitializeTasks();          // 初始化任务 
 
CreateTask(10, TestP0_0);     // 创建任务10 
        //只要创建3个任务就行了。  
CreateTask(11, TestP0_1);        // 创建任务11 
  
CreateTask(12, TestP0_2);       // 创建任务12  RunTasks();                          // 运行任务  
while (1) {; }
  
}  
 
 
这三个任务,用所长写的调度器,结果:输出一片空白。  
有幸123jj的修改版能够有输出,贴一下输出结果:  
 
 . . 也许为了输出正常,所长和123jj 的程序以后可能还要做大的修改,真诚盼望所长和123jj 2位元老以后多多写一些这样的“奥秘”、“接蜜”之类的程序供我们菜鸟学习,——当然最好是能实际使用的,或者能够接受别人指出不足,并且修改的。   
 
 
123jj 对所长的奥秘调度器的评价“思路超级清晰,程序超级精简,”确实是“多一个字符显啰嗦,少一个字符则杯具。”—— 咱一个字符未动,果然概念超级混乱,输出超级杯具。
  
 
、、  |