串口与pc通信的求教一个问题

2019-07-16 04:50发布

#include <STC.h>
#define key1 P10 //定义管脚
unsigned char code y[]="你好" ;
void uartinit() //通信前的设置
{
TMOD=0X20;
TR1 =1;
TH1 =0XFA; //晶振11.0952,波特率9600bps
TL1 =0XFA;
SCON=0X50; //10位异步发送
PCON=0X80;
TI  =1;
}
void sendata(unsigned char x)  //发送数据函数
{
while(!TI);
TI =0;
SBUF=x;//数据装入发送缓冲器
}
void delay(unsigned char ms)
{
unsigned char j;
for(;ms;ms--)
{
  for(j=0;j<127;j++)
  ;
}
}
void main()
{
unsigned char i;
uartinit();
while(1)
{
  if(!key1)
  {
   delay(20);
   if(!key1)
   {
    for(i=0;i<4;i++)
    sendata(y);
   }
  }
}
}
为什么在pc上接收得时候,先是出现几个“你好”,然后就是一段乱码,然后再次出现“你好”如此循环?这是什么问题呢?还有一个我不太明白的就是我按一下按键key1,为什么会出现几个“你好”呢?求大家不吝赐教。谢谢哈
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。