のみの小さな89s52 UARTの問題

G

garg29

Guest
こんにちは友人、私はちょうど2 - 89S52の間にマイコン通信をやろうとしている。

1つに"Hello送信している"と
、 他の同じ受信している&液晶(16x2)の上に表¥示されます。私ハイパーターミナル上の結果をチェックして送信点はOKです。受信側でも""こんにちはが表¥示されるが
、 小さな問題で、最初のインスタンスでは
、 単語"HELLO"を適切に表¥示されますが後には、H'を2回表¥示されますHHELLOすなわち"文字"として表¥示され。関数ではの"void uart_gets(文字*秒)"私は
、 ライン"掲載-差出;"この"ELLO"('H'を消えて)最初の時間ではなく"HELLO"を(適切な)は
、 後にcontinoulsy表¥示されます。以下のコードです。
私の問題を読む時間を与えてみんなありがとう。よろしく。
garg29で2009年6月4日9時36分
、 最終編集日編集回数:2総

 
コード:uart_getc(無効)/ UARTから文字を取得/文字



= 0 / / SBUF; / /なぜ?????

(ロードアイランド== 0);ながら研究所= 0;

戻りSBUF;


 
Kurenai_ryu返信いただきありがとうございます。私= 0 SBUF置くだけで狙ったが、それはdid'ntすべての変更を行いました。私もがstr [7]しようとしたことも貢献していない。

LCDのための私のコードは次の
コード:無効

lcd_puts(ポーラ文字*掲載)



LCD_RS = 1; / /文字列を書き込む

間(*)掲載

lcd_write(*掲載 );

 
この問題は、"余分な"されていません'H'をするが、参照してください何が表¥示されない!
私は、"Helloを送信する¥¥ Rは¥¥ Nで"(つまり通常の"Enter"キー、またはあなたのトランスミッタ側で推測しているは、CR =の0x0D(13)に続くコードはLF =の0x0A(10))。
になるまでは、CR(13)見てあなたの'uart_gets()'待機し、それがNULLを返すと、それに代わるのUARTのあるコードはLF(10)文字を'uart_gets呼び出しは
、 次回のために残される受信バッファ()' 、その文字が取得されるようにH.する前に
、 文字列の最初の要素は、
すべての受信文字に対処する必要があります(およびない彼らは、flush = 0 SBUFしない利用するなら、ダミーの代わりに
、 読み取り)を行う必要があります。

してください私はあなたのコーディングスタイルだけでエラーを頼むという気にしない。ただし
、 正しい選択グローバルなものと同じ名前を持つ仮引数の名前に非常には、コードの残りの部分は
、 難読化を述べないために混乱しています。
私はあなたがこれは
、 この特定のケースで動作し
、 実現を期待するような一般的な目的のためにこのテンプレートのコードを使用する必要はない方法です。

アーサー

 

Welcome to EDABoard.com

Sponsor

Back
Top