用延时程序会造成整个程序大部分时间都卡在 延时上,,,整个程序运行效率不高
要学会用定时器,无论你控制几个电机 只要一个定时器就够了
利用定时器中断产生时间基准,如1ms
当定时器进入中断后 变脸自加加
当加到你需要的值时候 换相 , 处理完记得清零变量
这样你要控制多个电机不同转速 只要声明几个相应变量 即可
void TM0_Isr() interrupt 1
{
motor1++;//电机1
motor2++;//电机2
motor3++;电机3
motor4++;电机4
}
void main()
{
TMOD = 0x00;
TL0 = 0x66; //65536-11.0592M/12/1000
TH0 = 0xfc;
TR0 = 1; //启动定时器
ET0 = 1; //使能定时器中断
EA = 1;
while (1){if(motor1==10){motor1=0; } //判断是否=10Ms 清空变量 然后电机1换相
if(motor2==20){motor2=0; } //判断是否=20Ms 清空变量 然后电机2换相
if(motor3==30){motor3=0; } //判断是否=30Ms 清空变量 然后电机2换相
if(motor4==40){motor4=0; }//判断是否=40Ms 清空变量 然后电机2换相
}
按这个思路就算10个电机不同转速都不会卡
|