本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
用串口调试助手发数据给模块有数据返回。用单片机发给他就没有返回?
模块资料:通讯接口:RS232接口TTL电平
@9600 BPS N,8,1(无效验,8位数据位,1位停止位)
、通讯命令协议的内容:
1、通讯测试:
下传命令:3C 04 00 60 00 00 58 0D
成功返回:3C 01 01 3C 0D
这是我自己写的程序:#include <reg52.h>
#include <intrins.h>
unsigned char tmp;
#define uchar unsigned char
uchar rxbuff[5];
uchar txbuff[8];
uchar i;
void delay1ms(uchar i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++) //1ms基准延时程序
{
;
}
}
}
void send_char(unsigned char txd)
// 传送一个字符
{
SBUF = txd;
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
}
void comtest(void)
{
txbuff[0]=0x3c;
txbuff[1]=0x04;
txbuff[2]=0x00;
txbuff[3]=0x60;
txbuff[4]=0x00;
txbuff[5]=0x00;
txbuff[6]=0x58;
txbuff[7]=0x0d;
for(i=0;i<8;i++)
{
send_char(txbuff[i]);
delay1ms(15); // 发的数据
} if(RI==1)
{
for(i=0;i<5;i++)
{
if(RI==1) // 是否有数据到来
{
RI = 0;
rxbuff[i] = SBUF; // 暂存接收到的数据
delay1ms(15); // 数据传送到P0口
}
}
}
else
{ while(RI);
}
}
main()
{
TMOD = 0x20; // 11.0592MHZ 定时器1工作于8位自动重载模式, 用于产生波特率
TH1=TL1=0xFD; // 波特率9600
SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句
//SM0=0;
//SM1=1;
//REN=1;
PCON =0x00; // 波特率不倍增
TR1 = 1; // 启动定时器1
P2=0xff;
while(1)
{
comtest();
if(rxbuff[2]==0x01)
{
P2=0x00;
}
}
} |
|