51单片机2路舵机驱动(定时器法)
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit PWM1=P3^6;
sbit PWM2=P3^7;
uint aa;
void tuoji_init()
{
TMOD=0x01;
TH0=(65536-38)/256;//定时50us
TL0=(65536-38)%6;
EA=1;
ET0=1;
TR0=1;
PWM1=1;
PWM2=1;
}
void chudong_pwm(uchar temp1,uchar temp2)
{
if(aa==temp1) // 取值13-28-45(右转90度,正中间,左转90度);
PWM1=0;
if(aa==temp2) // 取值13-21-25(根据机械人性化要求,确定下面控制角度);
PWM2=0; //(仰视最大14,人性化俯视16,平视19,人性化俯视21,俯视最低25);
}
void main()
{
tuoji_init();
while(1)
chudong_pwm(18,25);
}
void dingshi0() interrupt 1
{
TH0=(65536-38)/256;//定时50us 计算初值46
TL0=(65536-38)%6;
aa++;
if(aa==460)
{
aa=0;
PWM1=1;
PWM2=1;
}
}