打印

51单片机串行通讯

[复制链接]
1541|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 字节发送完成*/
    }
   }
}

串口调试助手.png (19.99 KB )

串口调试助手.png

相关帖子

沙发
yirongfu| | 2011-8-22 20:51 | 只看该作者
“发送15字符后再接收时”是说第二次接收和发送的过程,还是说程序一运行后第一次接收后发送回来的数据就不对?建议把实验的方法描述详细些。

使用特权

评论回复
板凳
lisijun100| | 2011-8-23 00:15 | 只看该作者
ASIIC   和 16进制 弄清楚了吗?:D

使用特权

评论回复
地板
tianm| | 2011-8-23 08:28 | 只看该作者
发的是收的吗?

使用特权

评论回复
5
waerpcj| | 2011-8-23 08:56 | 只看该作者
建议发送26个字母或则10个数字对应的ASCII码值试试看,也有可能是调试助手在处理你输入字符的时候编码转换错误!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

20

帖子

1

粉丝