小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 4814|回复: 4

程序问题不知道出在哪儿,接到WiFi后小车没反应,请大家看看能不能找出问题

[复制链接]
发表于 2014-8-28 14:59:29 | 显示全部楼层 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit a1=P0^0;  //电机A
sbit a2=P0^1;
sbit b1=P0^2; //电机B
sbit b2=P0^3;
sbit ENA=P2^0; //电机A使能端
sbit ENB=P2^1; //电机B使能端

uchar Count=0; //收到0xff个数
uchar n=1;
uchar dat[5]; //接收数据
uint pwm=16,num=0; //PWM调速
void delay(uint i)  //延时函数
{
     while(i--);
}
void motor_init()  //电机使能
{
     ENA=1;
     ENB=1;
}
void Com_init() //串口初始化
{
     TMOD|=0x20;
     SCON=0x50; //串口工作在模式1
     TH1=0xFD; //产生9600的波特率
     TL1=0xFD;
     EA=1;
     ES=1;
     TR1=1;
}
void t0_init()   //定时器0初始化
{
     TMOD|=0x01;//定时器T0工作在方式1
     TH0  =0xFE;
     TL0  =0x0C;
     EA   =1;
     ET0  =1;
     TR0  =1;
}
void motor_forward()  //前进
{
     P0=0X09;
}
void motor_backward()  
{
     P0=0x06;
}
void motor_turnleft()
{
     P0=0x0a;
}
void motor_turnright()
{
     P0=0x05;
}
void motor_stop()
{
     P0=0x00;
}
void motor_acc(uchar x) //PWM加速
{
     if(0x05==x)
     {
          if(pwm<32)
          {
              pwm++;
          }
     }
}
void motor_dec(uchar y) //PWM减速
{
     if(0x06==y)
     {
          if(pwm>1)
          {
               pwm--;
          }
     }
}
void command_sig(uchar x)   
{
     switch(x)
     {
          case 0x00: motor_stop();return;
          case 0x01: motor_forward();return;
          case 0x02: motor_backward();return;
          case 0x03: motor_turnleft();return;
          case 0x04: motor_turnright();return;
          default  : return;
     }
}
void main()
{
     P0=0;
     motor_init();
     Com_init();
     t0_init();
     while(1)
     {
          motor_acc(dat[2]);
          motor_dec(dat[2]);
     }
}
void uart() interrupt 4    //串口中断,完成数据解析
{
     uchar temp=0;
     if(RI)
     {
          RI=0;
          ES=0;
          temp=SBUF;                //接收数据(每次接收一个字节,直到接收完为止)  
                                             // 1个字节占2个16进制位,一个16进制位占0.5个字节
          if(0xff==temp&&Count<2)
          {
               dat[0]=0xff;
               Count++;//接到0xff的次数
          }
          else
          {
               dat[n]=temp;
               n++;
          }
          if(2==Count)
          {
               Count=0;
               n=1;
               temp=0;
              dat[4]=0xff;
              delay(10000);
          }
          else
          {
               TI=0;
          }
          ES=1;
     }
}
void t0() interrupt 1  //PWM调速实现
{
     TR0=0;
     TH0=0xFE;
     TL0=0x0C;
     num++;
     if(num<pwm)
     {
          command_sig(dat[2]);
     }
     if(num>=pwm)
     {
          P0=0;
     }
     if(32==num)
     {
          num=0;
     }
}
回复

使用道具 举报

发表于 2014-8-28 19:11:56 | 显示全部楼层
首先要看下WIFI模块没有没有给出正确的指令,然后再看单片机能不能正常接收指令并执行动作,这两步骤分别用串口助手来查看,如果是单片机的程序的问题,就看是串口中断还是定时器那里的问题,一个个验证下....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 08:09:02 | 显示全部楼层
从前 发表于 2014-8-28 19:11
首先要看下WIFI模块没有没有给出正确的指令,然后再看单片机能不能正常接收指令并执行动作,这两步骤分别用 ...

如何用串口助手查看WiFi模块呢,直接和WiFi上的TXD、RXD、GND相连就行了吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-29 08:34:33 | 显示全部楼层
午夜星空 发表于 2014-8-29 08:09
如何用串口助手查看WiFi模块呢,直接和WiFi上的TXD、RXD、GND相连就行了吗?

串口助手怎么能和WiFi交换数据呢,是不是需要一根特殊的串口线
回复 支持 反对

使用道具 举报

发表于 2014-8-29 19:49:48 | 显示全部楼层
午夜星空 发表于 2014-8-29 08:34
串口助手怎么能和WiFi交换数据呢,是不是需要一根特殊的串口线

你没有USB转串口线吗?就用这个转接板来测试下!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-5-4 19:26 , Processed in 1.098252 second(s), 18 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表