不要在中断做乘除,ARM上百兆的带硬件乘除的土豪随意. 中断改为 void time0() interrupt 1 { uchar m; TH0=0x3c; TL0=0xb0; //50ms m++; if(m>=10) { m=0; gFLCalc=TURE; } ,在主循环中 增加if(gFLCalc){ gFLCalc=0; Mileage=Mileage+Velocity*500/36; //里程m=速度km/h*1000*5/3.6 Velocity=count/5;//将100ms内的脉冲数 count=0; } |