找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

求强人帮写一下模块c程序。UART协议或者帮看看我写的程序

[复制链接]
admin 发表于 2012-9-2 06:35:53 | 显示全部楼层 |阅读模式

本文包含原理图、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;
}
}


}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 04:50 , Processed in 0.053910 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表