無線電子工学および電気工学の百科事典 MCS-51 ファミリのマイクロコントローラのプログラム内の追加メモリ セグメントの初期化。 無線エレクトロニクスと電気工学の百科事典 無線電子工学と電気工学の百科事典 / マイクロコントローラー 最新のマイクロコントローラーには不揮発性データ メモリー (EEPROM) が組み込まれており、デバイスが動作を開始する前に情報を入力する必要がある場合があります。 このメモリのイメージ(ファームウェア)は、プログラムの開発中に作成する必要があります。 これは、たとえば、PICmicro および AVR ファミリのマイクロコントローラのアセンブラで実行できます。 これらは、プログラマに追加のメモリ セグメントを編成し、EEPROM に書き込むための初期データをその中に設定する機会を与えます。 MSC-51 コアを備えたマイクロコントローラー用のアセンブラでも、メモリをいくつかの部分に分割できますが、初期化できるのはそのうちの XNUMX つの部分 (実行可能コード セグメント) のみです。 他のすべての場合、メモリ セルを予約し、プログラムの実行中にのみメモリ セルにデータを書き込むことが許可されます。 この状況から抜け出す方法は、以下で説明するレセプションである可能性があります。 その本質は、条件付きアセンブリの使用であり、その結果、コード セグメントの初期化は、変換条件に応じてさまざまな方法で行われます。 作成された HEX ファイルは、マイクロコントローラーの内部 EEPROM だけでなく、外部メモリー チップのプログラムにも使用できます。 人工的に作成された追加セグメント (任意の数が許可されます) は、プログラム テキスト内の実際のコード セグメントの前に配置されます。 そのうちの XNUMX つで定義されたラベルは、実際のコード セグメントを含め、以下のすべてで認識されます。 ただし、逆方向のリンクは許可されません。 追加メモリのタイプと物理的な場所に制限はありません。 従来から EEPROM および FLASH と呼ばれている 1 つの追加の初期化セグメントを含むプログラムの例を表に示します。 51. example.asm ファイルに保存した後、ASEM-51 アセンブラを使用します。このアセンブラは、次の場所から無料で「ダウンロード」できます。 。 まずはコマンドラインでアセンブラを実行してみましょう asem example.asm eeprom.hex/define:EEPROM プログラム テキストの最初の行を処理すると、シンボル テーブルに idEeprom、ptrWord、および prtBufE ラベルが配置され、出力ファイル eeprom.hex に DB および DW ディレクティブで指定されたデータが配置されます (表 2)。 次に、セグメントの長さがチェックされます。 プログラム カウンタの値が物理的に存在する EEPROM サイズ (この場合は 640 セル) を超えると、エラー メッセージが表示されます。 セグメントのボリュームが明らかに小さい場合は、チェックを除外できます。 他のセグメントでも同様のチェックが行われることが予想されます。 次に、アセンブラは IFNDEF EEPROM ディレクティブに遭遇します。 この名前のシンボルはコマンド ライン ( /define:EEPROM パラメーター) で定義されているため、プログラムの後続の行は ENDIF ディレクティブまですべて無視され、変換はそこで終了します。 コマンドラインから同じプログラムの再送信を実行する asem example.asm flash.hex/define:FLASH 以前のものとの違いは、EEPROM ではなく FLASH シンボルの定義のみです。 変換の最初の段階は上記とまったく同じように進行し、EEPROM セグメントのデータが出力ファイルに書き込まれます。 ただし、今回は IFNDEF EEPROM 指令はプロセスを中断せず、次の ORG 0 指令はプログラム カウンタをリセットします。 アセンブラは、FLASH セグメント宛てのデータをアドレス 3 から出力ファイルに書き込み始めます。 ブロードキャストは IFNDEF FLASH ディレクティブによって中断されます。 flash.hex ファイルの最終形式を表に示します。 XNUMX. コマンドで実行可能コードの真のセグメントの翻訳を設定します たとえば .asm まず、追加のセグメントが再コンパイルされ、それらのセグメントで定義されているすべてのラベルがアセンブラ シンボル テーブルに入力され、コード セグメントから参照できるようになります。 その先頭にあるディレクティブ ORG 0 は、プログラム カウンタを再度リセットします。 放送は通常通り行われます。 結果の example.hex ファイル (表 4) では、プログラムの実行可能コードは XNUMX 行目から始まり、その後の行は前の HEX ファイルに含まれているものと同じになります。 通常、冗長情報が存在しても、マイクロコントローラーの適切なメモリ領域へのコードの正しいロードが妨げられることはありません。 プログラミングを制御するプログラムのバッファでは、アドレスが一致すると、正しいデータが以前に入力されたデータを「置き換え」ます。 新しいセグメントが前のセグメントより短い場合にのみ、その「末尾」がバッファに保存されます。 このため、プログラム中のセグメントは長さの短い順に記述することが望ましい。 プログラマによっては、中間バッファを持たなかったり、アドレスの重複を許可せずに入力データを厳密に制御したりする場合があります。 前者の場合はプログラミングが間違っており、後者の場合は「エラー」が解消されるまでまったく起動しません。 任意のテキスト エディタを使用して、HEX ファイルから余分な行を手動で削除できます。 XNUMX つのコマンドを続けて実行することで、これを自動的に行うこともできます。 hex2bin 例.hex bin2hex 例.bin 2 つ目は、example.hex ファイルに含まれるデータのバイナリ イメージを作成し、example.bin ファイルに配置します。 2 つ目は、逆の変換を実行して、余分な機能のない新しい example.hex ファイルを作成します。 必要なプログラムは次のアドレスから「ダウンロード」できます。 そして。 著者: S. チェクノフ、イジェフスク 他の記事も見る セクション マイクロコントローラー. 読み書き 有用な この記事へのコメント. 科学技術の最新ニュース、新しい電子機器: 庭の花の間引き機
02.05.2024 最先端の赤外線顕微鏡
02.05.2024 昆虫用エアトラップ
01.05.2024
その他の興味深いニュース: ▪ 原子力テレビ
無料の技術ライブラリの興味深い資料: ▪ 記事 XNUMXつのバンドに効果的なアンテナ。 無線エレクトロニクスと電気工学の百科事典 ▪ 記事 144 および 430 MHz 帯域用のトランジスタ パワー アンプ。 無線エレクトロニクスと電気工学の百科事典 このページのすべての言語 ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー www.diagram.com.ua |