51单片机控制舵机的实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
unsigned int count; //0.5ms次数标识
unsigned int count1;
unsigned int miao;
sbit pwm =P1^0 ;
sbit p =P1^1 ; //PWM信号输出
unsigned char jd; //角度标识
void delay(unsigned char i)//延时
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0工作在方式1
IE = 0x82;
EA=1;
TH0 = 0xfe;
TL0 = 0x33; //11.0592MZ晶振,0.5ms
TR0=1; //定时器开始
}
void Time0_Int() interrupt 1 //中断程序
{
TH0 = 0xfe; //重新赋值
TL0 = 0x33;
if(count<=jd) //判断0.5ms次数是否小于角度标识
pwm=1; //确实小于,PWM输出高电平
else
pwm=0; //大于则输出低电平
count++; //0.5ms次数加1
if(count>=40)
{
count=0;count1++;
if(count1>=50)
{
count1=0;miao++;
}
}
}
void main()
{ Time0_Init();
jd=0;p=1; //jd=0舵机复位
count=0;count1=0,miao=0;
while(1)
{
if(miao>57)
{
jd=3;
}
}
}