本帖最后由 cov0xt 于 2015-12-20 09:09 编辑
在51单片机中,中断或定时器的开启相当麻烦,一大堆标志位,而且数量有限,非常有用的定时器,才给2-3个。
最近通过状态机和分时操作系统理论的研究,想出了一种代码结构:
void TimerRun()
{
timerCounter++;
if(timerCounter>50000)
{
timerFlag=1;
timerCounter=0;
}
}
//--------
业务逻辑函数()
{
if(timerFlag==1)
{
//定时器到时间了,做些什么
//定时器标志变量清零
timerFlag=0;
}
}
//--------
void main()
{
while(1)
{
TimerRun();
业务逻辑函数();
}
}
这样的程序结构,代码非常清晰,而且不用定时器中断也完成了定时器的工作,如果对时间有严格要求的话,手动调整50000就可以了。
其实我觉得,定时器中断的本质,也就是在主循环里跳到一个函数里。
本文标题只是为了吸引眼球,我真正想问的是【定时器中断存在的意义何在?】
|