串口与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,为什么会出现几个“你好”呢?求大家不吝赐教。谢谢哈
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
lstcspring
1楼-- · 2019-07-16 09:13
 精彩回答 2  元偷偷看……
wuchangwei
2楼-- · 2019-07-16 12:22
lstcspring 发表于 2012-8-22 17:49
应该是按键误响应造成的,把延时去抖加长一点,或加一个按键释放判断!

那个出现乱码也是按键的问题吗?
lovezjf234
3楼-- · 2019-07-16 15:13
不是,代码本身没有问题,你在你好后面加 试一下,让他回车显示。
wuchangwei
4楼-- · 2019-07-16 18:32
lovezjf234 发表于 2012-8-22 22:23
不是,代码本身没有问题,你在你好后面加 试一下,让他回车显示。

恩,改了。偶尔还是会出现乱码。

一周热门 更多>