2015-05-21 6 views
1

Мне нужно передавать данные последовательно от AT89s52 до Hyperterminal PC. Для этого я сделал образец программы для печати «Hello» на гипертерминале моего ПК, запрограммировав приведенный ниже код внутри микроконтроллера 89s52 и подключив его к компьютеру через последовательный порт. Теперь, когда я открываю гипертерминал для соответствующего порта, я должен видеть «Привет», напечатанный на экране несколько раз, но на самом деле я вижу, что некоторые данные об мусоре печатаются. Это код, который я использовал.последовательный интерфейс 89s52 с Hyperterminal ... получение значений мусора

#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++); 

} 

} 

В терминале Hyper я не получаю правильный вывод i.e Привет. Вместо этого я вижу некоторых персонажей Мусора. Может ли кто-нибудь помочь в этом, пожалуйста.?

+0

Вы сопоставили скорость передачи и количество стоповых бит на каждом конце? –

+0

Да .. его 9600 и Стоповый бит = 1, – ACP

+1

Покрыто довольно хорошо [на этот вопрос] (http://electronics.stackexchange.com/questions/70126/find-th1-in-at89s52-micro-controller-in- serial-communication), а также сайт, на котором вы хотите задать такие вопросы. –

ответ

0

Вы можете видеть, что P1 переключается? Я бы предпочел сначала отправить один символ и наблюдать, что посылает с помощью осциллографа. Вы должны увидеть цифровой сигнал, соответствующий значению ASCII символа, выделяемого из вывода TX микро. Также вы можете проверить скорость передачи (точное значение) с помощью области. Если вы уверены, что правильное значение отправлено по правильной скорости передачи, скорее всего, вы получили плохое соединение или, возможно, скорость передачи данных должна быть слегка изменена.

Смежные вопросы