#include<reg51.h> // 本程序是要輸出脈沖周期為20ms高電平1ms的脈沖用來控制舵機,用兩個定時器,每次中斷時間都是0。1ms,中斷10次就是1ms。
sbit P1_0=P1^0; // 用兩個定時器,每次中斷時間都是0。1ms,中斷10次就是1ms。
int n,m,np=0,mp=0;
void init() //初始化設置
{
TMOD=0X22;
EA=1;
ET0=1;
ET1=1;
}
main()
{
init();
P1_0=0;
while(1)
{
n=10;m=200-10; // n m確定中斷的次數
TH0=156; //定時器方式2的初值設置晶振是12mhz,每0.1ms一個中斷TH0=256-100;
TL0=156;
TH1=156;
TH1=156;
P1_0=1;TR0=1;
while(np<n){P2=np;} //等待定時器1的中斷,中斷10次后就是1ms
TR0=0;P1_0=0;TR1=1;
while(mp<m){P3=mp;}
TR1=0;
}
}
void pwm0() interrupt 1
{
np++; P1_0=1; //np用來判別中斷了幾次,與n比較中斷10后就執行下面程序
TH0=156;
TL0=156;
}
void pwm1() interrupt 3
{
mp++; P1_0=0;
TH1=156;
TL1=156;
}
求大神解答已經困擾我很久了
|