串口通讯测试软件见附件
实物图
代码
#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;//清除接收中断标志位
}
|