51单片机上连接了DX-BT04-E蓝牙模块,想要利用串口3连接手机,与手机传输数据
#include "intrins.h"
#include "stc8a.h"//头文件
#define FOSC 11059200UL
#define BRT (65536 - FOSC / 115200 / 4)
bit busy;
char wptr;
char rptr;
char buffer[16];
void Uart3Isr() interrupt 17
{
if (S3CON & 0x02)//类似于TI=1即有数据要发送
{
S3CON &= ~0x02;//清空TI
busy = 0;
}
if (S3CON & 0x01)//类似于RI=1 即接收到数据
{
S3CON &= ~0x01;//清除接收中断位
buffer[wptr++] = S3BUF;
wptr &= 0x0f;//取wptr的低四位
}
}
void Uart3Init()
{
S3CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart3Send(char dat)
{
while (busy);
busy = 1;
S3BUF = dat;
}
void Uart3SendStr(char *p)
{
while (*p)
{
Uart3Send(*p++);
}
}
void main()
{
Uart3Init();
IE2 = 0x08;
EA = 1;
Uart3SendStr("0x01\r\n");
while (1)
{
if (rptr != wptr)
{
Uart3Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
是用的范例代码,但是手机连接了蓝牙模块以后,接收不到发来的0x01,不知道代码哪里有问题