2015-05-21 48 views
1

我需要從AT89s52串行傳輸數據到PC的超級終端。 爲此,我編寫了一個示例程序,在89s52微控制器內編程下面給出的代碼,並通過串口將它連接到我的PC,從而在我的PC的超級終端上打印「Hello」。現在,當我爲相應的端口打開超級終端時,我應該多次看到屏幕上印着「Hello」,但實際上我看到的是一些垃圾數據被打印出來。 這是我用過的代碼。89s52與超級終端的串行接口...獲取垃圾值

#include < AT89X52.H> 

#include < STDLIB.H> 

#include < STDIO.H> 

unsigned int i; 

void main (void) 

{ 

TMOD = 0x20; 

SCON = 0x50; 

TH1 = 0xFD; 

TL1 = 0xFD; 

TR1 = 1; 

TI = 1; 

P1 = 0; 

while (1) 

{ 

puts("Hello\r"); 

P1 ^= 0x01; /* Toggle P1.0 each time we print */ 

for(i=0;i<25000;i++); 

} 

} 

在超級終端,我沒有得到正確的輸出,即你好。相反,我看到一些垃圾字符.. 任何人都可以幫助這個請.. ..?

+0

您是否匹配了每端的波特率和停止位數? –

+0

是的..它的9600和停止位= 1, – ACP

+1

[這個問題]涵蓋得很好(http://electronics.stackexchange.com/questions/70126/find-th1-in-at89s52-micro-controller-in-串行通信),也是您想要提問的網站。 –

回答

0

你能看到P1是否正在切換?我寧願先發送一個字符,然後用示波器觀察發送的內容。您應該看到一個數字信號,該信號對應於從微處理器的TX引腳分出的字符的ASCII值。您也可以使用示波器檢查波特率(確切值)。如果您確信正確的值是以正確的波特率發送的,那麼很可能是您的連接不正確,或者波特率應該稍微改變。