51单片机串口查询方式收发出现的问题

2019-03-24 17:25发布

代码如下:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void serialportinit()
{
        TMOD=0x20;//定时计数器1,8位自动装载计数器
        SCON=0x70;//串口使用工作模式1,8位UART
        PCON|=0x00;
        TH1=0xfd;//设置串口波特率为9600bps;
        TR1=1;//定时计数器1开启
}

void main()
{
uchar ch,x=1;
serialportinit(); //串口初始化
while(1)
        {
                if(RI)
                {
                        RI=0;
                        ch=SBUF;
            
                        SBUF=ch;
                        while(!TI);
                        TI=0;

                        SBUF=x;
                        while(!TI);
                        TI=0;
                }       
        }       
}


我的问题是:
1,为什么从串口工具给MCU发送abc时,从MCU发送回串口工具的数据是 61 01 62 01  63 01; 但是从串口工具中发送的数据变成abcd,为什么从mcu发送回串口工具中的数据还是不变,依然是 61 01 62 01  63 01?

2, 就以上代码中出现的问题,即接收一个字符后连续发送两个字符问题 描述下 串口接收和发送数据的时间顺序是怎样的?即哪些时候是在同一时间操作,关于时间间隔。。。需不需要延时......等会出错的问题。

PS:操作起串口才发现,串口并不是教程,书本上面说得那么简单,要熟练操作、甚至精通串口,真的不简单啊感觉,所以恳请大侠们帮下忙,因为学习过程中这个问题困扰了一周,都没有人说个明白,感谢了。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
bobde163
1楼-- · 2019-03-25 15:14
phang 发表于 2016-11-3 00:26
好的,拜托了,这个问题停留了两周,一直没找到答案。谢谢了谢谢了。

针对这个问题,我今天实际测试了一下,抓出了数据进行分析,分析的详细的内容我另外写了一个帖子,你可以去看一下
http://bbs.eeworld.com.cn/thread-505172-1-1.html
phang
2楼-- · 2019-03-25 20:04
bobde163 发表于 2016-11-3 23:00
针对这个问题,我今天实际测试了一下,抓出了数据进行分析,分析的详细的内容我另外写了一个帖子,你可以 ...

............
天哪,您太用心了,很详细的解答过程,实在很感谢您。。。
不好好学习真对不住您这次的帮助,太感谢了太感谢了。

请问您看的那本书是?我也想看,感觉讲得很细。
cybers
3楼-- · 2019-03-26 00:27
 精彩回答 2  元偷偷看……

一周热门 更多>