使用51单片机定时器1控制舵机pwm的代码
时间: 2023-10-29 20:07:33 浏览: 49
以下是使用51单片机定时器1控制舵机PWM的代码:
#include<reg52.h>
sbit Servo=P1^0; //舵机信号引脚
void ServoRotate(unsigned char angle) //控制舵机旋转角度
{
unsigned char i;
for(i=0;i<angle;i++) //循环控制舵机旋转
{
Servo=1; //输出高电平
delay_ms(10); //延时10ms
Servo=0; //输出低电平
delay_ms(10); //延时10ms
}
}
void Timer1Init() //定时器1初始化
{
TMOD|=0x10; //设置为定时器1模式
TH1=0xF8; //定时器1计数初值高位
TL1=0xCC; //定时器1计数初值低位
ET1=1; //开定时器1中断
EA=1; //开总中断
TR1=1; //启动定时器1
}
void main()
{
Timer1Init(); //初始化定时器1
while(1)
{
ServoRotate(90); //控制舵机旋转到90度角
delay_ms(1000); //延时1秒
ServoRotate(0); //控制舵机旋转到0度角
delay_ms(1000); //延时1秒
}
}
void Timer1() interrupt 3 //定时器1中断服务函数
{
TH1=0xF8; //定时器1计数初值高位
TL1=0xCC; //定时器1计数初值低位
Servo=0; //输出低电平
}