|
用延時(shí)程序會(huì)造成整個(gè)程序大部分時(shí)間都卡在 延時(shí)上,,,整個(gè)程序運(yùn)行效率不高
要學(xué)會(huì)用定時(shí)器,無論你控制幾個(gè)電機(jī) 只要一個(gè)定時(shí)器就夠了
利用定時(shí)器中斷產(chǎn)生時(shí)間基準(zhǔn),如1ms
當(dāng)定時(shí)器進(jìn)入中斷后 變臉自加加
當(dāng)加到你需要的值時(shí)候 換相 , 處理完記得清零變量
這樣你要控制多個(gè)電機(jī)不同轉(zhuǎn)速 只要聲明幾個(gè)相應(yīng)變量 即可
void TM0_Isr() interrupt 1
{
motor1++;//電機(jī)1
motor2++;//電機(jī)2
motor3++;電機(jī)3
motor4++;電機(jī)4
}
void main()
{
TMOD = 0x00;
TL0 = 0x66; //65536-11.0592M/12/1000
TH0 = 0xfc;
TR0 = 1; //啟動(dòng)定時(shí)器
ET0 = 1; //使能定時(shí)器中斷
EA = 1;
while (1){if(motor1==10){motor1=0; } //判斷是否=10Ms 清空變量 然后電機(jī)1換相
if(motor2==20){motor2=0; } //判斷是否=20Ms 清空變量 然后電機(jī)2換相
if(motor3==30){motor3=0; } //判斷是否=30Ms 清空變量 然后電機(jī)2換相
if(motor4==40){motor4=0; }//判斷是否=40Ms 清空變量 然后電機(jī)2換相
}
按這個(gè)思路就算10個(gè)電機(jī)不同轉(zhuǎn)速都不會(huì)卡
|
|