本例程晶振为32M
#include
#define uint unsigned int
本文引用地址:https://www.eepw.com.cn/article/201611/319701.htmvoid drive();
void delay(uint);
sbit pwm=P2^0;
uint set; //set为舵机转角标志位
unsigned char angle;//angle为舵机PWM变化打角
void Time0_Init() //中断初始化
{
TMOD=0X01;
IE=0X82;
TH0=(65536-58)/256;
TL0=(65536-58)%6;
TR0=1;
}
void main()//主函数
{
set=0;
angle=23; // 改变angle的值可以改变舵机的占空比
Time0_Init();
for(;;)
{
drive();
}
}
void drive() //电机驱动例程,改变占空比
{
angle=12;
delay(800);
angle=52;
delay(800);
angle=135;
delay(800);
}
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void T0_time()interrupt 1 //100HZ,10MS
{
TH0=(65536-58)/256;
TL0=(65536-58)%6;
if(set pwm=1;
else
pwm=0;
set++;
if(set>385) set=0; //舵机占空比
}
评论