|
之前在網路上找到的程式如下~
基本上控制一顆沒有問題,想請教我該怎麼修改程式,才能透過不同的按鍵,去控制不同顆伺服馬達轉動..
譬如:
P1_0 ,P1_1,P1_2 控制第一顆 左轉 中間 右轉
P1_3 ,P1_4,P1_5 控制地二顆 左轉 中間 右轉
以此類推....希望能控制 5顆
謝謝~
--------------
#include <AT89X51.H>
unsigned int dutytime=20000; //65536-45536就是責任週期
unsigned int ton=4400; //高電位比例=50%
unsigned int toff=35600; //低電位比例=50%
unsigned int temp; //給計時器工作用
void timer0_initialize(void) //初始化計時器0
{
EA=0; //關閉中斷功能(所有中斷副程式失效)
IE|=0x02; //開啟計時器中斷功能
TMOD|=0x01; //設定計時器模式
temp=65536-dutytime; //設定中斷一次的時間(預設是dutytime)
TH0=temp/256; //填入高八位
TL0=temp%256; //填入低八位
TR0=1; //啟動計時器
EA=1; //開啟中斷功能(中斷副程式可以執行)
}
void timer0_isr(void) interrupt 1 //使用計時器中斷副程式產生PWM
{
if(P2_0==0)
{
TR0=0;
temp=65536-toff;
TH0=temp/256;
TL0=temp%256;
TR0=1;
P2_0=0;
}
else
{
TR0=0;
temp=65536-ton;
TH0=temp/256;
TL0=temp%256;
TR0=1;
P2_0=1;
}
}
void main(void) //主程式開始
{
timer0_initialize();
while(1)
{
if(P1_0==0)
{
ton=5500;
toff=40000-ton;
}
if(P1_1==0)
{
ton=3550;
toff=40000-ton;
}
if(P1_2==0)
{
ton=1500;
toff=40000-ton;
}
}
} |
|