Doar un mic 89s52 UART problemă

G

garg29

Guest
Salut prieteni,
sunt doar încercarea de a face comunicarea între 2-89S52 microcontrolere.

Unul este de a transmite "Hello"
si alte primeşte aceeaşi & afişarea pe LCD (16x2).De a transmite punctul este bine ca am verificat pe Hyperterminal rezultat.Primirea scop este, de asemenea, afişarea "Hello", dar cu o mică problemă, în primă instanţă, cuvântul "Hello" se afişează corect, dar după ce că este afişat ca "HHELLO" adică de caractere "H" este afişat de două ori.În funcţie "nule uart_gets (caracterul * s)" Am incercat punerea o linie "s -;" acest afisate "ELLO" ( "H" a dispărut) prima dată, dar "Hello" (corect) continoulsy după asta.este codul de mai jos.
Multumesc tuturor pentru a oferi timp pentru a citi problema mea.Cu respect.
Ultima editare de garg29 pe 04 iunie 2009 10:36; editat de 2 ori în total

 
Cod:caracter uart_getc (gol) / / Ia de caractere de la UART

(

/ / SBUF = 0; / / de ce ?????

în timp ce (RI == 0); RI = 0;

reveni SBUF;

)
 
Vă mulţumim pentru răspunsurile Kurenai_ryu.Am încercat punerea SBUF = 0; dar did'nt că a făcut nici o modificare.Am încercat de asemenea,
str. [7], dar de asemenea, că nu a ajutat.

Iată-mi cod pentru LCD
Cod:nule

lcd_puts (Const caracterul * e)

(

LCD_RS = 1; / / scrie caractere

while (* s)

lcd_write (* s );

)
 
Problema nu este "extra", "H" vezi tu, dar ceea ce tu nu vezi!
Sunt ghicitul
dvs. transmiţător parte a trimite un "salut \ r \ n" (asta
e un "Enter", sau o CR = 0x0D (13), urmată de o LF = 0x0A (10)).
Dvs. "uart_gets ()" aşteaptă până când nu vede un CR (13), se înlocuieşte cu NULL şi se întoarce, dar în UART
a primi tampon va exista o LF (10) caracter stânga pentru următoarea dată când apel "uart_gets ()" , şi că va fi preluat pe apucate ca primul element în şir, înainte de H.
Va trebui să se ocupe de toate primite de caractere, şi se îmbujora lor (şi nu, SBUF = 0 nu va face,
vei avea de a face un fals citit în loc).

Vă rugăm să nu-mi spune că mintea ta stil de redactare begs doar pentru erori.Deşi corecte, alegerea
dvs., pentru a numi oficial parametri cu acelaşi nume ca şi cele la nivel global, este foarte confuz, să nu menţionăm şi confuzie de restul de cod.
Sper că-ţi dai seama că aceasta va funcţiona doar în acest caz particular şi în nici un fel ar trebui să utilizaţi acest cod ca şablon pentru uz general.

Arthur

 

Welcome to EDABoard.com

Sponsor

Back
Top