89c52单片机串口接wifi模块,和Andriod手机进行通信

lhzsu 发布于 2015/12/01 13:15
阅读 488
收藏 0

Serverless 架构就不要服务器了?>>>

我在89c52单片机的串口上,接了wifi模块,  我的同事编了一个Andriod应用程序,点击应用程序时,通过stc-isp 软件上的串口助手,可以看到手机发来编码为0101, 但是单片机就是引起不了串口中断,不知是什么原因,请问有什么方法可以调试一下程序?  请您多指教。

以下是单片机程序

 

#include <REG52.h>
unsigned char Buf[10]; 
unsigned char Flag;
sbit LED=P1^0;
unsigned int i;
  
unsigned char  FFW[] = {0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};  //正转励磁序列为A->AB->B->BC->C->CD->D->DA
unsigned char  REV[] = {0x09,0x08,0x0C,0x04,0x06,0x02,0x03,0x01};  //反转励磁序列为AD->D->CD->C->BC->B->AB->A

void delay(unsigned char i)    //定时0.01s的i倍。
{
   unsigned int k;
   for(k=0;k<i;k++)
   {
      TH0=(65536-10000)/256;
      TL0=(65536-10000)/256;
   TR0=1;  //开始计数。
   while(!TF0);//0.01s后,TF0为1;
   TF0=0; 
   }
}

void Serial_Interrupt() interrupt 4
{
    unsigned char ReceiveCount=0;  
 if(RI==1)// 接收数据
 { 
  delay(1);    
  RI=0; //软件清除接收中断
  if(Buf[ReceiveCount]!='0') //接收到的东西是放在SBUF中的,SBUF一次是一个字节,例如0100 \0
  {       //01是一个字节 ,00是另一个字节
      Buf[ReceiveCount]=SBUF; //取数据 SBUF一次只接收一个字节的数据:是unsigned char
      ReceiveCount++;//数组下标自增,使下一个接收数据存到数组的下一位置
      if(ReceiveCount==2)//接收两位数据完成
      {
    Flag=1;
    ReceiveCount=0; //数组下标置第一
      }
  }   
 }
}


void main()
{
    //以下用于延时函数,用了T0的方式1--------------------------------------
    TMOD=0X21;
 TH0=(65536-10000)/256;
 TL0=(65536-10000)/256;
 TR0=1;

    //以下用于串口中断,用了T1的方式2---------------------------------------
 EA = 0; 
    //TMOD = 0x21;
 TH1 = 0xFD;
 TL1 = 0xFD;
 TR1 = 1;

 SM0 = 0;
 SM1 = 1;    //设置有定时器控制波特率的工作方式1
 REN = 1;//串行口允许接受数据
 ES=1;  //使能串口
 PCON = 0x00; //波特率倍增不使能
 EA = 1; 

 //以下用于LED和步进电机试验--------------------------------------------------
    LED=1;
 /*
    while(1)
    {
       LED=~LED;
       for(i=0;i<8;i++)
    {
          P2=FFW[i];
    delay(1);
    }
    }             .t
 */ 
 //以下用于检测是否来了串口中断
 while(1)
 {
  if(Flag==1)
   {
      LED=0;  
    Flag=0;
   if( (Buf[0]==0x01) && (Buf[1]==0x01))
    {
        LED=0;
    }
    else if( (Buf[0]==0x01) && (Buf[1]==0x00))
    {
           LED=1;
    }
   }     
 }
  
}

 

 

 

加载中
0
l
lhzsu
接在自己焊接的89c52学习板上,
0
水门-kay
水门-kay
你的接收模块 可能有问题 好多年了 我也忘的差不多了 做不了明确判断 你可以先在电脑上试一下自己的串口 和51的程序 
0
雁儿在林梢
遇到这种情况,更应该去一步一步去调试。首先,确保单片机串口工作正常,可以试试把串口接收到的数据再转发出来,在电脑上用串口助手查看接收到的数据,或者串口接收到指定数据就点亮一个led,以此测试串口是否接收到数据。如果不行,再试试别的办法,串口接收数据应该不止中断这一种方法,查询法也可以试试看
返回顶部
顶部