| 
 
| void Show(void) {
 uint8 i;
 
 /* 初始化显示缓冲区     */
 ShowCase[0] = ShowTable[0];
 ShowCase[1] = ShowTable[0];
 ShowCase[2] = ShowTable[0];
 ShowCase[3] = ShowTable[0];
 ShowCase[4] = ShowTable[10];
 
 while (1)
 {
 for (i = 0; i < 5; i++)
 {
 P1 = 0xff;                      /* 关闭显示第i位                    */
 KdTxdByte(ShowCase);
 P1 = EbitData;               /* 显示第i位                        */
 OSWait(K_SIG,0);                /* 等待1/600秒(由定时器中断决定)  */
 }
 
 OSWait(K_SIG,0);                    /* 等待1/600秒(由定时器中断决定)  */
 OSTimeTick();                       /* 调用系统节拍处理程序             */
 }
 }
 /*上面是关于陈明计先生的LED显示的SHOW程序*/
 
 
 ********************************************************************************************************/
 void TimeSum(void)
 {
 while (1)
 {
 /* 让两个发光二极管闪动 */
 ShowCase[4] = ~0xc0;
 OSWait(K_TMO,OS_TICKS_PER_SEC / 2);
 ShowCase[4] = ~0x00;
 OSWait(K_TMO,(OS_TICKS_PER_SEC + 1) / 2);
 
 /* 计时并显示 */
 TimeAdd[3]++;
 if (TimeAdd[3] >= 10)
 {
 TimeAdd[3] = 0;
 TimeAdd[2]++;
 if (TimeAdd[2] >= 6)
 {
 TimeAdd[2] = 0;
 TimeAdd[1]++;
 if (TimeAdd[1] >= 10)
 {
 TimeAdd[1] = 0;
 TimeAdd[0]++;
 if(TimeAdd[0] >= 10)
 {
 TimeAdd[0] = 0;
 }
 }
 }
 }
 ShowCase[0] = ShowTable[TimeAdd[0]];
 ShowCase[1] = ShowTable[TimeAdd[1]];
 ShowCase[2] = ShowTable[TimeAdd[2]];
 ShowCase[3] = ShowTable[TimeAdd[3]];
 }
 }
 /**********************end****************************************/
 /*上面是关于陈明计先生的LED显示的TIME_SUM程序*/
 
 
 那个LED 显示程序就是这两个
 
 对于show程序的OSWAIT()函数采用 OSWait(K_SIG,0),而这个 OSWait(K_SIG,0)是一直等待信息的或者说是挂起任务
 
 我有点不明白,为什么一定要用OSWait(K_SIG,0)而不用OSWait(K_TMO,N) 难道该程序真的有信息通知到这个show任务吗 到底它们怎样调度啊 优先级好像都没有设置好呢
 
 明明是只有两个函数啊 他们是怎样达到互相通知的关系啊 有点不明白
 
 希望大侠们指点指点....小弟刚学os呢
 | 
 |