main.c文件中
#include <REGX52.H>
#include"lanya.h"
#include"Delay.h"
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);
UsartConfiguration();
Delay(20);
}
}
}
lanya.c
#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int
sbit LB=P2^0; //左边马达下接口 out2
sbit LF=P2^1; //左上 out1
sbit RB=P2^2; //右下 out4
sbit RF=P2^3; //右上 out3
void stop()
{
LF=0;
LB=0;
RF=0;
RB=0;
}
void forward()
{
LF=1;
LB=0;
RF=1;
RB=0;
}
void back()
{
LF=0;
LB=1;
RF=0;
RB=1;
}
void left()
{
LF=0;
LB=1;
RF=1;
RB=0;
}
void right()
{
LF=1;
LB=0;
RF=0;
RB=1;
}
void Com_Int(void) interrupt 4
{
uchar receive_data;
EA = 0;
if(RI == 1)
{
RI=0;
LF=0;
RF=0;
LB=0;
RB=0;
receive_data = SBUF;
switch(receive_data)
{
case ('1'):
forward();break;
case ('2'):
back();break;
case ('3'):
left();break;
case ('4'):
right();break;
case ('0'):
stop();break;
}
}
EA = 1;
}
void UsartConfiguration()
{
SCON=0X50; //SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志
TMOD=0X20;
PCON=0X00;
TH1=0Xfd;
TL1=0Xfd; //波特率为9600算出来的fd
TR1= 1;
ES = 1;
EA = 1;
}
lanya.h
#ifndef __lanya_H__
#define __lanya_H__
void stop();
void forward();
void back();
void left();
void right();
void UsartConfiguration();
void main();
#endif
UART.c文件中
#include <REGX52.H>
/**
*注释:串口初始化 4800bps@12.000MHz
输入参数:无
输出参数:无
*/
void UART_Init()
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xF3; //设置定时初始值
TH1 = 0xF3; //设置定时重载值
ET1 = 0; //禁止定时器%d中断
TR1 = 1; //定时器1开始计时
EA=1; //中断
ES=1;
}
/**
*注释:串口发送一个字节数据
输入参数: byte要发送一个数据
输出参数:无
*/
void UART_SendByte(unsigned char Byte)
{
SBUF=Byte;
while(TI==0);
TI=0;
}
//串口中断函数模板
//void UART_Routine() interrupt 4
//{
// if(RI==1)
// {
//
// RI=0;
//
// }
//}
UART.h文件中
#ifndef __UART_H__
#define __UART_H__
void UART_Init();
void UART_SendByte(unsigned char Byte);
#endif
delay.c文件中
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
delay.h中
#ifndef __DELAY_H__
#define __DELAY_H__
void Delay(unsigned int xms);
#endif