8032
マイクロコントローラーを研究しています。 8032
には内部ROMがないということです。質問がいくつかあります
-
外部ROMが必要ですかプログラムを必ず実行しますか?「256バイトの内部RAMを使用できませんか?
-
外部ROMを備えた8032マイクロコントローラーを使用しているとします
2732
およびポートP0のアドレス(下位)を格納するためのラッチも使用します(アドレス/データを転送する場合があります)。 EA を有効にし、 PSEN 8032はどのようにプログラムを実行しますか?システムの電源を入れるとどうなりますか?(8032マイクロコントローラのプログラムカウンタはどのように命令を実行しますか?外部メモリのどのアドレスからプログラムを読み取る必要がありますか?
これらのマニュアルを読む- Intel 8032H Keil 、 Atmel 80C32E 。
回答
以下の典型的な80(C)32回路を見ると(ここから):
8032が外部EPROM、RAM、およびEEPROMと通信していることがわかります。バス-8ビットデータと16ビットアドレス。後者はラッチされているため、HCT573で逆多重化されます。8031/ 8032で使用するように設計されたラッチが組み込まれたチップがいくつかありましたが、上記はより一般的な構成でした。 -標準メモリチップのコスト。アドレスをデコードして一般化するための" glue "ロジックも少しあります。メモリ(HCT138およびクアッドNAND)の適切な信号をテストします。
リセット後、実行は常にアドレス0によって開始されるため、EPROMがアドレス0に存在するようにグルーロジックを設計することが重要です。そのアドレスから命令の最初のバイトをフェッチする8032。これは8032のハードウェアの機能であり、変更することはできません。通常、この命令は、プログラムの先頭にジャンプする3バイトのLJMP命令です。これを" RESET VECTOR "と呼びます。他のベクトルは、外部割り込みサービスルーチンとタイマー割り込みサービスルーチンのリセットベクトルのすぐ上のバイトを占めます。
当時、EPROMは、外部の別のプログラマーによってプログラム(書き込み)されていました。回路を作成し、通常はソケットに接続します。当時、インサーキットプログラミングはありませんでした。 RAMとEEPROMはマイクロで書き込むことができますが、それが可能になる前にプログラムをEPROMにロードする必要があります。
コメント
回答
いいえ、内部RAMを使用してコードを保持することはできません。8051/ 8032はハーバードアーキテクチャを使用しているため、完全に分離されています。コードとデータ用のメモリスペース。命令はコードスペースからフェッチされますが、RAMはデータスペースにあります。
EAを有効にしてPSENを接続した後8032はプログラムを実行しますか?
8032はコードスペースから命令をフェッチします。EAがアサートされているため、これらのフェッチ(メモリ読み取り)は外部メモリバスに表示されます。 、PSEN
がアサートされています。PSEN
は、外部メモリの読み取り操作ではアサートされません。データスペースの読み取りです。
システムの電源をオンにするとどうなりますか?
8032は、コードスペースアドレス0から命令のフェッチを開始します。
8032マイクロコントローラーのプログラムカウンターはどのように命令を実行しますか?
プログラムカウンタは、次に実行される命令のアドレスを保持する役割を果たします。 CPUの他の部分が命令を実行します。
プログラムを読み取る外部メモリのアドレスはどれですか?
アドレス0。
プログラムで割り込みを使用する場合は、それらのために予約されている他のアドレスが低コードスペースメモリにあるため、リセット時に実行すると、最終的にはこれらの予約済みアドレスを「ジャンプ」する必要があります。
コメント
- これが最初の質問に対する回答です。 +1します。質問の後半について詳しく教えてください。その部分は'手がかりが得られません。
- 上記の編集を参照してください。
回答
8052のバリアントである8032には、プログラムストレージ用の内部ROMがありません。代わりに、外部ROM / EPROM / EEPROMを使用してプログラムを保持する必要があります。
外部メモリへのアクセスには2つのポートを使用します。ポート0(ラインP0.0〜P0.7)はロー8を放出します。 16ビット64Kアドレスのビットであり、アドレスが外部メモリによってラッチされた後、読み取り/書き込み8ビットデータバスとしても機能します。
P2(行P2.0〜P2.7 )は、16ビット64Kアドレスの上位8ビットを出力するために使用されます。
8032には256バイトの内部RAMがありますが、これは、外部アドレスバスにRAMチップを追加することによって拡張することもできます。 。
外部アドレス行\ $ \ mathsf {\ small \ overline {\ text {EA}}} \ $は、外部プログラムメモリへのアクセスが行われているかどうかを示すためにローに保持されます。 RAMが想定されています。
外部メモリからコードを実行するために、プログラムカウンタからのアドレスがポート0およびポート2のデータラインに出力されます。次に、読み取りサイクル中に、ポート0への読み取り時にROMから取得され、プロセッサによって実行されるバイト。
一度にフェッチされる命令は1つだけです。
\ $ \ mathsf {\ small \ overline {\ text {PSEN}}} \ $は、外部プログラムのメモリアクセス中に使用されるストロボです。
コメント
- 。:しかし、外部メモリにあるプログラムをどのように実行するのでしょうか。プログラムが外部メモリにあるときにPCがどのように動作するかがわかりません。つまり、各m / cサイクルで、ある数のバイトをフェッチします。次に、フェッチ後、プログラムがすぐに実行されるか、プログラム全体が一度にフェッチされます>その場合、保存されますか?
- 。:したがって、最初は
PC=0000h
です。 m / cサイクルごとにバイトのフェッチを開始し、実行しますか?したがって、ROMでは常にアドレス0000h
からプログラムを書き込む必要があります。そうしないと、正しく実行できません。 - @learner。正しい。通常、アドレスで" real "コードの先頭にジャンプします。
- 。:Iあなたの答えを+1します。しかし、プログラムが命令ごとに実行される場合、このような前方参照はどのように管理されますか?
L1:JNZ L2 .. L2:....
。 - JNZ命令(およびその他のジャンプおよび分岐命令)は、ジャンプの宛先アドレスをプログラムカウンターにロードするため、プロセッサは次のアドレスをフェッチします。ジャンプ直後の命令ではなく、そのアドレスからの命令。
glue logic
の部分について詳しく教えてください。LJMP
はプログラムの最初に移動するようですか?しかし、ここではプログラムは外部メモリにあります。この種の命令はここで使用されますか?単純な命令は外部メモリからフェッチされ、IR
に配置され、デコードされて実行されますか?ここでLJMP
の場合はどこにありますか?