控制舵机程序大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <>
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0B1;
TL0 = 0x0E0;
EA = 1;
ET0 = 1;
TR0 = 1;
}void delay(1)(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--); }
void main(void)
{
InitTimer0();
P1_2=0;
while(1);
}
void Timer0Interrupt(void) interrupt 1 {
//20ms中断
TH0 = 0x0B1;
TL0 = 0x0E0;
P1_2=1;
delay(1);
P1_2=0;
}
#include<>
#include<>
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit EA1=P0^5;
sbit dj=P0^7; //舵机口
uint t=0;//中断次数
uchar zk;//高电平中断次数uchar p=0;//定义pwm占空比void delay(uint z)
{ uint i,j;
for(i=0;i { for(j=0;j<100;j++); } } void time0() interrupt 1 { TH0=-100>>8;//100us一次中断 TL0=-100%256; if(t==0)zk=p; if(t dj=1; if(t>=zk) dj=0; t++; if(t>=200) t=0;//20mspwm周期 } void turn_left() { IN1=1;IN2=0;EA1=1;//电机工作 p=5;// delay(600); } void turn_right() { IN1=1;IN2=0;EA1=1;//电机工作 p=25;// delay(600); } void mian() { TMOD=0x01;//定时器0工作在方式1 TH0=-100>>8; TL0=-100%256; ET0=1;//开中断 EA=1;//开总中断 TR0=1;//定时器0启动while(1) { turn_left(); turn_right(); } }