求帮助 51单片机串口 实在没办法了

2019-07-15 19:41发布

从上位机发送多于两个字节,为什么返回上位机时只能接收一个?实在找不到错误点了,求解决,谢谢! #include<reg51.h>unsigned char flag,a,i;unsigned char code table[]="I have ";void init(){  TMOD=0X20;  TH1=0XF3;  TL1=0XF3;  SCON=0X50;  ES=1;  EA=1;  TR1=1;  }void main(){ init(); while(1){    if(flag==1)   {     ES=0;         for(i=0;i<7;i++)         {            SBUF=table;                while(!ti);                TI=0;                }                SBUF=a;                while(!TI);                TI=0;                ES=1;                flag=0;                }        }}        void sar() interrupt 4        {         RI=0;         a=SBUF;         flag=1;         }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
lindaye
1楼-- · 2019-07-16 10:59
韦护的护 发表于 2014-5-17 22:19
1.SBUF=table;这个语句应该改为SBUF=table;  这不是重点。
2.SBUF寄存器只有一个字节的储存空间 。这就是为 ...

是啊,我知道了,谢谢啊
lindaye
2楼-- · 2019-07-16 11:20
 精彩回答 2  元偷偷看……
为幸福写歌
3楼-- · 2019-07-16 15:56
应该就是table[i]的问题,你是看郭天祥的吧,其他的都没错。因为如果单片机不能发送第一个字符,那么TI就不能被置1,那么程序就停在while(!TI)了,当然就不能执行后面的程序了。
lindaye
4楼-- · 2019-07-16 16:23
为幸福写歌 发表于 2014-5-19 10:09
应该就是table的问题,你是看郭天祥的吧,其他的都没错。因为如果单片机不能发送第一个字符,那么TI就不能 ...

是的,我已经知道原因了,谢谢啊

一周热门 更多>