单片机串口通信收发问题
时间:10-02
整理:3721RD
点击:
各位好
单片机在通信收发时是什么样的一个流程呢?单片接收到数据,然后将数据再次发送出去:
比如我从上位机上面发送字符串”123456“到单片机上面,单片机在接收到一个字符,比如“1”后就直接将“1”发送出来,还是接收到“123456”一起后 同时发送出来。
代码如下:
单片机在通信收发时是什么样的一个流程呢?单片接收到数据,然后将数据再次发送出去:
比如我从上位机上面发送字符串”123456“到单片机上面,单片机在接收到一个字符,比如“1”后就直接将“1”发送出来,还是接收到“123456”一起后 同时发送出来。
代码如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar flag,i;
- uchar temp;
- uchar code table[] = "I get ";
- void initial();
- void main()
- {
- initial();
- while(1)
- {
- if(flag == 1)
- {
- ES = 0;
- //flag = 0;
- SBUF = temp;
- while(!TI);
- TI = 0;
- flag = 0;
- ES = 1;
- }
- }
- }
- void serial()interrupt 4
- {
- if(RI==1)
- {
- temp = SBUF;
- flag = 1;
- RI = 0;
- }
- }
- void initial()
- {
- TMOD = 0x20;
- TH1 = 0xfd;
- TL1 = 0xfd;
- TR1 = 1;
- REN = 1;
- SM0 = 0;
- SM1 =1;
- EA = 1;
- ES = 1;
- }
按照你的程序执行,使用上面的程序,是一个字节就输出一个
每次只发一个字节,8bit,进行一次你说的流程。你发几个字节就进行几次
也就是说发送“123456”之后,是接收到“1”,再将“1”发送出来,然后再接收“2”,再将“2”发送出来,如此进行......吗?
也就是说发送“123456”之后,是接收到“1”,再将“1”发送出来,然后再接收“2”,再将“2”发送出来,如此进行......吗?
发123456,先给发送的数据寄存器发1,等待发送,在数据寄存器清空之后再往里面写2,依次类推