风雷一队 问题

#include<reg52.h>
#define T_TH0 (65535-1000)/256//定时0.1ms
#define T_TL0 (65535-1000)%256
#define BUFF P2
sbit ENA=P3^6;

sbit IN1=P1^0;
sbit IN2=P1^1; //ENB使能
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit ENB=P3^7; //ENA使能

char flag=1; //标志变量
unsigned int temp=1,buff,num1,num2,count1=0,count2=0; //普通变量

void ahead();
void left1();
void left2();
void left3();
void left4();
void right1();
void right2();
void right3();
void right4();

void main()
{
ENA=1; //使能电机控制端口
ENB=1;

IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=1;

IE=0X82; //使能定时器
TMOD=0x01;
TH0=T_TH0;
TL0=T_TL0;
while(1)
{
BUFF=BUFF&0x0f;

switch(BUFF)
{

case 0x00: flag=1; ahead();break;//flag yanchi

case 0x04: flag=2; right1();break;
case 0x08: flag=3; right2();break;
case 0x06: flag=3; right3();break;
case 0x14: flag=3; right4();break;

case 0x02: flag=4; left1();break;
case 0x01: flag=5; left2();break;
case 0x03: flag=5; left3();break;
case 0x07: flag=5; left4();break;
case 0xff:
case 0xce:
case 0x0c:
case 0x0e: flag=1;right1();break;

default : flag=flag; //flag=1;right1();break;
}
if(flag==1||flag==2||flag==4)
{
if(count1>num1)
{
IN1=0;//正轮
}
else IN1=1;
if(count2>num2)
{
IN4=0;
}
else IN4=1;
if(count1>100)
{
TR0=0;
count1=0;
count2=0;
}
}

if(flag==3)
{
if(count1>num1)
{
IN1=0;
}
else IN1=1;
if(count2>num2)
{
IN3=0;
}
else IN3=1;
if(count1>100)
{
TR0=0;
count1=0;
count2=0;


}
}

if(flag==5)
{
if(count1>num1)
{
IN1=0;
}
else IN1=1;
if(count2>num2)
{
IN2=0;
}
else IN2=1;
if(count1>100)
{
TR0=0;
count1=0;
count2=0;

}
}
}
}

void ahead()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN1=1; //zhengzhuan

IN4=1;


num1=100;
num2=100;
switch(temp)
{
case 3:right2(); break;
case 5:left2(); break;
default :TR0=1;
}
}

void right1()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN1=1;
IN4=1;
num1=20; //左
num2=100; //右
temp=0;
TR0=1;
}
void right2()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN3=0;
IN4=1;
num1=0;
num2=100;
temp=3;
TR0=1;
}
void right3()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN2=0;

IN4=1;
num1=0;
num2=100;
temp=3;
TR0=1;
}
void right4()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN2=1; //倒车

IN4=1;
num1=100;
num2=100;
temp=3;
TR0=1;
}
void left1()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN1=1;
IN4=1;

num1=100; //左
num2=18; //右

temp=4;
TR0=1;
}
void left2()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN1=1;

IN2=0;
num1=100;
num2=0;
temp=5;
TR0=1;
}
void left3()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN1=1;

IN2=0;
num1=100;
num2=0;
temp=5;
TR0=1;
}

void left4()
{
IN1=0; //给低电平
IN3=0; //给低电平
IN2=0;
IN4=0;

IN1=1;

IN2=1;
num1=100;
num2=100;
temp=5;
TR0=1;
}
void timer0()interrupt 1
{
TH0=T_TH0;
TL0=T_TL0;
count1++;
count2++;
}

 

里面num如何调节占空比的  

被遗弃的人 发表于05-12 18:06 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

被遗弃的人
被遗弃的人(下士)
金币:14个|学分:50个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号