代碼如下所示,只要定時器一打開(TR1=1),串口助手里面就不停的顯示00 00 00.。。,發送和接收都沒反應,實在找不出哪里的問題,請各位大神幫看一下
#include <REGX52.H>
void URET_TX(unsigned char key)
{
SBUF=key; //寫入數據進SBUF緩存器
if(TI==1) //檢測標志位,是否是1,,表示數據傳出完成
{
if(RI==1) //檢測是否接收完成,如果是1,標示數據被完整接收
P2=SBUF; //讀取發送過來的SBUF數據
RI=0; //重置數據傳輸完成標志位
TI=0; } //重置數據接收完成標志位
}
void URET_Tu(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數據,可變波特率
TMOD &= 0x0F; //清除定時器1模式位
TMOD |= 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xF4; //設定定時初值
TH1 = 0xF4; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器用于產生波特率
ES=1; //開啟串口通信
}
void main(void)
{
URET_Tu();
URET_TX(SBUF);
}
上面代碼 只要TR1=1, URET_TX()函數中就算只有SBUF=key一個語句,也全是00 00 00...不停的出
|