分享一個自編的,用變量控制pwm占空比程序,免去了不斷設置時間的煩惱 。
簡單粗暴的風格,直接上程序。
// SG90舵機測試程序,用變量控制pwm占空比
// 使用單片機STC89C51
// 晶振:11.0592M
// 顯示:LCD1602
// 編譯環境 Keil uVision2
////////////////////////////////////////////////
#include <reg52.h>
#define uint unsigned int
uint count,i;
sbit pwm=P0^0 ;
void pwm100us(uint);
void delay50ms();
////////////////////////////////////////////////
void main()
{
EA=1;
TMOD=0x10;
while(1)
{
i=0;
for(i=6;i<25;i++)
{
pwm100us(i);
delay50ms();
}
for(i=24;i>5;i--)
{
pwm100us(i);
delay50ms();
}
}
}
//////////////////////////////////////////////
void pwm100us(uint x)
{ uint y;
pwm=1;
while(count<x)
{
TF1=0;
TH1=0xff;
TL1=0xa4;
TR1=1;
while(TF1==0);
count++;
}
count=0;
y=(200-x);
pwm=0;
while(count<y)
{
TF1=0;
TH1=0xff;
TL1=0xa4;
TR1=1;
while(TF1==0);
count++;
}
count=0;
}
/////////////////////////////////////////////
void delay50ms()
{
unsigned char a,b,c;
for(c=3;c>0;c--)
for(b=44;b>0;b--)
for(a=173;a>0;a--);
} |