51单片机串行通讯

[复制链接]
2744|4
 楼主| yanshi 发表于 2011-8-22 20:27 | 显示全部楼层 |阅读模式
请问各位大侠,这是我学习串口通讯编的一个程序如下,但是我用串口调试助手练习时发送15字符后再接收时接收和发送的数据不一样了,串口显示如附件,如果程序有错,请大侠帮助指点一下
#include <reg51.h>
#include <intrins.h>
void init()  //串口定时器外部中断初始化
{
    TMOD = 0x21;
    TH1  = 0xfd;
    TL1  = 0xfd;  /* 9600 */
TR1  = 1;
    SCON = 0x50;  /* 工作在方式1*/
}
void main()
{
char str[15],i,j;
j=0;
i=0;
init();
while(1){
     RI=0;
     for(i=0;i<15;i++)
      {
       while(!RI);
      str[i]=SBUF;
       RI=0;
      }
    TI=0;
  for(j=0;j<15;j++)
    {
    SBUF=str[j];
     while(TI==0);
    TI=0;  /*等待1 字节发送完成*/
    }
   }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yirongfu 发表于 2011-8-22 20:51 | 显示全部楼层
“发送15字符后再接收时”是说第二次接收和发送的过程,还是说程序一运行后第一次接收后发送回来的数据就不对?建议把实验的方法描述详细些。
lisijun100 发表于 2011-8-23 00:15 | 显示全部楼层
ASIIC   和 16进制 弄清楚了吗?:D
tianm 发表于 2011-8-23 08:28 | 显示全部楼层
发的是收的吗?
waerpcj 发表于 2011-8-23 08:56 | 显示全部楼层
建议发送26个字母或则10个数字对应的ASCII码值试试看,也有可能是调试助手在处理你输入字符的时候编码转换错误!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部