我用单片机的串口向上位机发送指令,不过当我只发一次的时候上位机接收缓冲区里什么都没有,之后连续发就可以响应了,但我只想发一次,不想连续发,求高手指点,我的代码如下,这样写就什么也收不到,不知道怎么回事。
flag=0;
while(1)
{
if(flag==0)
{
SBUF=0x31;
while(!TI);
TI=0;
flag=1;
}
}
上位机是用的串口助手,我自己写了个和串口调试助手显示的一个样子,当我把那个flag标志位去掉的时候是可以连续发送的,但是加上那个flag为了只发送一次,结果就什么都没有了。我的配置指令如下
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //波特率是4800的
TL1=0XF3;
TR1=1;
你在if语句完毕之后加一个while(1)试试,我估计可能是因为你的程序跑飞了
不对,说错了,51我很久没用了,里面的东西都忘了,有些看不懂了,你在前面加个延时能有用?
我估计是被漏掉了,那怎么才能保证不漏掉呢?
追答程序开始加几百毫秒延时,电脑连接好后,再开单片机电源启动单片机。