用PC端配置好 可以連接 接在單片機上 就配置不了了 大佬幫我看一下 是不是這個配置程式有問題
#include "reg52.h" //此檔案中定義了單片機的一些特殊功能暫存器
#include "intrins.h" //此檔案中定義了單片機的一些特殊功能暫存器
#include "string.h"
typedef unsigned int u16; //對資料型別進行宣告定義
typedef unsigned char u8;
sbit led=P2^0;
sbit led0=P2^1;
u8 sing=0;
u8 receive[2];
void delay1ms(u16 i) //誤差 0us
{
unsigned char a,b,c;
for(c=i;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
/*******************************************************************************
* 函式名 :UsartInit()
* 函式功能 :設定串口
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void UsartInit()
{
SCON=0X50; //設定為作業方式1
TMOD=0X20; //設定計數器作業方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數器初始值設定 4800
TL1=0XF3;
ES=0; //串口中斷
EA=1; //打開總中斷
TR1=1; //打開計數器
}
/*
void send(u8 n) //字符發送
{
ES=0; //關閉串口中斷
SBUF=n; //發送資料
while(!TI); // 等待發送完成
TI=0; //清除發送完畢中斷請求標志位
ES=1; //打開串口中斷
}
void ESP8266(u8 *s)//單片機向ESP8266發送AT配置指令、
{
while(*s!='\0')
{
send(*s); //逐個發送
s++;
}
s=0;
} */
void rs1_232tx(unsigned char txdata)
{
SBUF=txdata;//把資料傳給串口暫存器SBUF。
while(!TI);//檢測是否發完。
TI=0;//重置初值。
}
void RS1_sendstr(unsigned char *dat)
{
unsigned char i,k;
k=strlen(dat);
for(i=0;i<k;i++)
{
rs1_232tx(*(dat+i));
}
}
void main()
{
led=1;
UsartInit(); // 串口初始化
delay1ms(2000);
RS1_sendstr("AT+CIPMUX=1\r\n");
delay1ms(100);
RS1_sendstr("AT+CIPSERVER=1,8080\r\n");
delay1ms(100);
led=0;
ES=1;
while(1)
{
if(receive[0]=='0') led0=0;
if(receive[0]=='1') led0=1;
}
}
void Usart() interrupt 4
{
if(RI)
{
RI=0;
if(sing==1)
{
receive[0]=SBUF;
sing=0;
}
if(SBUF==':') sing=1;
}
/* receive[0]=SBUF;
RI=0;//清除接收中斷標志位
SBUF=receive[0];//將接收到的資料放入到發送暫存器
while(!TI); //等待發送資料完成
TI=0; */
}
uj5u.com熱心網友回復:
程式中有兩個 發送程式 都配置不了uj5u.com熱心網友回復:
波特率搞對沒 ? 記得以前搞ESP8226的時候波特率默認是115200 要么是9600 先檢查一下,我這里有以前除錯成功的代碼 待會兒發你郵箱uj5u.com熱心網友回復:
好的 謝謝 我試一下 波特率啥的都設定好了 用PC機發送指令之后就能通信 斷電到單片機上 就不行轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/87163.html
標籤:單片機/工控
