请教各位前辈及老师:在入门级的单片机与嵌入式系统书籍中,以按键扫描检测程序为例,我们经常会看到这样的程序实现方法:
#define K1 P0_4
#define K2 P0_5
uchar KeyScan(void)
{
if(K1 == 0)
{
Delay(100);
if(K1 == 0)
{
while(!K1);
return(1);
}
};
if(K2 == 0)
{
Delay(100);
if(K2 == 0)
{
while(!K2);
return(2);
}
};
return(0);
}
我的问题:这样的程序实现能保证系统对其它任务的实时响应(执行)么?比如当一直按住K1按键不放开的话,程序就一直在 while(!K1);处循环,是这样么?是这样的话系统如何有时间执行其它任务(至少对于前后台系统是这样)?另外:如果整个应用软件是基于嵌入式操作系统开发的话,是不是这种按键检测程序写法就是可行的?即不用考虑上述对其它任务的响应实时性问题,因为OS会在按键检测超时强制将该任务挂起?是这样么?
急盼高手解疑,谢谢! |