#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit c=P0^1;//白线控制线
uint pluse;
uchar flag=0;
volatile uchar count;
void begin() //初始化程序
{
c=1;
TMOD=0x11; //设置定时器0和定时器1的工作方式为方式1
TH0=(65536-1000)/256; //求模
TL0=(65536-1000)%256; //求余
TH1=(65536-20000)/256; //求模
TL1=(65536-20000)%256; //求余
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
ET1=1;
TR1=1;
}
void timer0() interrupt 1 //定时器0中断服务程序
{
TR0=0;//关闭定时器0
c=0;
TH0=(65536-pluse)/256; //求模
TL0=(65536-pluse)%256; //求余
}
void timer1() interrupt 3 //定时器1中断服务程序
{
c=1;
TH1=(65536-20000)/256; //求模
TL1=(65536-20000)%256; //求余
TR0=1;//启动定时器0
count++;
}
void main()
{
begin();
count=0;
pluse=1000;
while(1)
{
if(count==2)
{
if(pluse==2000){flag=1;}
if(pluse==1000){flag=0;}
if(flag==0){pluse=pluse+50;}
if(flag==1){pluse=pluse-50;}
count=0;
}
}
}
程序已经通过测试,想测试舵机好坏的可以拿去试试。
|