Только небольшое 89s52 UART проблеме

G

garg29

Guest
Привет друзья,
я просто пытаюсь сделать связь между 2-89S52 микроконтроллерами.

Одним из них является препровождающее "Hello"
И другие получает тот же
И отображения на ЖК (16x2).На момент передачи в порядке, как я проверил результат по HyperTerminal.Прием целью является также отображение "HELLO", но с небольшой проблемой, в первую очередь слово "Hello", на дисплее отображается правильно, но после этого он отображается как "HHELLO",
то есть символ 'H' отображается дважды.В функции "недействительным uart_gets (символ * S)" Я попытался ввода строки "S -;" это отображается "ELLO" ( 'H' исчезли) первый раз, но "HELLO" (надлежащего) continoulsy после этого.Ниже приведен код.
Спасибо всем за предоставленную времени прочитать мои проблемы.Привет.
Последний раз редактировалось garg29 от 04 июня 2009 10:36;, всего редактировалось 2 раз

 
Код:символ uart_getc (аннулируются) / / Получить символ из UART

(

/ / SBUF = 0; / / Почему ?????

а (RI == 0); РИ = 0;

вернуться SBUF;

)
 
Спасибо за ответы Kurenai_ryu.Я просто попытался сдачи SBUF = 0; но что did'nt сделал каких-либо изменений.Я также попытался ул [7], но тоже не помогло.

Вот мой код для LCD
Код:недействительным

lcd_puts (Const символ * S)

(

LCD_RS = 1; / / записи символов

в то время как (* S)

lcd_write (* S );

)
 
Проблема заключается не в "Экстра" Н "вы видите, но то, что вы не видите!
Я угадать ваш передатчик стороне направить "HELLO \ R \ N" (что это очередная "Enter", или CR = 0x0D (13),
а затем на LF = 0x0A (10)).
Ваш 'uart_gets ()' ждет, пока он видит CR (13), он заменяет его и возвращает NULL, но в UART получать
в буфер будет LF (10) символ оставили на следующий раз вы называете 'uart_gets ()' , и что символ будет получить в качестве первого элемента в строке, до H.
Вы
будете иметь дело со всеми получил символы и промойте их (и нет, SBUF = 0 не будет делать, вы должны сделать макет вместо чтения).

Пожалуйста, не напоминайте мне говорили, что ваш стиль кодирования, просто напрашивается на наличие ошибок.Хотя правильно, ваш выбор на имя формального параметра с таким же именем, как глобальное них очень запутанные, не говоря уже о затемнение всего остального кода.
Надеюсь, вы поняли, что это будет работать только в данном конкретном случае и ни в коей мере не следует использовать этот код в качестве шаблона для общих целей.

Артур

 

Welcome to EDABoard.com

Sponsor

Back
Top