我在今天学习了串口通讯,写了个串口通讯的小程序,部分功能实现了,但有个BUG,我不知道哪里出来的问题,程序功能是这样的,单片机P1.3有个按键,按一下发送一个0X11到串口助手上面,现在的情况是程序烧录到单片机里面初次按按键有数据上传到串口助手上面,但是一旦关了单片机电源再开,再按按键,那就没有任何数据上传到串口助手上面,但是这时候用串口助手随意发一个16进制数给单片机,这时候单片机又奇迹般的活了,我现在不知道从哪下手修改程序了,请论坛的前辈指教一下,下面附上单片机程序
#include<reg52.h>
#define uchar unsigned char
sbit key1=P1^3;
sbit key2=P1^2;
sbit key3=P1^1;
sbit key4=P1^0;
sbit l1=P0^0;
sbit l2=P0^1;
sbit l3=P0^2;
sbit l4=P0^3;
void ConfigUART(unsigned int baud);
void delay()
{
unsigned int i=11000;
while(i--);
}
void main()
{
EA=1;
ConfigUART(9600);
while(1);
}
void ConfigUART(unsigned int baud)
{
SCON=0x50;
TMOD&=0x0f;
TMOD|=0x20;
TH1=256-(11059200/12/32)/baud;
TL1=TH1;
ET1=0;
ES=1;
TR1=1;
}
/*void InterruptUART()interrupt 4
{
if(RI)
{
RI=0;
SBUF=SBUF+1;
}
if(TI)
{
TI=0;
}
}*/
void InterruptUART()interrupt 4
{
uchar temp,temp1;
if(!key1)
{
delay();
while(!key1);
{
temp=0x11;
SBUF=temp;
while(!TI);
TI=0;
}
}
}
|