我在今天學習了串口通訊,寫了個串口通訊的小程序,部分功能實現(xiàn)了,但有個BUG,我不知道哪里出來的問題,程序功能是這樣的,單片機P1.3有個按鍵,按一下發(fā)送一個0X11到串口助手上面,現(xiàn)在的情況是程序燒錄到單片機里面初次按按鍵有數(shù)據(jù)上傳到串口助手上面,但是一旦關了單片機電源再開,再按按鍵,那就沒有任何數(shù)據(jù)上傳到串口助手上面,但是這時候用串口助手隨意發(fā)一個16進制數(shù)給單片機,這時候單片機又奇跡般的活了,我現(xiàn)在不知道從哪下手修改程序了,請論壇的前輩指教一下,下面附上單片機程序
#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;
}
}
}
|