电动车换锂电了,想着做个里程表,现在卡在显示速度问题上了。
先前想法是用定时器延时1秒,根据检查车轮转动开关计算1秒内转的圈数算出速度,
后来发现1秒时间太短了,计算的速度都是几个固定的数,而且如果刚好开关一直开着,速度就一直有,这可能是计时器计时重复启动导致。
后来又在网上学习了用车轮转动启动外部中断,根据2次中断算出2次中断时间,现在是抄袭网上的程序,还是显示几个固定的速度,而且如果刚好开关一直开着还是速度一直有。请大家给指教一下。问题出在哪里。
void diaodian1(void) interrupt 1
{
TH0=0x3C;
TL0=0xaf;
jishu++;
}
void jiance(void) interrupt 2
{
unsigned int temp;
time=jishu;
TR0=0;
temp=TH0;
temp=((temp << 8) | TL0);
TH0=0x3c;
TL0=0xaf;
jishu=0;
TR0=1;
time=time*50000+temp;
sudu1=L*36000000/time; //sudu1 到主程序显示当时的速度。
}