求大神帮我看看为什么我用下面的代码不能使用蓝牙串口助手实现单片机和蓝牙模块HC-06通信? 100
#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintuchara;bitbusy;sbitP20...
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a;
bit busy;
sbit P20=P2^0;
void init() /*中断的初始化子函数*/
{
TMOD=0x20; //选择定时器1工作方式2
/*下面三行代码设置SCOD,来选择串口工作方式*/
SM0=0;
SM1=1;
REN=1; //选择的是串口工作方式1
/*给TH TL装初值*/
TH1=0xfd;
TL1=0xfd;
/*打开定时器和串口中断*/
EA=1;
ES=1; //启动串口
TR1=1;
}
void senddate()
{
switch(a) //a就是在串口助手中输入的数
{
case 0: //当输入字符是0时
P20=0; //对应的是开启第一个LED灯
ES=0; //暂时关闭串口中断,防止上位机一直接受数据
SBUF=a; //将数据出去
while(!TI); //TI没有发送完数据之前是0,当发送完数据之后TI=1,运行下一个语句
TI=0; //用软件将TI置0;
ES=1; //开启串口中断 /*标准写法*/
break;
case 0x01:
P20=1;
ES=0;
SBUF=a; //解释同上,这个是输入1,用来关闭LED灯
while(!TI);TI=0;ES=1;
break;
}
}
void main()
{
init();
while(1)
{
}
}
void zd() interrupt 4
{
RI=0;
a=SBUF; //将数据先接受到SBUF端
senddate();
} 展开
#define uchar unsigned char
#define uint unsigned int
uchar a;
bit busy;
sbit P20=P2^0;
void init() /*中断的初始化子函数*/
{
TMOD=0x20; //选择定时器1工作方式2
/*下面三行代码设置SCOD,来选择串口工作方式*/
SM0=0;
SM1=1;
REN=1; //选择的是串口工作方式1
/*给TH TL装初值*/
TH1=0xfd;
TL1=0xfd;
/*打开定时器和串口中断*/
EA=1;
ES=1; //启动串口
TR1=1;
}
void senddate()
{
switch(a) //a就是在串口助手中输入的数
{
case 0: //当输入字符是0时
P20=0; //对应的是开启第一个LED灯
ES=0; //暂时关闭串口中断,防止上位机一直接受数据
SBUF=a; //将数据出去
while(!TI); //TI没有发送完数据之前是0,当发送完数据之后TI=1,运行下一个语句
TI=0; //用软件将TI置0;
ES=1; //开启串口中断 /*标准写法*/
break;
case 0x01:
P20=1;
ES=0;
SBUF=a; //解释同上,这个是输入1,用来关闭LED灯
while(!TI);TI=0;ES=1;
break;
}
}
void main()
{
init();
while(1)
{
}
}
void zd() interrupt 4
{
RI=0;
a=SBUF; //将数据先接受到SBUF端
senddate();
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询