串口通訊測試軟件見附件
實物圖
代碼
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
u8 receiveData;//接收數據的變量
u16 a;
bit flag=1;
float S=0;
sbit n1=P0^2;
void UsartInit()
{ n1=0;
SCON=0X50; //設置為工作方式1 0110
TMOD=0X21; //設置計數器工作方式2
TH1=0XFD; //計數器初始值設置,注意波特率是9600的
TL1=0XFD;
TH0=0;
TL0=0;
TR0=0;
ET0=1;
TI=1;//printf往手機發數據,不能少
TR1=1; //打開計數器
ES=0;
EA=1; //打開總中斷
TI=1;
for (a=0; a<50000; a++);//延時幾秒,讓模塊有時間啟動
printf ("AT\n");
do{
if(RI){
receiveData=SBUF;//接收緩存器
RI=0;
if(receiveData=='K')
flag=0;
}
}while(flag);
flag=1;
for (a=0; a<30000; a++);
printf ("AT+RST\n");
do{
if(RI){
receiveData=SBUF;//接收緩存器
RI=0;
if(receiveData=='y')
flag=0;
}
}while(flag);
flag=1;
for (a=0; a<50000; a++);
printf ("AT+CIPMUX=1\n"); //
do{
if(RI){
receiveData=SBUF;//接收緩存器
RI=0;
if(receiveData=='K')
flag=0;
}
}while(flag);
flag=1;
for (a=0; a<30000; a++);
printf ("AT+CIPSERVER=1,8899\n"); //
do{
if(RI){
receiveData=SBUF;//接收緩存器
RI=0;
if(receiveData=='K')
flag=0;
}
}while(flag);
flag=1;
for (a=0; a<30000; a++);
//RI=0;
ES=1; //打開串口中斷
n1=1;
}
void main()
{
UsartInit(); // 串口初始化
while(1)
{
if(receiveData=='1')
{
n1=0;
P2=0x00;
}
if(receiveData=='2')
{
n1=1;
P2=0xff;
}
}
}
void Usart() interrupt 4
{
receiveData=SBUF;//接收緩存器
RI = 0;//清除接收中斷標志位
}
|