51单片机使用矩阵键盘发送数据到串口,然后再串口助手中显示。

2019-07-15 14:29发布

我的程序如下,有两个疑问。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
//延时函数
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
  for(j = 110;j>0;j--);
}
//串口初始化函数
void init()
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
}
//键盘扫描函数
uchar KeyScan()
{
uchar crod_l= 0;
uchar crod_h= 0;
P3 = 0xf0;
if((P3 & 0xf0)!=0xf0)
{
  delayms(5);
  if((P3 & 0xf0)!=0xf0)
  {
   crod_l = P3 & 0xf0;
   P3 = crod_l | 0x0f;
   crod_h = P3 & 0x0f;
   while((P3 & 0x0f)!=0x0f);
  
  }
  }
  return(crod_l+crod_h);
}
//
uchar KeyPro()
{
uchar key_value = 0;
switch(KeyScan())
{
  case 0xee:key_value = 0;break;
}
return (key_value);

}

//主函数
void main(void)
{
init();
while(1)
{
  SBUF = KeyPro();
  while(!ti);
  TI=0;
}
}   
1.为什么在while循环里面一直循环,而串口不会一直发送00
2.在打开串口助手之后,会发送一个00H,或者两个00H,这是什么原因呢?百度了好久都没找到
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。