
STC89C52与PC串口通讯怎么发字符串?求程序!我单字符发成功了,就是字符串不知道怎么弄?
就是我在调试助手随便键盘输入什么,上面就显示什么?谢谢!这是我的程序,应该怎么改?谢谢#include<reg52.h>unsignedcharflag,a;voidin...
就是我在调试助手随便键盘输入什么,上面就显示什么?谢谢!
这是我的程序,应该怎么改?谢谢
#include <reg52.h>
unsigned char flag,a;
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
} 展开
这是我的程序,应该怎么改?谢谢
#include <reg52.h>
unsigned char flag,a;
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
} 展开
2个回答
展开全部
呵呵,这个问题很简单。比如你需要发送字符串"i can help you!"共计15个字符,那么你可以用一个数组比如sendBuf[15]="i can help you!";然后,你在发送的时候写一个for循环就行咯:
for(i=0;i<15;i++)
{
SBUF=sendBuf[i];
while(!TI); //等待发送完毕
}
在接收的时候也是一样的:定义接收缓冲区receiveBuf[15];
然后中断里面的接收语句体为:
void ser() interrupt 4
{
RI=0;
receiveBuf[m++]=SBUF;//注意m为全局变量
if(m==15)//接收完毕
{
flag=1;
m=0;
}
}
这样接收完毕之后,接收缓冲区的内容就是你需要的字符串了。
OVER。
for(i=0;i<15;i++)
{
SBUF=sendBuf[i];
while(!TI); //等待发送完毕
}
在接收的时候也是一样的:定义接收缓冲区receiveBuf[15];
然后中断里面的接收语句体为:
void ser() interrupt 4
{
RI=0;
receiveBuf[m++]=SBUF;//注意m为全局变量
if(m==15)//接收完毕
{
flag=1;
m=0;
}
}
这样接收完毕之后,接收缓冲区的内容就是你需要的字符串了。
OVER。
更多追问追答
追问
receiveBuf[15]与sendBuf[15]都要定义为无符号字符数组吗?
追答
是啊 uchar 也就是0-255.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询