#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;
}
求大神解答已经困扰我很久了
|