#include "nRF24L01.h"
uchar TX_ADDRESS[TX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //發(fā)送地址
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; //驅(qū)動模塊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; //設置定時計數(shù)器工作方式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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
{
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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
{
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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
{
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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
{
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);
}
|