#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
uchar Buffer[4]={0};//从串口接收的数据
sbit Left_Posi
tive=P1^0;
sbit Left_Negative=P1^1;
sbit Right_Positive=P1^2;
sbit Right_Negative=P1^3;
/***************************************************
*名称:Com_int()
*功能:串口中断子函数
*输入:无
*输出:无
***************************************************/
void Com_int(void) interrupt 4
{
RI = 0; //令接收中断标志位为0(软件清零)
Buffer[0]= SBUF-48; //将接收到的数据送入变量 UART_data
while(TI == 0); //检查发送中断标志位
TI = 0;
}
/***************************************************
*名称:Com_Init()
*功能:串口初始化,晶振11.0592,波特率是9600,使串口中断
*输入:无
*输出:无
***************************************************/
void Com_Init(void)
{
TMOD=0x20;
PCON=0x00;
SCON=0x50;
TH1=0xfd; //设置波特率为9600
TL1=0xfd;
TR1=1; //启动定时器1
ES=1; //开串口中断
EA=1; //开总中断
}
/***************************************************
*名称:Moto_Forward()
*功能:电机1,2启动,都是前进,整车表现为前进
*输入:无
*输出:无
***************************************************/
void Moto_Forward()
{
Right_Negative=0;
Left_Positive=1;
Left_Negative=0;
Right_Positive=1;
}
/**************************************************
*名称:Moto_Backward()
*功能:电机1,2启动,都是后退,整车表现为后退
*输入:无
*输出:无
**************************************************/
void Moto_Backward()
{
Left_Positive=0;
Right_Positive=0;
Right_Negative=1;
Left_Negative=1;
}
/*************************************************
*名称:Moto_TurnLeft()
*功能:电机1后退,电机2前进,整车表现为左转
*输入:无
*输出:无
*************************************************/
void Moto_TurnLeft()
{
Left_Negative=1;
Right_Positive=1;
Right_Negative=0;
Left_Positive=0;
}
/*************************************************
*名称:Moto_TurnRight()
*功能:电机1前进,电机2后退,整车表现为右转
*输入:无
*输出:无
*************************************************/
void Moto_TurnRight()
{
Right_Negative=1;
Left_Negative=0;
Left_Positive=1;
Right_Positive=0;
}
/*************************************************
*名称:Moto_Stop()
*功能:电机1停止,电机2停止,整车表现为停止
*输入:无
*输出:无
*************************************************/
void Moto_Stop()
{
Right_Negative=0;
Left_Negative=0;
Left_Positive=0;
Right_Positive=0;
}
void main()
{
Com_Init(); //串口初始化//P1=0;
while(1)
{
switch(Buffer[0])
{
case 0:Moto_Stop();break;
case 1:Moto_Forward();break;
case 2:Moto_Backward();break;
case 3:Moto_TurnLeft();break;
case 4:Moto_TurnRight();break;
default:break;
}
}
}
以上是程序,上电后,蓝牙传送1 2 3 4,都只有左电机会动,右点机不动,请问指导
一周热门 更多>