控制舵机程序大全

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

}

}

相关文档
最新文档