預期效果:
在上位機用串口除錯助手給單片機發送一個字符,單片機便自動發送一次“123”給上位機。
代碼:
#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD = 0x21;
TH1=0xfd;
TL1=0xfd;
TH0 = 0xfe;
TL0 = 0x33;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
ET0 = 1;
TR0 = 1;
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF='1';
while(!TI);
TI=0;
SBUF='2';
while(!TI);
TI=0;
SBUF='3';
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
問題現象:
上電后,上位機還未發送任何字符,單片機便開始不間斷的發送“123”給上位機。
但如果將 ET0 = 1; 或 TR0 = 1; (代碼18~19行)陳述句注釋,便可正常作業。
若能幫助解決,感激不盡!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225721.html
標籤:C語言
