とハイパーターミナルAT80C51RD2>インターフェイス

plsは問題についての質問を特定。あなたが知ってほしい。

 
こんにちは

関心をおおかげです。確かに、私が説明します。

私はピンのDB9 Rxはクロスオーバー/したhを送信との接続/ワット。私は、コンパイラのCとしているKeilのプログラムを通じて。私はチップprgmに私の次のファイルを16進dwnldそれはハイパーターミナルへ戻るいないすべてのデータではない私を与える

#は<reg51.h>含まれて
#は<stdio.h>含まれて

#周波数を定義するのXTAL 11059200 / / CPUの発振器
#は、ボーレートを定義ボー9600 / / 9600 bpsの通信

#バッファを定義サイズのシリアル伝送/オレン8 /
unsigned char型ostart / /送信バッファの開始インデックスを
unsigned char型oend / /送信バッファの最後にインデックスを
文字idata outbufを[オレン];ストレージの送信/ /バッファ

#バッファを定義サイズのシリアル受信/アイルン/ 8
unsigned char型istart / /受信バッファの開始インデックスを
unsigned char型iend; / /受信バッファの終了インデックス
文字idata inbuf [アイルン];の受信バッファをストレージ/ /

ビットsendfullは、/ /フラグ:マークは、送信バッファフル
ビットsendactive / /フラグ:マークは、トランスミッタアクティブ

/ *
*シリアル割り込みサービスルーチン
* /
静的ボイドcom_isrは(ボイド)(中断1 4を使用して
炭c;

/*-----受信データの割り込み。----------------------------------------*/
(場合(RI)は
cは= SBUF / /文字を読む
RIの= 0; / /クリア割り込み要求フラグ
アイルン 場合(istart!= iend)(
inbufの[は、iend &(アイルン- 1)] = Cの/ /がバッファに文字



/*------透過データが割り込み。------------------------------------*/
TIの場合(!= 0)(
TIは= 0; / /クリア割り込み要求フラグ
ostartするif(!= oend)(/ /場合はバッファ内の文字と
SBUF = outbufを[ostart の&(オレン- 1は)]は、/ /文字を送信
sendfull = 0; / /'明確sendfull'フラグ

他(/ /場合は、すべての文字が送信さ
sendactive = 0; / /クリア'sendactive'




/ *
*関数は、ボーレートをUARTの初期化シリアルポートと。
* /
((無効com_initializeボイド)
istartは= 0; / /空のバッファを送信
iend = 0;
ostartは= 0; / /空のバッファを送信
oend = 0;
sendactiveは= 0; / /トランスミッタアクティブではありません
sendfull = 0; / /'明確sendfull'フラグ

としてボーレートジェネレータ1 / /設定タイマー
PCON | = 0x80を/ / 0x80に= SMOD:セットシリアルボーレートダブラ
TMOD | = 0x20には、/ / 2モードに1入れ、タイマーを
Th1細胞=(unsigned char型)(256 - (水晶/(16Lは*長くなっ*ボーレート)));
TR1のは、= 1; / / 1開始タイマを

SCON = 0x50が/ /シリアルポート受信シリアルモードを有効1、
ESは= 1; /割り込みをシリアル/有効にする


/ *
* putbufは:バッファまたは伝送に書き込む文字をSBUF
* /

ボイドputbuf(炭c)(
)sendfull(/ /送信するif(!はフルのみバッファが
(もし!sendactive)(/ /場合は、トランスミッタがアクティブでない:
sendactiveは= 1; / /直接の最初の文字を転送する
TXDに= 1;
WRの= 1;
SBUFは=のC / /送信を開始するSBUFする

他(
ESは= 0; / /無効にするシリアル割り込みバッファ中に更新
outbufはの[バッファのoend の&(オレン- 1は)]は、= Cの; /送信文字入れ/に
(もし(((oend ^のostart)&オレン- 1))== 0)(
sendfull = 1;
フラグをする場合、バッファがいっぱいになる設定)/ /
ESは= 1; /再度割り込みを有効にするシリアル/




/ *
ライブラリputcharルーチン標準*置換ルーチン。
文字* printfの出力に関数は使用してputchar。
* /

char型putchar(炭c)(
文字をn')(/ /展開、新しい行の場合(¥¥ cを==':
/待つまでそこにある空間内のバッファ/中;)sendfullは(
putbufは(0x0D)が/ /行> <新しいCRを送信する前LFは

/待つまでそこにある空間内のバッファ/中;)sendfullは(
c)の/ /場所文字にバッファ(putbuf
戻り値(c)の;


/ *
標準ライブラリの*置換ルーチン_getkeyルーチンです。
* getcharのと文字を取得する関数は、読み取りに使用する_getkey。
* /

char型_getkey(ボイド)(
炭c;
はRXD = 1;
RDは= 1;
(中(iend == istart)
までは文字を待つ/ /

ESは= 0; / /無効にするシリアル割り込みバッファ中に更新
のC = inbuf [istart &(アイルン- 1)];
ESは= 1; /再度割り込みを有効にするシリアル/
戻り値(c)の;


/ *
シリアルI / Oを*駆動開始割り込みメインC関数
* /

(無効メイン(ボイド)
EAは= 1; / *を割り込み*を有効にグローバル/
)com_initialize(; / * Oの*初期化割り込み駆動シリアルI / /
(中に(1)
炭c;
はC = getcharの();
のprintf("¥¥ n削除すると、型指定された文字%年頃¥¥ n個のの"c);
)-------------------------------------------------- ----------------------

私のチップは、その中にROMを持っていません。それはそれですそれはなぜ作業ソ¥リューションを他のや提案を私にすることができますができますか?

BRの
bloke203

 
こんにちは、
私はAt80c51RD2だった不思議プログラムを使用しているあなたは、三菱商事として午前使用して、同じプログラマが普遍的に問題をプログラミングして?

多くのおかげで、
Mohit Gadhok

 
通信のUARTを確認そのためにハイパーコントローラセットとして正しく端子です。

-
アムルアリ

 

Welcome to EDABoard.com

Sponsor

Back
Top