|
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呢
LED程序ourdev_428154.rar(文件大小:18K) (原文件名:LED.rar)</
<font color=#699BCD>
本贴被 125008301 编辑过,最后修改时间:2008-09-23,21:51:16. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|