|
本帖最後由 lungman 於 2009-6-4 01:20 編輯
中斷程式的說明,希望有幫助
void T0_int(void)interrupt 1//計時0中斷
{
if (count==0) { nopu=0; a=mo[0]; outP2=0x01; }//週期起始,所有參數歸零
if (nopu < 4) //判斷所有伺服馬達輸出脈波是否結束,只有4個馬達(未結束)
{
if (a > 0) //判斷單一伺服馬達輸出脈波是否結束(未結束)
{
P2=outP2; //輸出脈波
a--; //單一伺服馬達輸出脈波寬度數值減1
}
else //判斷單一伺服馬達輸出脈波是否結束(已結束)
{
nopu++; //換下一個伺服馬達輸出脈波
outP2<<=1; //P2左移1個Bit
a=mo[nopu];//存入下一個伺服馬達的脈波資料
}
}
else //判斷所有伺服馬達輸出脈波是否結束(已結束)
P2=0; //輸出歸零
count++; //週期加1
if ( count==200 ) count=0; //判斷週期是否結束(已達20ms),若結束則週期歸零
}
輸出末波參考圖如下
|
|