標(biāo)題: 有大佬用C51單片機(jī)進(jìn)行過ESP8266的開發(fā)嗎?想用ESP8266等時(shí)間循環(huán)輸出八位的數(shù)組 [打印本頁(yè)]

作者: 文子路    時(shí)間: 2018-3-28 21:08
標(biāo)題: 有大佬用C51單片機(jī)進(jìn)行過ESP8266的開發(fā)嗎?想用ESP8266等時(shí)間循環(huán)輸出八位的數(shù)組
      我想用C51單片機(jī)和ESP8266做一個(gè)數(shù)據(jù)輸出端和數(shù)據(jù)接收端。有沒有大佬做過這塊的開發(fā),看到網(wǎng)上的教程主要是以接收信息為主的,很少有發(fā)送信息出去的。自己試著編了一下,在“AT+CIPSEND=0,8”這里遇到了問題。我想通過ESP8266定時(shí)一次一次地從一個(gè)八位數(shù)組中發(fā)送數(shù)據(jù)出去。接收端同樣用ESP8266和C51的組合接收。      我現(xiàn)在的問題是,編完ESP初始化程序之后,想用AT+CIPSEND=0,8來(lái)輸出,但是,不知道怎么控制延時(shí),總是會(huì)提醒busy,或者,不能輸出我數(shù)組的內(nèi)容,想問大佬們這里要怎么改(標(biāo)紅的代碼區(qū)
      顯示的串口輸入值是這樣的:
   
    接收客戶端的接收結(jié)果是這樣的:

這個(gè)是我的代碼,大佬們能看看要怎么改嗎?
#include "reg51.h"
unsigned char i = 0;
unsigned char *p;
unsigned char Buffer[] = {0x05,0x04,0x03,0x02,0x01,0x43,0x42,0x41,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81};
unsigned char RST[]="AT+RST\r\n";//重啟模塊
unsigned char LYMS[]="AT+CWMODE=3\r\n";//設(shè)置WIFI模塊為station+AP模式
unsigned char SZLY[]="AT+CWSAP=\"TRAFFIC\",\"0123456789\",11,0\r\n";/*設(shè)置WIFI模塊連接WIFI的名稱與密碼*/
unsigned char KQFU[]="AT+CIPSERVER=1,5000\r\n";//連接服務(wù)器
unsigned char TCMS[]="AT+CIPMODE=1\r\n";//開啟透?jìng)髂J?br /> unsigned char FSSJ[]="AT+CIPSEND=0,8\r\n";//發(fā)送數(shù)據(jù)         
unsigned char SZDLJ[13]="AT+CIPMUX=1\r\n"; //多路連接
void Delay_Xms(unsigned int x)
{        
        unsigned char i, j;

        while(x--)
        {
                i = 2;
                j = 199;
                do
                {
                        while (--j);
                } while (--i);
        }
}

void Init_Uart(void)
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        TMOD &= 0x0F;                //清除定時(shí)器1模式位
        TMOD = 0x20;                //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
        TL1 = 0xFD;                //設(shè)定定時(shí)初值
        TH1 = 0xFD;                //設(shè)定定時(shí)器重裝值
        ET1 = 0;                //禁止定時(shí)器1中斷
        TR1 = 1;                //啟動(dòng)定時(shí)器1
        ES=1;
        EA=1;
}

void SendByte(unsigned char dat)
{
        TI=0;
        SBUF=dat;
        while(!TI);
}

void SendArry(unsigned char *p,unsigned char num)
{
        while(num--)
        {
                SendByte(*p++);
        }
}

void SendString(unsigned char *p)
{
        while(*p)
        {
                SendByte(*p++);
        }
}

void Online(void)
{
        Delay_Xms(1500);//等待WIFI上電初始化
        SendString(RST);//重啟模塊
        Delay_Xms(1500);//等待WIFI上電初始化
        SendString(LYMS);//AT+CWMODE=3 設(shè)置station+AP模式
        Delay_Xms(100);
        SendString(SZLY);//設(shè)置WIFI模塊連接WIFI的名稱與密碼
        Delay_Xms(2000);//等待連接WIFI以及獲取IP地址
        SendString(SZDLJ);//設(shè)置多連接
        Delay_Xms(100);
        SendString(KQFU);//連接服務(wù)器
        Delay_Xms(2000);//等待連接成功
}

void main()
{
        Init_Uart();
        Online();//上線過程的代碼 需要具體測(cè)試
        while(1)
        {        
                 for(i=0;i<16;i++)
                {
                    p=FSSJ;
                        while(*p)
                        {
                                SBUF=(*p++);
                                while(!TI);
                                TI=0;
                        }
                        SBUF=Buffer[ i];
                        while(!TI);
                        TI=0;
                    Delay_Xms(100);
                }
        }
}


作者: 文子路    時(shí)間: 2018-3-28 21:54
感覺是 這段代碼沒有跳出來(lái)
                            for(j=0;j<16;j++)
                            {
                                SBUF=*(p+j);
                                while(!TI);
                                TI=0;
                            }
( 備注:   unsigned char FSSJ[]="AT+CIPSEND=0,8\r\n";//發(fā)送數(shù)據(jù)        )




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1