微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机串口通信收发问题

单片机串口通信收发问题

时间:10-02 整理:3721RD 点击:
各位好
    单片机在通信收发时是什么样的一个流程呢?单片接收到数据,然后将数据再次发送出去:
比如我从上位机上面发送字符串”123456“到单片机上面,单片机在接收到一个字符,比如“1”后就直接将“1”发送出来,还是接收到“123456”一起后  同时发送出来。
代码如下:

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. uchar flag,i;
  6. uchar temp;

  7. uchar code table[] = "I get ";

  8. void initial();

  9. void main()
  10. {
  11.         initial();

  12.         while(1)
  13.         {
  14.                 if(flag == 1)
  15.                 {
  16.                         ES = 0;
  17.                         //flag = 0;
  18.                         SBUF = temp;
  19.                         while(!TI);
  20.                         TI = 0;
  21.                         flag = 0;
  22.                         ES = 1;
  23.                 }
  24.         }
  25. }

  26. void serial()interrupt 4
  27. {
  28.         if(RI==1)
  29.         {
  30.                 temp = SBUF;
  31.                 flag = 1;
  32.                 RI = 0;
  33.         }
  34. }

  35. void initial()
  36. {
  37.         TMOD = 0x20;
  38.         TH1 = 0xfd;
  39.         TL1 = 0xfd;
  40.         TR1 = 1;
  41.         REN = 1;
  42.         SM0 = 0;
  43.         SM1 =1;
  44.         EA = 1;
  45.         ES = 1;
  46. }

复制代码



按照你的程序执行,使用上面的程序,是一个字节就输出一个

每次只发一个字节,8bit,进行一次你说的流程。你发几个字节就进行几次

也就是说发送“123456”之后,是接收到“1”,再将“1”发送出来,然后再接收“2”,再将“2”发送出来,如此进行......吗?

也就是说发送“123456”之后,是接收到“1”,再将“1”发送出来,然后再接收“2”,再将“2”发送出来,如此进行......吗?

发123456,先给发送的数据寄存器发1,等待发送,在数据寄存器清空之后再往里面写2,依次类推

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top