程序如下:这个程序每次只能返回一个字符,如果我在串口通信助手里输入 Hello,World!
如果按一下发送,那结果返回的就只是H,如果再按一次,那就出现了e,之后再按的话那就是重复H,e出现,麻烦知道的能帮我解答一下,不胜感激......
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
char flag;
char ch[10],a;
int resv = 0 , send = 0;
void main()
{
TMOD = 0X20; //设置中断方式
TH1 = 0XFD; //设置初值以确定波特率
TL1 = 0XFD;
TR1 = 1; //开中断
/*设置SCON寄存器,以确定通信方式*/
SM0 = 0;
SM1 = 1;
REN = 1; //允许接收
EA = 1; //开总中断
ES = 1; //开串口中断
while(1)
{
if(flag==1) //确定是否接收
{
send++;
ES = 0; //关串口中断
flag = 0;
a = ch[send];
SBUF = a; //将收到的数据返回电脑
while(TI!=1);
TI = 0; //TI==1说明发送完毕
ES = 1; //开中断
}
}
}
void chuankou() interrupt 4 //串口中断,当有数据通过串口输入时启动
{ //RI数据接收标志位
//电脑发送给单片机
resv++; //RI==1说明收到数据
RI = 0;
a = SBUF; //取寄存器SBUF的值
ch[resv] = a; //存进一个数组
flag = 1; //标志位,收到数据后置1
}