我的程序如下,有两个疑问。
#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,这是什么原因呢?百度了好久都没找到
没有吧,那里等待发送完毕的
一周热门 更多>