我想改起来麻烦,还是次要的。
我主要是想让程序更加模块化,所以想到了这!
那我给大家说一种方法,不需要全局变量的,不过有局限性
在中断设置一计数器和一函数用于读取计数值,在定时处设一函数计算上次循环读取的计数值与当前计数值之差,再把差累加用于定时。语言不好描述,见谅
ISR
{
Ticks++;
}
GetTicks
{
return Ticks;
}
DifferenceCal
{
difference = currentTicks - lastTicks;
}
some routine
{
DifferenceCal;
GetTicks;
xxx_Timer+=difference;
.
.
.
..
}
局限在于 1,定时器周期必须小于程序循环周期,diference才不至于每次都是零,且定时周期越小精度越高 2,初始时,会有问题,需要小心避免。 |