#include "nRF24L01.h"
uchar TX_ADDRESS[TX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //发送地址
uchar RX_ADDRESS[RX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //接收地址
uchar rate = 0x0F; //2Mbs, 0dB 低噪声增益开启
//--定义一个全局变量--//
unsigned char timer1;
void Time1Config();
sbit L1 =P3^4; //驱动模块in1,2,3.4
sbit L2 =P3^5;
sbit R1 =P3^6;
sbit R2 =P3^7;
sbit m1 =P2^1;
sbit m2 =P2^0;
sbit h1 =P2^2;
sbit PWM1=P3^4;
sbit PWM2=P3^5;
sbit PWM3=P3^6;
sbit PWM4=P3^7;
uchar rece_buf[32]; //接收寄存器
//int num,S=0,time=0,timer=0; //a0=37:最大角度,脉宽1.899ms
void delay(uint t)
{
uint a,b;
for(a=0;a<t;a++)
for (b=0;b<110;b++);
}// 寻迹
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFE; //重新赋初值
TL1 = 0x0C;
timer1++;
}
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时0.5ms--//
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
void main()
{
int i,t;
//寻迹
Time1Config();
while(1)
{
if(h1==1)
{
if(timer1>60) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <60) //改变30这个值可以改变直流电机的速度
{
PWM1=0;
PWM2=1;
PWM3=0;
PWM4=1;
delay(100);
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==0&&m2==0) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <15) //改变30这个值可以改变直流电机的速度
{
PWM1=1;
PWM2=0;
PWM3=0;
PWM4=1;
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==1&&m2==1) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <15) //改变30这个值可以改变直流电机的速度
{
PWM1=0;
PWM2=1;
PWM3=1;
PWM4=0;
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==1&&m2==0) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
L1 =0;
L2 =1;
R1 =1;
R2 =0;
delay(10);
if(timer1>60) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <60) //改变30这个值可以改变直流电机的速度
{
PWM1=1;
PWM2=0;
PWM3=1;
PWM4=0; }
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==0&&m2==1) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
L1 =0;
L2 =1;
R1 =1;
R2 =0;
delay(10);
if(timer1>60) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <60) //改变30这个值可以改变直流电机的速度
{
PWM1=0;
PWM2=1;
PWM3=0;
PWM4=1;
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
delay(20);
}
|