以下为分文件,需要进行整合
main.c
//#include "reg52.h"//代码里边没有,sbit i/o口,可以不要声明
//#include "intrins.h"//代码里边没有_nop_();可以不要该声明
#include "motor.h"
#include "delay.h"
#include "uart.h"
void main()
{
Delay1000ms();
UartInit();
while(1);
}
motor.c
#include "reg52.h"
sbit right1=P3^2;
sbit right2=P3^3;
sbit left1=P3^4;
sbit left2=P3^5;
void goback()
{
left1=1;
left2=0;
right1=1;
right2=0;
}
void goforward()
{
left1=0;
left2=1;
right1=0;
right2=1;
}
void goleft()
{
left1=0;
left2=0;
right1=0;
right2=1;
}
void goright()
{
left1=0;
left2=1;
right1=0;
right2=0;
}
void stop()
{
left1=0;
left2=0;
right1=0;
right2=0;
}
motor.h
void goback();
void goforward();
void goleft();
void goright();
void stop();
uart.c
#include "reg52.h"
#include "motor.h"
#include "string.h"
#define SIZE 12
sfr AUXR=0x8E;//不认识AUXR,报错需要声明
char buffer[SIZE];
void UartInit(void) //9600bps@11.0592MHz
{
AUXR=0x01;
SCON=0x50;//配置串口工作方式1,ren能接收01000000
TMOD&=0x0F;
TMOD|=0x20;//定时器1的工作方式8位自动重装配置
TH1=0xFD;
TL1=0xFD;//9600波特率的初值
TR1=1;//启动定时器
EA=1;//打开总中断
ES=1;//允许串口中断
}
void uart_toutine()interrupt 4
{
static int i = 0;
char tmp;
if(RI)
{
RI = 0;
tmp = SBUF;
if(tmp=='M'){//WIFI GOT IP中既包含W、又包含F,底下条件满足FI,D5亮
i = 0;
}
buffer[i++] = tmp;
if(buffer[0] == 'M'){
switch(buffer[1]){
case '1':
goforward();
break;
case '2':
goleft();
break;
case '3':
goright();
break;
case '4':
goback();
break;
default:
stop();
break;
}
}
}
if(i == 12){
memset(buffer, '\0', SIZE);
i = 0;
}
}
uart.h
void UartInit(); //9600bps@11.0592MHz
delay.c
#include "intrins.h"
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
delay.h
void Delay1000ms();