51单片机串口如何接收多位字节数据

2019-07-15 21:12发布

各位大侠看一下,我下面的程序为什么不能接收两个字节的数据呢?
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void rs232_init();
uchar flag,i,g,d;
uchar code table[]="I get ";
//sbit led=P1^0;
main()
{
        rs232_init();
        while(1)
        {
                if(flag==1)
                {
                        ES=0;
                        for(i=0;i<6;i++)
                        {
                                SBUF=table[i];
                                while(!ti);
                                TI=0;
                        }
                        SBUF=g;
                        while(!TI);
                        TI=0;
                        SBUF=d;
                        while(!TI);
                        TI=0;
                        ES=1;
                        flag=0;
                }               
        }
}
void rs232_init()
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;       
}
void ser()interrupt 4
{
        RI=0;
        g=SBUF;
        d=SBUF;
        flag=1;
}

我用串口调试助手调试时,上位机给单片机发送两个字节的数据,例如发送ck两个字母时,只接收到cc两个字母呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。