コンピューター ウィンドウズ インターネット

MCS-51マイクロコントローラー:ソフトウェアモデル、構造、コマンド。 マイクロコントローラーMCS-51:プログラムモデル、構造、コマンドmcs51ファミリーのマイクロコントローラー

マイクロコントローラ(図1を参照)の基本は、8ビットの算術論理演算装置(ALU)です。 MKのメモリには、ハーバードアーキテクチャがあります。 論理的に分割:プログラムメモリ-PP(内部または外部)、16ビットコマンドカウンタ(SC)でアドレス指定およびデータメモリ-内部(常駐データメモリ-RPD)128(または256)バイト、および外部(外部)データメモリ– VPD)最大64KB。 物理的には、プログラムメモリはROM(読み取り専用)に実装され、データメモリはRAM(データの書き込みと読み取りが可能)に実装されます。

外部信号の受信と配信は、4つの8ビットポートР0..Р3を介して実行されます。 外部プログラムメモリ(EPM)またはデータメモリ(VPD)にアクセスする場合、ポートP0およびP2は多重化された外部アドレス/データバスとして使用されます。 P3ポートラインは、代替機能を実行することもできます(表1を参照)。

16ビットDPTRレジスタは、アキュムレータ変換命令でVPDアドレスまたはプログラムメモリベースアドレスを形成します。 DPTRレジスタは、オペランドを格納するための2つの独立した8ビットレジスタ(DPLおよびDPH)としても使用できます。

8ビットの内部コマンドレジスタ(RK)は、実行中のコマンドのコードを受け取ります。 このコードは、制御信号を生成する制御回路によってデコードされます(図1を参照)。

特殊機能レジスタ(RSF(SFR-図1では点線で囲まれています))へのアクセスは、128(80h)以上のアドレス範囲の直接バイトアドレス指定を使用した場合にのみ可能です。


MCS-51ファミリのマイクロコントローラの最初のモデルの常駐データメモリ(RDD)の容量は128バイトでした。 RPDの下位32バイトも汎用レジスタ-RON(それぞれ8 RONの4バンク)です。 このプログラムは、アクティブバンクの8つのRONの1つに適用できます。 RONのアクティブバンクの選択は、プロセッサステータスレジスタ(PSW)の2ビットをプログラムすることによって実行されます。


表1-MCS-51のピン割り当て

ピン番号 指定 目的
1..8 P1 8ビットの準双方向I / Oポート
9 RST

リセット信号(アクティブレベル-高);

RST信号がリセットされます。PCとほとんどの特殊機能レジスタ(SFR)が、すべての割り込みとタイマーを無効にします。 RONバンク0を選択します。 「すべてのもの」をポートP0_P3に書き込み、入力の準備をします。 コード07Hをスタックポインタ(SP)に書き込みます。

10..17

8ビットの準双方向I / Oポート。 対応するビット「1」に書き込んだ後-追加の(代替)機能を実行します。

シリアルポート入力-RxD;

シリアルポート出力-TxD;

外部割り込み入力0-〜INT0;

外部割り込み入力1-〜INT1;

タイマー/カウンター入力0-T0;

タイマー/カウンター入力1-T1;

ストロボ出力。 VPDへの書き込み時の信号-〜WR;

ストロボ出力。 VPDから読み取るときの信号-〜RD;

18, 19 X1、X2 水晶振動子またはLC回路を接続するための結論。
20 GND 一般的な結論;
21..28 P2 8ビットの準双方向I / Oポート。 または外部メモリモード(VPPまたはVPD)でアドレスAを出力します。
29 PME 外部プログラムメモリ読み取りストローブ。外部ROMにアクセスするときにのみ発行されます。
30 エール 外部メモリアドレスストローブ(VPPまたはVPD);
31 EA RPPを無効にすると、この入力のレベル「0」がMKをコマンドの選択に切り替えます。 滑走路からのみ ;
39..32 P0 8ビット双方向I / Oポート。 外部メモリにアクセスすると、アドレスA(ALE信号によって外部レジスタに書き込まれる)を発行し、信号〜PME(コマンドの場合)または〜WR、〜RD(VPDのデータの場合)と同期してバイトを交換します。 、外部メモリにアクセスすると、すべてのユニットがポートレジスタP0に書き込まれ、そこに保存されている情報が破棄されます。
40 Ucc 供給電圧出力

RONのバンクを切り替えると、サブルーチンの実行と割り込みの処理が簡素化されます。 サブルーチンを呼び出すときに、メインプログラムのRONの内容をスタックに転送する必要はありません(サブルーチン内の別のアクティブなRONバンクに移動するだけで十分です)。

RPDへのアクセスは、間接または直接バイトアドレス指定を使用して可能です(直接バイトアドレス指定では、RPDの最初の128バイトにのみアクセスできます)。

アドレス128(80h)から255(FFh)までの拡張RPDエリア(MCS-52ファミリおよび後続のファミリのマイクロコントローラ用)は、間接アドレス指定方法を使用してのみアドレス指定できます。

表2-特殊機能のブロックレジスタ(s f r)

Mnemoコード 名前
0E0h * ACC バッテリー
0F0h * B バッテリーエキスパンダーを登録する
0D0h * PSW プロセッサステータスワード
0B0h * P3 ポート3
0A0h * P2 ポート2
90時間 * P1 ポート1
80時間 * P0 ポート0
0B8h * IP 割り込み優先レジスタ
0A8h * IE 割り込みマスクレジスタ
99時間 SBUF シリアルトランシーバーバッファー
98時間 * SCON シリアルポート制御/ステータスレジスタ
89時間 TMOD タイマ/カウンタモードレジスタ
88時間 * TCON タイマー/カウンター制御/ステータスレジスタ
8Dh TH1 タイマー1(上位バイト)
8bh TL1 タイマー1(下位バイト)
8ch TH0 タイマー0(上位バイト)
8ah TL0 タイマー0(下位バイト)
83時間 DPH データポインタレジスタ(DPTR)(上位バイト)
82時間 DPL データポインタレジスタ(DPTR)(下位バイト)
81時間 SP スタックポインタレジスタ
87時間 PCON デマンドパワー制御レジスタ

2.ソフトウェアモデルMCS–51


コマンドタイプMCS–51

コマンドのほぼ半分が1マシンサイクル(MC)で実行されます。 水晶発振器の周波数が12MHzの場合、このようなコマンドの実行時間は1μsです。 残りのコマンドは2マシンサイクルで実行されます。 2ミリ秒。 乗算(MUL)および除算(DIV)命令のみが4マシンサイクルで実行されます。

1つのマシンサイクル中に、2バイトの命令を読み取るためのプログラムメモリ(内部または外部)への2回のアクセス、または外部データメモリ(EDM)への1回のアクセスがあります。

3. MCS–51に対処する方法(方法)

1.レジスタアドレス指定-8ビットのオペランドは、選択された(アクティブな)レジスタバンクのRONにあります。

2直接アドレス指定(符号-#で示されます)-オペランドは、コマンドの2番目(および16ビットのオペランドと3番目)のバイトにあります。

3間接アドレス指定(-@記号で示されます)-オペランドはデータメモリ(RPDまたはVPD)にあり、メモリセルのアドレスは間接アドレス指定のRONの1つ(R0またはR1)に含まれています。 PUSHおよびPOPコマンドでは、アドレスはスタックポインタSPに含まれています。 DPTRレジスタには、最大64KのVPDアドレスを含めることができます。

4 DIRECT BYTE ADDRESSING –(dir)– RPDセル(アドレス00h…7Fh)および特殊機能レジスタSFR(アドレス80h…0FFh)にアクセスするために使用されます。

5 DIRECT BIT ADDRESSING-(ビット)-は、アドレス20H ... 2FHのRPDセルにある個別にアドレス指定可能な128ビットをアドレス指定し、特殊機能レジスタの個別にアドレス指定可能なビットをアドレス指定するために使用されます(表3およびプログラムモデルを参照)。

6間接インデックスアドレス指定(@記号で示されます)-プログラムメモリ内のテーブルの表示を簡素化します。PPアドレスは、ベースレジスタ(PCまたはDPTR)とインデックスレジスタ(バッテリ)の合計によって決定されます。

7暗黙的(組み込み)アドレス指定-命令コードには、オペランドの1つ(ほとんどの場合、アキュムレータ)への暗黙的(デフォルト)参照が含まれています。

4.プロセッサステータスワード(PSW)フォーマット

C-キャリー(CARY)またはボローフラグ。ビット演算命令では「ブールアキュムレータ」としても機能します。

AC –補助(追加)キャリーフラグ–加算コマンド(ADD、ADDC)のキャリーが下位4次から上位(つまり、3番目のビットから4番目のビット)の場合は「1」に設定されます。

F0-ユーザーフラグ-ソフトウェアによって設定、リセット、およびチェックされます。

RS1 RS0 銀行 アドレス(dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10時間..17時間
1 1 3 18h..1Fh

RS1、RS0 –レジスタバンクの選択:

OV-算術オーバーフローフラグ。 その値は、ALUの最上位ビットの入力および出力キャリー信号のXOR演算によって決定されます。 このフラグの単一の値は、2の補数コードの算術演算の結果が範囲外であることを示します。–128…+ 127; 除算演算を実行すると、OVフラグがリセットされ、ゼロ除算の場合は設定されます。 乗算時に、結果が255(0FFH)より大きい場合、OVフラグが設定されます。

ビットPSW-予約済み。書き込みまたは読み取りに使用できるトリガーが含まれています。

P-パリティフラグ-アキュムレータのシングルビット数を偶数に加算したものです。 組み合わせ回路によって形成されます(プログラムで読み取り専用に使用可能)。

MCS-51マイクロコントローラには「Z」フラグがありません。 ただし、条件付きジャンプ命令(JZ、JNZ)では、組み合わせ回路がアキュムレータの現在の(ゼロまたは非ゼロ)内容をチェックします。

オペランドの転送と交換のすべてのコマンドは、アキュムレータを介して実行できます(図3を参照)。 さらに、外部メモリ(プログラムメモリまたはデータメモリ)への/からの転送は、バッテリを介してのみ実行できます。

ほとんどの転送は、フォワードバイト(dir)を介して行うこともできます。 dirからdirへの転送もあります(図3を参照)。

RONからRONへの欠落した転送は、RONから前方バイトディレクトリへの転送として実装できます(RONが常駐データメモリの初期領域にあり、そのセルをdirとしてアドレス指定できる場合)。

XCH交換コマンドを使用すると、両方のオペランドを破棄せずにバイトを送信できます。

算術コマンドは、アキュムレータでのみ実行されます。 したがって、最初のオペランドを最初にアキュムレータに配置してから、2番目のオペランドを加算または減算する必要があります。 結果はアキュムレータに配置されます。


SUBB減算コマンドは、借用がある場合にのみ実行されます(つまり、結果からキャリーフラグも減算されます)。 したがって、借用せずに減算命令を実行するには、最初にClear Flag C(CLRC)命令を実行する必要があります。

1バイトのオペランドを乗算するための命令(MULAB)は、2バイト(16ビット)の結果を配置します。下位バイトはアキュムレータにあり、上位バイトはレジスタBにあります。

1バイトのオペランドを除算するための命令(DIVAB)を実行した結果は、商(アキュムレータ、剰余)をレジスタBに配置します。

INC算術命令は、選択したオペランドに1を加算します。 DEC算術命令は、選択されたオペランドから1を減算します。 Accumulator Decimal Correction(DAA)命令は、2進化10進数(BCD)を、16進数(16進数)形式に変換せずに追加するのに役立ちます。 ソースオペランドはBCD形式である必要があります。 1バイトの各テトラッドには0から9までの数字しかありません(16進数はあり得ません:A、B、C、D、E、F)。 したがって、1バイトにはパックされたBCD番号の場合は00から99までの数字、アンパックされたBCD番号の場合は0から9までの数字を含めることができます。

DA A-10進数補正コマンドは、プロセッサにBCD番号を追加した後(16進数演算の法則に従って番号が追加された)、アキュムレータの内容に対して次のようにアクションを実行します(例を参照)。

・アキュムレータの下位テトラッドの内容が9より大きい場合、または補助キャリーフラグが設定されている場合(AC = 1)、アキュムレータの内容に6が追加されます(つまり、16進数で6桁が欠落しています)。フォーマット);

・その後、アキュムレータの上位の内容が9より大きいか、フラグCが設定されている場合、数値6がアキュムレータの上位に追加されます。

10進補正命令DAAは、インクリメント命令がCフラグとACフラグに影響を与えない(変更しない)ため、インクリメント命令(INC)の後には使用されません。

ロジックコマンド:

論理「AND」-ANL、

論理「OR」-ORL、

XOR論理コマンド(XRL)は、アキュムレータ(および算術演算)で実行されますが、直接アドレスバイト(dir)でも論理コマンドを実行できます。 この場合、2番目のオペランドは次のようになります。

バッテリーまたは

命令の即値オペランド。

ローテーション命令(RR A、RL A)およびCARYフラグを介したローテーション命令(RRC A、RLC A)は、アキュムレータの内容を1ビットローテーションします。ビットオペランドは、Cフラグを介してのみ送信されます。

MCS-51ファミリのアーキテクチャは、その目的、つまり構築によって大部分が事前に決定されています。 コンパクト安いですデジタルデバイス。 マイクロコンピュータのすべての機能は、単一のマイクロ回路を使用して実装されます。 MCS-51ファミリには、最も単純なマイクロコントローラから非常に複雑なマイクロコントローラまで、あらゆる種類のマイクロ回路が含まれています。 MCS-51ファミリのマイクロコントローラを使用すると、さまざまなデバイスを制御するタスクと、アナログ回路の個々のノードを実装するタスクの両方を実行できます。 このファミリのすべてのマイクロ回路は、同じもので動作します コマンドシステムMCS-51、それらのほとんどは同じケースで実行されます 一致するピン配置(ケースの脚の番号)。 これにより、開発されたデバイス(Maxim、Atmel、NXPなど)にさまざまな会社のチップを使用できます。 (catalog..php?page = components_list&id = 39 "> s.m.パラメーターで検索) デバイスとプログラムの回路図を変更せずに.

図1.I8751コントローラーのブロック図

コントローラのブロック図を図1に示します。これは、制御ユニット、算術論理演算ユニット、タイマー/カウンタユニット、シリアルインターフェイスおよび割り込みユニット、プログラムカウンタ、データメモリ、およびプログラムメモリ。 二国間交換は、内部の8ビットデータハイウェイを使用して実行されます。

各ブロックの目的を詳しく見てみましょう。 MCS-51ファミリのほとんどすべての代表は、このスキームに従って構築されています。。 このファミリのさまざまなマイクロ回路は、専用レジスタ(ポートの数を含む)のみが異なります。 MCS-51ファミリーのすべてのコントローラーのコマンドシステム 1、2、または3バイトの形式の111の基本コマンドが含まれており、あるチップから別のチップに移動しても変更されません。 これにより、あるチップから別のチップへのプログラムの優れた移植性が提供されます。

制御および同期ユニット

制御および同期ユニット(タイミングおよび制御)は、同期および制御信号を生成するように設計されており、OEVMユニットの動作のすべての許容モードでの共同動作の調整を保証します。制御ユニットには次のものが含まれます。

  • -時間間隔を形成するためのデバイス、
  • -I / Oロジック、
  • -命令レジスタ、
  • -電力消費管理レジスター、
  • -コマンドデコーダー、コンピューター制御ロジック。

タイムスロット装置フェーズ、サイクル、およびサイクルの内部同期信号の生成と出力を目的としています。 マシンサイクル数は、命令実行の期間を決定します。 乗算と除算の命令を除いて、ほとんどすべてのOEVMコマンドは1または2マシンサイクルで実行されます。その期間は4マシンサイクルです。 マスターオシレーターの周波数をFgで表すと、マシンサイクルの持続時間は12 / F g、つまりマスターオシレーターの信号の12周期になります。 入出力ロジックは、入出力ポートP0〜P3を介して外部デバイスとの情報交換を確実にする信号を送受信するように設計されています。

コマンドレジスタ実行中のコマンドの8ビットオペコードを記録して保存するように設計されています。 演算コードは、コマンドデコーダーとコンピューター制御ロジックを使用して、コマンド実行用のマイクロプログラムに変換されます。

デマンド制御レジスタ(PCON)マイクロコントローラの動作を停止して、消費電力を削減し、マイクロコントローラからの干渉レベルを削減できます。 マイクロコントローラのマスターオシレータを停止することにより、消費電力とノイズリダクションをさらに大幅に削減できます。 これは、PCONデマンド制御レジスタのビットを切り替えることで実現できます。 n-MOS製造オプション(名前の中央に「c」がない1816シリーズまたは外部チップ)の場合、PCON電力制御レジスタにはSMODシリアルポートのボーレートを制御するビットが1つだけ含まれています。消費電力制御ビットはありません。

算術論理演算装置(ALU)は、算術演算と論理演算を提供する並列8ビットデバイスです。 ALUの構成:

  • -アキュムレータレジスタ、一時ストレージレジスタTMP1およびTMP2、
  • -ROM定数、
  • -加算器、
  • -追加レジスタ(レジスタB)、
  • -アキュムレータ(ACC)、
  • -プログラムステータスレジスタ(PSW)。

登録 バッテリーレジスターの保持-オペランドの演算期間中、オペランドを受信して​​格納するように設計された8ビットレジスタ。 これらのレジスタには、プログラムでアクセスすることはできません。

ROM定数 2進数と10進数のデータ表現用の修正コード、ビット演算用のマスクコード、および定数コードの開発を保証します。

並列8ビット加算器は、加算、減算の算術演算、および加算、乗算、視差、単位元の論理演算を実行するように設計された、順次転送を備えた組み合わせ回路です。

レジスタB-乗算および除算演算中に使用される8ビットレジスタ。 その他の手順については、追加のスクラッチパッドレジスタと見なすことができます。

バッテリー-算術論理演算またはシフト演算を実行するときに得られる結果を受信して​​格納するように設計された8ビットレジスタ

シリアルインターフェースおよび割り込みブロック(SIP)シーケンシャル情報フローの入出力を整理し、プログラム割り込みシステムを整理するように設計されています。 ブロックには次のものが含まれます。

  1. -PIPバッファー、
  2. -制御ロジック、
  3. -制御レジスタ、
  4. -送信機バッファー、
  5. -レシーバーバッファ、
  6. -シリアルポートトランシーバー、
  7. -割り込み優先レジスタ、
  8. -割り込みイネーブルレジスタ、
  9. -割り込みフラグとベクトル生成スキームを処理するためのロジック。

プログラムカウンター内部プログラムメモリの現在の16ビットアドレスと外部プログラムメモリの8/16ビットアドレスを形成するように設計されています。 プログラムカウンタは、16ビットPCバッファ、PCレジスタ、およびインクリメント回路(コンテンツを1ずつインクリメント)で構成されています。

データメモリ(RAM)プログラムの実行中に使用される情報を一時的に保存することを目的としています。

ポートP0、P1、P2、P3は準双方向の入出力ポートであり、OEVMと外部デバイス間の情報交換を確実にするように設計されており、32の入出力ラインを形成します。

タイマー装置ファミリの基本モデルには、タイマーと外部イベントカウンターの両方として使用できる2つのプログラム可能な16ビットタイマー/カウンター(T / C0およびT / C1)があります。

プログラムステータスレジスタ(PSW)プログラムの実行中のALUの状態に関する情報を格納するように設計されています。

プログラムメモリ(EPROM)プログラムを格納するように設計されており、読み取り専用メモリ(ROM)です。 さまざまなマイクロ回路は、紫外線または紫外線によって消去されるマスクされたROMを使用します 閃光 ROM。

データポインタレジスタ(DPTR)外部データメモリまたはプログラムメモリの16ビットアドレスを格納するように設計されています。

スタックポインタ(SP)は、任意のメモリセルを一時的に格納できる特別なデータメモリ領域(スタック)を編成するために設計された8ビットレジスタです。



割り込みシステムの状態は、フェーズS5P2の各マシンサイクルの最後にポーリングされます。ただし、RETI命令と、IEおよびIPレジスタにアクセスする命令は除きます。 割り込み要求がコミットされた瞬間から、要求のフェーズと要求が受信された命令のマシンサイクル数に応じて、38〜86周期の周波数fOSCがかかります。

割り込みがハードウェアに実装されると、LCALL addr16命令が実行されます。これにより、プログラムカウンターの現在の状態がスタックに格納され(リターンアドレスを記憶)、対応するサービスプロシージャの開始アドレスaddr16にジャンプします。 各割り込み要求ソースには、独自の関連付けがあります

開始アドレス(割り込みベクタ):

外部割り込みINT0。

タイマー/カウンター割り込みTC0。

外部割り込みINT1。

タイマー/カウンター割り込みTC1。

シリアルポート割り込み。

2.7。 MCS-51ファミリのアドレス指定方法とコマンドシステム

MCS-51ファミリのコマンドシステムは、ユニバーサルポートP0 ... P3および一次情報処理を介した柔軟なデータ入出力の編成に重点を置いています。 ビットを使用した操作とその値による制御の転送には特に注意が払われます。 このような操作を実行する命令は、大きなグループを形成し、対応するハードウェアとともに、MCS-51アーキテクチャの一部としていわゆる「ブールプロセッサ」を形成します。

コマンドシステムは、アドレッシング方式とソフトウェアでアクセス可能なハードウェアリソースのフルセットを使用して、ほとんどの操作を使用する機能をプログラマーに提供します。

2.7.1。 アドレッシング方式

各命令は、実行する操作とオペランドにアクセスするためのメソッドをプロセッサに指示します。 コマンドコードには、特定の機能目的を持ついくつかのフィールドがあります。 コマンドの最も重要なフィールドは、コマンドのアクションを決定するオペコード(COP)とアドレス部分です。 アドレス部分のフィールドには、オペランドのアドレスと演算の結果に関する情報が含まれ、場合によっては、次の命令のアドレスに関する情報が含まれます。

アドレスが、オペランドが配置されている、またはオペランドが入力されているメモリセルの番号を指している場合、それは直接アドレスと呼ばれます。

アドレッシング方式は、オペランドにアクセスするための一連のメカニズムです。 それらのいくつかは単純であり、コンパクトな命令フォーマットとオペランドへの高速アクセスをもたらしますが、利用可能なリソースの量は限られています。 他のものはあなたがシステムで利用可能なすべてのリソースで操作することを可能にします、しかしコマンドは長いことがわかります、

入力と実行には多くの時間が費やされます。 各命令セットのアドレス指定方法のセットは、解決するタスクのセットに基づいてアーキテクチャ設計者が選択した既知のアドレス指定メカニズムの妥協の組み合わせです。

以下は、MCS-51ファミリコマンドシステムで使用される主なアドレス指定方法です。

暗黙のアドレス指定。 このコマンドには、演算に参加しているオペランドのアドレスまたは演算の結果が配置されるアドレスに関する明示的な指示は含まれていませんが、このアドレスは暗黙的に示されています。 コマンドでは、ほとんどの場合、アキュムレータは操作の結果の宛先として暗黙的にアドレス指定されます。 たとえば、ADD A、R1命令によってアキュムレータ(A)の内容と現在のデータバンクのR1レジスタを加算した結果は、暗黙的にアドレス指定されたアキュムレータに書き込まれます。 指定された命令全体がメモリ内の1バイトを占有しますが、アキュムレータ(SFR領域の8Eh)のみのアドレスには1バイトが含まれます。

直接アドレス指定。 コマンドのアドレスフィールドに、

存在するのはオペランドのアドレスではなく、オペランド自体です。 直接アドレス指定は、番号の前の特殊文字#で示されます。 たとえば、コマンドMOV A、#15hは、16進数の15(コマンドの2番目のバイト)をアキュムレータにロードします。 コマンドシステムでは、直接アドレス指定は#dataとして示されます。ここで、dataは数値です。

(データ= 00h ... FFh)。

直接アドレス指定。 命令アドレスフィールドは、オペランドが配置されている、またはオペランドが書き込まれているデータメモリ位置の直接アドレスを指定します。 たとえば、MOV A、15h命令は、アドレス15hのDSEGセルの内容をアキュムレータにロードします。 メモリセルは直接アドレス指定可能ですが、アキュムレータは暗黙的にアドレス指定されます。 アドレス指定されたオペランドの位置に応じて、直接アドレス指定はレジスタ直接アドレス指定と絶対アドレス指定に細分されます。

直接レジスタアドレス指定。 コマンドアドレスフィールドには、現在のレジスタバンクの直接レジスタアドレスが含まれます。 各バンクには8つのレジスタがあり、それらをアドレス指定するには3ビットの直接アドレスが必要です。 コマンドニーモニックでは、アドレス指定可能なレジスタはRnで示されます。ここで、n = 0 ... 7です。 コマンドのすべてのフィールドは1バイトに収まります。 このようなアドレス指定はショートと呼ばれます。 たとえば、MOV R4、R1です。

直接絶対アドレス指定任意のDSEGセルおよびSFRエリアにアクセスできます。 この場合の直接アドレスは1バイトを取り、コマンドは2バイトを取ります。 コマンドシステムでは、ダイレクトアドレスバイトはdirect(direct)(direct = 00h ... FFh)という単語で表されます。 たとえば、命令MOV 80h、R2(またはMOV P0、R2)は、現在のデータバンクのレジスタR2の内容をポートP0(SFRの位置80h)にロードします。 両方のオペランドが直接絶対アドレス指定可能である場合、命令は3バイト命令になります(例:MOV 80h、15h)。

間接アドレス指定。 アドレスフィールドには、オペランドの直接アドレスが配置されているメモリ位置のアドレスが含まれます。 コマンドシステムでは、間接アドレス指定は@特殊文字で示されます。 財産

各レジスタバンクのレジスタR0およびR1(@ Ri、i = 0.1)は、直接アドレスを格納する必要があります。 たとえば、現在のレジスタバンクのR1レジスタの内容が15hの場合、MOV A、@ R1命令は上記のMOVA、15h命令と同じアクションを実行し、DSEGメモリロケーションの内容をロードします。アキュムレータへのアドレス15h。 ただし、MOV A、@ R1コマンドはシングルバイトですが、最も重要なことは、R1レジスタの内容を変更することでプログラムでアドレスを変更できることです。

相対アドレス指定。 相対アドレス指定では、コマンドのアドレスフィールドにベースアドレスを追加することによって直接アドレスが形成されます。 プログラムカウンタの内容はベースアドレスとして使用され、命令のアドレスフィールドは8ビットのrel(相対)オフセットです。 rel番号は、コマンドによって2の補数で表される符号付き整数として解釈されます。 その表示範囲は(-128 ... + 127)です。 rel番号を決定するときは、プログラムカウンターが次に実行される命令を指していることに注意してください。 相対アドレス指定は、再配置可能なプログラムモジュールの作成を可能にする制御転送コマンドで広く使用されています。 相対アドレス指定を使用した制御転送コマンドを使用すると、PCプログラムカウンターの現在の位置を基準にして、両方向に(-128 ... + 127)バイト分岐できます。

アセンブリ言語プログラムでは、オフセットフィールドを使用して、ジャンプ先のラベルを指定できます。 変換の結果、オフセット値が(-128…+ 127)を超えない場合、アセンブラはオフセット値を計算します。 そうしないと、エラーメッセージが発行されます。

基本的なアドレス指定一種の相対アドレス指定を表します。 この場合の直接アドレスは、コマンドで指定されたアドレスを、ベースアドレスを格納するベースレジスタの内容に追加することによって形成されます。 MCS-51ファミリのベースレジスタの機能は、DPTRデータポインタレジスタまたはPCプログラムカウンタによって実行されます。 このタイプのアドレス指定は、テーブルやデータ配列を処理するときに特に役立ちます。 MOVC A、@ A + DPTRおよびMOVCA、@ A + PC命令では、16ビットの直接アドレスはDPTRとAまたはPCとAレジスタの内容の合計として形成されます。

ページアドレス指定。 ページアドレス指定を使用する場合、メモリは同じ長さの複数のページに分割されます。 ページアドレス指定は別のページレジスタによって実行され、ページ内のメモリセルは命令に含まれるアドレスによってアドレス指定されます。 直接アドレスは、ページのアドレスとページ内のメモリセルのアドレスを連結(接続)することによって形成されます。 MOVX A、@ Ri命令では、ポートP2(アドレスの上位バイト)がページレジスタの機能を実行し、レジスタRi(アドレスの下位バイト)の内容がページ内のアドレスを指定します。 この場合、メモリはそれぞれ256セルの256ページに分割されます。

スタックアドレス指定アドレスレスコマンドで使用され、自動インクリメントと自動デクリメントのアドレス指定方法の組み合わせであり、LIFO(後入れ先出し-最初の出力)-「後入れ先出し」の原理に基づいて動作します。 スタックはDSEGにあり、アドレスが増える方向に大きくなります。 スタックの最上位のアドレスは、スタックポインタSPに含まれています。 バイトがスタックにプッシュされると、最初にSPの内容がインクリメントされ、次にアドレスが書き込まれます。 スタックからバイトを読み取るときは、最初にSPが指すアドレスで読み取り、次にSPをデクリメントします。 スタックを使用する場合、スタックの深さ(スタックが占めるメモリセルの最大数)はハードウェアによって制御されないことに注意してください。 スタックが過度に増加すると、その目的ではないメモリセルが、その中の情報の損失で占有される可能性があります。 ハードウェアスタックは、割り込みを処理するときにリターンアドレスを格納するために使用されます。

2.7.2。 MCS-51ファミリーコマンドシステム

コマンドシステムは、付録2の表A2.1 ... A2.6に示されています。これらの表は、コマンドの名前、そのニーモニック、二項演算コード、実行されたコマンドがフラグC、OV、ACに与える影響を示しています。 P、バイト単位のコマンドの長さ(B)、マシンサイクル単位の実行時間(C)、および命令によって実行された変換の内容。 コマンドのアドレスフィールドの区切り文字としてコンマが使用されます。 読みやすさを向上させるために、使用されているアセンブラーでサポートされている場合は、コンマの後にスペースを追加できます。

コマンドのセット全体は、データ転送操作、算術操作、論理操作、ビットを使用した操作、および制御転送操作の5つのグループに分けることができます。

データ転送操作コマンドグループ(表A2.1)共同-

MOVコマンド(DSEGとRSEG間のデータ転送)、MOVC(CSEGとAの間)、MOVX(XSEGとAの間)、PUSHとPOPスタックアクセスコマンド、および2つのXCHとXCHD交換コマンドを保持します。 アキュムレータを宛先とするすべてのデータ転送命令は、アキュムレータの内容のパリティフラグPを設定し、PSWレジスタを宛先とする直接アドレス指定命令はすべてのフラグを変更します。 最も容量の大きいのはMOV命令で、直接レジスタ(A、Rn、DPTR)、直接(直接)、間接(@Ri)、直接(#data、#data16)の4つのアドレッシング方式を使用します。 コマンドの2番目のオペランドはソースで、最初のオペランドはデスティネーションです。 宛先を指定するための3つのアドレス指定方法(直接を除く)と、送信元を指定するための4つすべてのアドレス指定方法があります。 3バイトのMOVダイレクト、ダイレクト命令は、RSEGを含む任意の2つのメモリセル(DSEGおよびSFR)間の転送を提供します。 RSEGとの交換のために、特別な2バイトおよび1バイトのフォーマットが提供されています。

特別な命令MOVDPTR、#data16は、16ビットのDPTRポインタに値data16をロードします。

MOVC命令を使用すると、CSEGプログラムメモリから制御デバイスのコマンドレジスタではなく、操作デバイスのアキュムレータに情報を読み取ることができます。 このコマンドは、DPTRに基づくものとPCに関連するものの2つのアドレス指定方法を使用します。 どちらの場合も、符号なし整数オフセット(インデックス)はアキュムレータに格納されます。 アキュムレータは、結果の受信者としても機能します。 このコマンドを使用すると、テーブルごとにすばやく再コーディングを実行できます。

外部メモリには、MOVX命令を使用してアクセスします。 交換は、アキュムレータと外部XSEG間のバイト単位で実行されます。 XSEGセルは、2つの方法でアドレス指定できます。16ビットポインタDPTRを介して間接的にアドレス指定する方法と、8ビットポインタRiを介してページごとに間接的にアドレス指定する方法です。i= 0,1。 後者の場合、ページレジスタはP2です。

アドレス指定されていないPUSHおよびPOPコマンドはデータ転送を提供します

DSEG、RSEG、SFRの間。

XCH交換コマンドは双方向のバイト交換を提供し、XCHDコマンドはバイトオペランドの下位4つを提供します。

算術演算の命令のグループ(表A2.2)共同-

Add ADD、Carry Add ADDC、Borrow Subtract SUBB、Increment and Decrement by One INC and DEC、Packed BCD Decimal Correction、Multiply MUL、およびDivideDIVを保持します。 演算は符号なし整数に対して実行されます。 加算と減算の演算では、アキュムレータが最初のオペランドであり、結果の宛先です。 直接レジスタ、直接絶対、直接および間接アドレス指定は、第2オペランドを定義するために使用されます。 INCおよびDEC演算は、アキュムレータ、直接アドレス指定可能なレジスタ、直接または間接的にアドレス指定可能なメモリ位置に適用されます。 さらに、INC演算は、16ビットDPTRポインタレジスタの内容に適用されます。

整数の乗算と符号なし除算の演算には、アキュムレータとレジスタBが含まれます。乗算では、Aの8ビット値にBの8ビット値を乗算し、16ビットの結果をペアBAに書き込みます。 この場合、レジスタBは製品の最上位部分を格納します。 積が255より大きい場合、OVフラグが設定されます。8ビット値Aを8ビット値Bで除算すると、商はAに書き込まれ、余りはBに書き込まれます。0で除算しようとすると、 OVオーバーフローフラグ。

アキュムレータの10進補正コマンドDAは、加算コマンドの後に配置されます。 用語はBCDコードで表す必要があります。 修正は標準的な方法で実行されます。

論理命令グループ(表A2.3 )には、3つの一般的な操作が含まれています。ANL-論理AND、ORL-論理OR、XRL-論理排他OR。 第1オペランドのソース

アキュムレータAまたは直接アドレス指定可能なメモリセルのいずれかです。 2番目のオペランドは、4つの基本的なアドレッシング方式のいずれかによって指定されます。 グループには、 単一の操作アキュムレータの内容の上:CLR-クリア、CPL-反転、およびRL、RLC、RR、RRC-左右への循環および拡張シフトの操作。 これには、SWAPアキュムレータでテトラッドを交換する操作も含まれます。これは、1バイトの4ビットのサイクリックシフトとして解釈できます。

ビット演算命令グループ(表A2.6)にはco-が含まれています

コマンドSETB-ビットを1に設定し、CLR-ビットを0にリセットし、CPL-ビット反転、ANLおよびORL-フラグCの内容と直接アドレス指定されたビットの論理ANDおよび論理OR、MOV-ビット転送。

V ビット演算では、Cフラグはブールアキュムレータの役割を果たします。 Cフラグの内容またはBSEG領域の直接アドレス指定可能なビットがオペランドとして使用されます。 ANLおよびORL操作では、直接アドレス指定されたビット(ビット)のコンテンツまたはコンテンツの逆(/ビット)を使用できます。

V このグループには、相対的な条件付きジャンプ命令も含まれます 8ビットオフセット相対。 条件分岐は、ビットがセットされているとき(JBコマンド)またはクリアされているとき(JNBコマンド)のいずれかで実行できます。 特に注目すべきは、JBC命令です。これは、ビットが設定されると、分岐を実装し、同時にビットを0にリセットします。

制御転送コマンドグループ(表A2.4およびA2.5)

ジャンプ無条件命令AJMP、LJMP、SJMP、JMP、ジャンプ条件付きJZ、JNZ、CJNEを保持し、ACALL、LCALLを呼び出し、RET、RETIを返し、条件付きジャンプDJNZで更新します。 空のNOPコマンドもここに含まれています。

V 相対アドレス指定は、再配置可能なプログラムモジュールの作成を可能にするために、制御転送コマンドで広く使用されています。 相対アドレスは 8ビットオフセットrelは、PCの現在の位置を基準にして(-128…+ 127)バイトへの遷移を提供する符号付きバイトです。 直接addr16または間接@A + DPTRアドレスのいずれかを使用して、64KBアドレス空間内の他のポイントにジャンプできます。 後者の場合、Aの内容は符号なし整数として解釈されます。 MCS-48ファミリとの互換性のために、現在の2Kページ内の短い直接アドレス指定addr11のバリアントが導入されています。

これらのタイプのアドレス指定はすべて、ジャンプ命令で使用されます。 呼び出しコマンドは、直接addr16およびページ内addr11アドレッシング方式のみを使用します。 すべての条件付きコマンドは、相対アドレス指定のみを使用します。

マイクロコントローラが割り込み要求を認識すると、LCALL addr16命令を発行します。これにより、リターンアドレスがスタックに自動的に格納されます。 プログラム状態情報(PSWレジスタの内容)は自動的に保存されません。 ここで

UDC 681.5、681.325.5(075.8)

BBK 32.973.202-018.2 i 73

シチェルビナA.N.コンピューティングマシン、システム、ネットワーク。 制御システムのマイクロコントローラーとマイクロプロセッサー:ヘプ。 手当/A.N。 ペンシルベニア州シチェルビナ Nechaev-SPb .:ポリテクニックから。 un-ta、2012.-226p。

技術システム、電力、電気工学の管理分野におけるトレーニングと専門分野の州教育基準の内容、および「コンピューター、システム、ネットワーク」の分野の模範的なカリキュラムの内容に対応します。

マイクロプロセッサシステムの論理構成に関する基本的な質問は、IntelのMCS-51マイクロコントローラファミリの基本アーキテクチャの例で検討されています。 アセンブラーおよびSI言語でマイクロコントローラーをプログラミングする技術について説明します。

これは、高等技術機関の学生や教師、技術プロセスや生産設備の自動化の専門家、およびマイクロプロセッサシステムの設計エンジニアに役立ちます。

それはまた、140400「電力および電気工学」の方向での学士、工学および修士の訓練の分野「制御システムにおけるマイクロコントローラーおよびマイクロコントローラー」および「自動化の電子装置」の州教育基準の内容に対応する。

編集出版評議会の決定により出版

サンクトペテルブルク工科大学。

©ShcherbinaA。N.、Nechaev P. A.、2012

©サンクトペテルブルク州

工業大学、2012年

ISBN 978-5-7422-3553-8


はじめに..7

第1章MCS51ファミリのアーキテクチャ。 10

1.1一般的な特徴10

1.2ブロック図11



1.38051マイクロコントローラーのピン割り当て15

1.4メモリ構成17

1.4.1プログラムメモリ(ROM)18

1.4.2データメモリ(RAM)19

1.4.3特殊機能のレジスタ。 20

1.4.4フラグレジスタ(PSW)23

1.5制御および同期装置26

1.6 I / Oポートの整理27

1.6.1一般情報。 27

1.6.2代替機能。 27

1.7。 8051ファミリのマイクロコントローラのタイマー/カウンタ。28

1.7.1。 タイマーの構造-カウンター。 28

1.7.2タイマー-カウンターの動作モード。 30

1.8。 シリアルポート32

1.8.1。 シリアルポートの構造。 32

1.8.2。 トランシーバー制御/ステータスレジスタSCON .. 34

1.8.3。 電力制御レジスタPCON .. 36

1.9。 割り込みシステム37

1.9.1。 割り込みシステムの構造。 37

1.9.2割り込みルーチンの実行。 40

第2章80C51GBの機能..マイクロコントローラ42

2.1機能42

2.2 I / OポートP0-P543

2.2.1 I / Oポートの操作。 43

2.2.2ポートへの書き込み..46

2.3 8XC51GB ..割り込みシステムの機能49

割り込みを有効/無効にします。 50

割り込み優先度管理。 51

外部割り込み。 54

2.3。 ADCノード56

2.4。 ハードウェアウォッチドッグ61

2.5。 クロック障害検出63

2.6。 プログラマブルカウンタのマトリックスRSA64

2.6.1。 構造PCA .. 64

2.6.2。 PCAカウンタモードレジスタ(CMOD)66

2.6.3。 PCAカウンタ制御レジスタ(CON)67

2.6.4。 モジュールを比較/修正します。 68

2.7。 拡張シリアルポート76

2.8。 タイマー/カウンター79

8XC51GBのピン割り当て..グループマイクロコントローラ86

第3章プログラミングMK8051GB .. 89

3.1。 ソフトウェアモデル89

3.2データ型93

3.3データに対処する方法93

3.4コマンドシステム95

3.4.1一般的な特性。 95

3.4.2コマンドタイプ。 96

3.4.3オペランドのタイプ。 97

3.4.4マイクロコントローラーのデータ転送コマンド。 98

3.4.5算術命令8051.101

3.4.6 8051MCUロジックコマンド.104

3.4.78051ビット操作コマンド。106

3.5プログラムのデバッグ111

第4章ASM-51プログラミング言語。 112

4.2プログラムテキストの作成113

4.3言語のアルファベット。 114

4.4識別子。 115

4.5数字117

4.6指令118

4.7ASM51でのサブルーチンの実装122

4.7.1ASM51言語でのサブルーチンプロシージャの構造。 122

4.7.2パラメータ変数をサブルーチンに渡す。 123

4.7.3サブプログラムの実装-ASM51言語の関数。 123

4.7.4ASM51言語での割り込み処理ルーチンの実装。 124

4.8アセンブリ言語での構造化プログラミング。 125

4.9マルチモジュールプログラムの翻訳の特殊性..126

4.10セグメントの使用128

4.10.1MKメモリをセグメントに分割する..128

4.10.2絶対メモリセグメント。 129

4.10.2再配置可能なメモリセグメント。 131

第5章C-51プログラミング言語。 134

5.1言語の一般的な特徴134

5.3C-51プログラムの構造136

5.3。 C-51プログラミング言語の要素138

5.3.1。 シンボル..138

5.3.2。 語彙単位、区切り記号、およびスペースの使用。 141

5.3.3識別子..142

5.3.4キーワード。 143

5.3.5定数..143

5.4。 言語ステートメントの表現146

プログラミングC-51146

5.5。 操作の優先順位148

5.6。 C-51プログラミング言語ステートメント149

5.6.1。 宣言演算子。 150

5.6.2実行可能ステートメント..150

5.6.3代入演算子。 151

5.6.4条件文。 151

5.6.5構造演算子()。 152

5.6.6forループステートメント。 152

5.6.7whileループ本体までの条件チェックを含むループステートメント。 153

5.6.8ループ本体がwhileを実行した後の条件チェックを含むループステートメント。 154

5.6.9breakステートメント。 155

5.6.10continueステートメント。 155

5.6.11スイッチ選択ステートメント。 155

5.6.12goto演算子。 157

5.6.13演算子式。 158

5.6.14サブルーチンreturnからのreturnステートメント。 158

5.6.15空のステートメント。 158

5.7。 C-51プログラミング言語での変数の宣言。 159

5.7.1。 変数宣言。 159

5.7.3整数データ型。 161

5.7.4浮動小数点数。 162

5.7.5列挙型の変数。 162

5.7.6。 C-51プログラミング言語で配列を宣言します。 164

5.7.7。 構造..165

5.7.8。 アソシエーション(混合物)166

5.8。 C-51でのポインタの使用167

5.8.1。 ポインタの宣言。 167

5.8.2。 型指定されていないポインタ。 168

5.8.3。 メモリに依存するポインタ。 169

5.9。 新しいタイプの変数の宣言169

5.10。 データの初期化170

5.11。 C-51プログラミング言語でのサブルーチンの使用。 170

5.11.1。 サブルーチンの定義..171

5.11.2。 サブプログラムパラメータ..173

5.11.3。 サブルーチンの事前宣言..174

5.11.4サブルーチンの呼び出し..176

5.11.5再帰的なサブプログラム呼び出し..176

5.11.6割り込みルーチン。 177

5.11.7変数とサブルーチンの範囲..178

5.12。 マルチモジュールプログラム179

第6章KeilμVision2統合開発環境でのプログラムの準備。 182

6.1ASM-51プロジェクトの作成182

6.2KeilμVision2IDE188でトレーニングコントローラー用のCプロジェクトを作成する例

第7章学習コントローラーの説明..199

7.1。 コントローラーの構造199

7.2。 アドレス空間200

7.2.1。 メモリ割り当て。 200

7.2.2外部メモリ。 201

7.2.3。 内部データメモリ。 202

7.3。 I / Oポートの割り当て202

7.4。 シリアルポート………………………………... 203

7.5。 LCD205の操作

7.6。 コントローラーパネル……………………………………………………213

付録P2実験室作業に関する報告書の構造……..217

付録P3マシンコマンドのコード。 217

参考文献... 224


序章

技術プロセスと生産の自動化に関連する専門分野の開発において、マイクロコントローラーの研究は重要なセクションの1つです。

世界ではますます多くの16ビットおよび32ビットのマイクロコントローラとマイクロプロセッサが継続的に開発および出現していますが、世界のマイクロプロセッサ市場の最大のシェアは依然として8ビットデバイスです。 近い将来の分析会社のすべての予測によると、世界市場での8ビットマイクロコントローラーの主導的地位は継続します。

現在、すべての8ビットマイクロコントローラーの中で、MCS-51ファミリーは、品種の数とその変更を行っている企業の数で誰もが認めるリーダーです。 このファミリの最初の代表であるマイクロコントローラ8051にちなんで名付けられました。周辺機器のセットの成功、外部または内部プログラムメモリの柔軟な選択の可能性、手頃な価格により、このマイクロコントローラは市場で成功を収めました。

MCS-51ファミリの利点:

デファクトスタンダードであるアーキテクチャ。

家族の極端な幅とさまざまな機会。

プロセッサの高性能および拡張バージョンの可用性。

かなりの数の自由に利用できるソフトウェアおよびハードウェアの開発。

インサーキットプログラミングを含むハードウェアプログラミングの容易さ。

基本的なチップの低コストと可用性。

特別な使用条件のための特別なバージョンのコントローラーの可用性

電磁干渉のレベルが低減されたバージョンのコントローラーの可用性。

・世界とCIS諸国の両方で、より古い世代の開発者の間で幅広い人気があります。

世界をリードする教育機関による建築のサポート。

そして最後に、主な利点は、ファミリの基本チップを習得したことで、Cygnal、Dallas Semiconductor、Analog Devices、TexasInstrumentsマイクロコントローラなどのコンピューティング「モンスター」での作業を簡単に開始できることです。

MCS-51ファミリには、最も単純なマイクロコントローラから非常に複雑なマイクロコントローラまで、あらゆる種類のマイクロ回路が含まれています。 現在までに、8051ファミリのマイクロコントローラには200以上の変更が加えられており、約20社が製造しています。 毎年、この家族の代表者の変種がますます増えています。

開発の主な分野は次のとおりです。

速度の向上(クロック周波数の増加とアーキテクチャの再設計)。

供給電圧と消費電力の削減。

・インサーキットプログラミングの可能性があるチップ上のRAMとフラッシュメモリの量の増加。

・ドライブ制御システム、CANおよびUSBインターフェースなどの複雑なデバイスのマイクロコントローラー周辺への導入。

MCS-51ファミリのマイクロコントローラを使用すると、さまざまなデバイスを制御するタスクと、アナログ回路の個々のノードを実装するタスクの両方を実行できます。 このファミリのすべてのマイクロ回路は、同じコマンドシステムで動作します。 それらのほとんどは、同じピン配置(ケースの脚の番号付け)を使用して同じケースで実行されます。 これにより、デバイスの回路図やプログラムを変更することなく、開発したデバイスにさまざまなメーカーのマイクロ回路を使用することができます。

世界の第51ファミリーの品種の主なメーカーは、フィリップス、シーメンス、インテル、アトメル、ダラス、テミック、オキ、AMD、MHS、ゴールドスター、ウィンボンド、シリコンシステムズなどです。

高度な機能を備えたMCS-51ファミリ(Intel 8XC51FA、8XC51GB、80C152)のマイクロコントローラのアナログの特性を表に示します。 1で。

表B.1

ROM SAR ADC WDT T / C 出産後。 チャンネル 特殊性
Atmel:AT89C2051
- - - - UART フラッシュ2Kb
AT89C4051 - - - - UART フラッシュ4Kb
AT89S4D12 128K - - - UART、SPI フラッシュ4Kb
ダラス半導体:DS5000FP
- - - + UART ブートストラップローダー
DS5001FP - - - + UART ブートストラップローダー
DS8xC520 16K - - + 2xUART 2DPTR
シーメンス:C505C
16K - + + UART、CAN 8DPTR
C515C 64K - + + UART + SSC + CAN 4 PWM、8 DPTR
フィリップス:* 89C51RA +
- + - + UART 2 DPTR、レベル4 割り込み、クロックアウト、フラッシュ8K
P51XAG1x 8K - - + 2つのUART
Intel:8xC51RA
8K - + + UART 4レベルIRQ、クロックアウト
8XC196KC 64K 16K - + - UART 3 PWM
80C196KB 64K 8K - + - UART PWM

第1章MCS51ファミリアーキテクチャ

MCS-51ファミリの8ビットシングルチップマイクロコントローラは、その優れた設計アーキテクチャにより、マイクロプロセッサ制御システムの開発者の間で大きな人気を得ています。 マイクロコントローラアーキテクチャは、ソフトウェアでアクセス可能な内部および外部のハードウェアリソースとコマンドシステムのセットです。 MCS-51ファミリのアーキテクチャは、主にその目的、つまりコンパクトで低コストのデジタルデバイスの構築によって決まります。 単一のマイクロ回路を使用してマイクロコンピューターのすべての機能を実行するマイクロコントローラーは、シングルチップコンピューター(OEVM)と呼ばれます。

Intelは、Intel 8051マイクロコントローラーのオペレーティングコアに基づいて約50のモデルをリリースしました。同時に、Atmel、Philipsなど、他の多くの企業がMCS-51標準で開発されたマイクロコントローラーの生産を開始しました。

一般的な特性

家族の主な特徴:

・エグゼクティブデバイスの制御に重点を置いた8ビット中央処理装置(CPU)。

・CPUには、8ビットのハードウェアの乗算と数値の除算の回路が組み込まれています。

直接アドレス指定可能なビットを処理するための多数の演算が命令セットに存在することにより、ビットデータを処理するためのプロセッサ(ブールプロセッサ)について話すことができます。

マスクまたは再プログラム可能なタイプの内部(オンチップ)プログラムメモリ。さまざまな水晶用に4〜32 Kbの容量があり、一部のバージョンにはありません。

・組織、レジスタバンク、スタック、およびユーザーデータストレージに使用される少なくとも128バイトのデータ常駐RAM。

・情報の入力または出力用に個別に構成された、少なくとも32の双方向インターフェイスライン(ポート)。

・外部イベントのカウント、時間遅延の整理、および通信ポートのクロックに使用される2つの16ビットマルチモードカウンター/タイマー。

・マイクロコントローラーと外部デバイス間の通信チャネルを幅広い情報転送速度で編成するように設計された双方向二重非同期トランシーバー(UART)。 マイクロコントローラを接続されたシステムにハードウェアとソフトウェアで統合する手段があります。

・4つの内部および2つの外部イベントソースからの少なくとも5つの割り込みベクトルをサポートする2レベルの優先度割り込みシステム。

内蔵のクロックジェネレータ。

構造スキーム

コントローラのブロック図を図1.1に示します。これは、制御ユニット、算術論理演算ユニット、タイマー/カウンタユニット、シリアルインターフェイスおよび割り込みユニット、プログラムカウンタ、データメモリ、およびプログラムメモリ。 二国間交換は、内部の8ビットデータハイウェイを使用して実行されます。 MCS-51ファミリのほとんどすべての代表は、このスキームに従って構築されています。 このファミリのさまざまなマイクロ回路は、専用レジスタ(ポートの数を含む)のみが異なります。

制御および同期ユニット(タイミングおよび制御)-同期および制御信号を生成するように設計されており、OEVMユニットの動作のすべての許容モードでの共同動作の調整を保証します。 コントロールユニットには次のものが含まれます。

時間間隔を形成するための装置;

入出力ロジック;

命令レジスタ;

電力消費管理登録;

コマンドデコーダー、コンピューター制御ロジック。

米。 1.1。 I8051コントローラーの構造図。

タイムスロット装置フェーズ、サイクル、およびサイクルの内部同期信号の生成と出力を目的としています。 マシンサイクル数は、命令実行の期間を決定します。 乗算と除算の命令を除いて、ほとんどすべてのOEVMコマンドは1または2マシンサイクルで実行されます。その期間は4マシンサイクルです。 マスターオシレーターの周波数をFgで表します。マシンサイクルの持続時間は12 / F g、つまりマスターオシレーターの信号の12周期です。 入出力ロジックは、入出力ポートP0〜P3を介して外部デバイスとの情報交換を確実にする信号を送受信するように設計されています。

コマンドレジスタ実行中のコマンドの8ビットオペコードを記録して保存するように設計されています。 演算コードは、コマンドデコーダーとコンピューター制御ロジックを使用して、コマンド実行用のマイクロプログラムに変換されます。

デマンド制御レジスタ(PCON)マイクロコントローラの動作を停止して、消費電力を削減し、マイクロコントローラからの干渉レベルを削減できます。 マイクロコントローラのマスターオシレータを停止することにより、消費電力とノイズリダクションをさらに大幅に削減できます。 これは、PCONデマンド制御レジスタのビットを切り替えることで実現できます。 n-MOS製造オプション(名前の中央に「c」がない1816シリーズまたは外部チップ)の場合、PCON電力制御レジスタにはSMODシリアルポートのボーレートを制御するビットが1つだけ含まれています。消費電力制御ビットはありません。

算術論理演算装置(ALU)は、算術演算と論理演算を提供する並列8ビットデバイスです。 ALUの構成:

アキュムレータレジスタ、保持レジスタTMP1およびTMP2;

ROM定数;

加算器;

追加レジスタ(レジスタB);

バッテリー(ACC);

プログラムステータスレジスタ(PSW)。

登録 アキュムレータと保持レジスタ-オペランドの演算期間中、オペランドを受信して​​格納するように設計された8ビットレジスタ。 これらのレジスタには、プログラムでアクセスすることはできません。

ROM定数 2進数と10進数のデータ表現用の修正コード、ビット演算用のマスクコード、および定数コードの開発を保証します。

並列8ビット加算器は、加算、減算の算術演算、および加算、乗算、非等価、単位元の論理演算を実行するように設計された、順次転送を備えた組み合わせタイプの回路です。

レジスタB-乗算および除算演算中に使用される8ビットレジスタ。 その他の手順については、追加のスクラッチパッドレジスタと見なすことができます。

バッテリー-算術論理演算またはシフト演算を実行するときに得られる結果を受信して​​格納するように設計された8ビットレジスタ

シリアルインターフェースおよび割り込みブロック(SIP)順次情報フローの入出力とプログラム割り込みシステムの編成を整理するように設計されています。 ブロックには次のものが含まれます。

バッファPIP;

制御ロジック;

制御レジスタ;

トランスミッターバッファ;

レシーバーバッファ;

シリアルポートトランシーバー;

割り込み優先レジスタ;

割り込みイネーブルレジスタ;

割り込みフラグ処理ロジックとベクトル生成スキーム。

プログラムカウンター内部プログラムメモリの現在の16ビットアドレスと外部プログラムメモリの8/16ビットアドレスを形成するように設計されています。 プログラムカウンタは、16ビットPCバッファ、PCレジスタ、およびインクリメント回路(コンテンツを1ずつインクリメント)で構成されています。

データメモリ(RAM)プログラムの実行中に使用される情報を一時的に保存することを目的としています。

ポートP0、P1、P2、P3は準双方向の入出力ポートであり、OEVMと外部デバイス間の情報交換を確実にするように設計されており、32の入出力ラインを形成します。

プログラムステータスレジスタ(PSW)プログラムの実行中のALUの状態に関する情報を格納するように設計されています。

プログラムメモリ(EPROM)プログラムを格納するように設計されており、読み取り専用メモリ(ROM)です。 さまざまなマイクロ回路は、マスクされた、UV消去可能な、またはフラッシュROMを使用します。

データポインタレジスタ(DPTR)外部データメモリの16ビットアドレスを格納するように設計されています。

スタックポインタ(SP)は、任意のメモリセルを一時的に格納できる特別なデータメモリ領域(スタック)を編成するために設計された8ビットレジスタです。

1.38051マイクロコントローラーのピン割り当て(図1.2)

・uss-共通ワイヤ(「アース」)の電位。

Ucc-主電源電圧+ 5V;

・X1、X2-水晶振動子の接続に関する結論。

・RST-マイクロコントローラの一般的なリセットの入力。

PSEN-外部プログラムのメモリ許可。外部ROMにアクセスする場合にのみ発行されます。

・ALE-外部メモリアドレスストローブ。

・EA-内部プログラムメモリを無効にします。 この入力のレベル0により、マイクロコントローラは外部ROMからのみプログラムを実行します。 内部を無視します(後者が存在する場合)。

米。 1.2。 ピン割り当て8051。

P1-8ビットの準双方向入力/出力ポート。ポートの各ビットは、他のビットのステータスに関係なく、情報の入力と出力の両方にプログラムできます。

・P2-P1と同様に8ビットの準双方向ポート。このポートのピンは、外部プログラムまたはデータメモリにアクセスするときにアドレス情報を発行するために使用されます(後者の16ビットアドレス指定が使用される場合)。 さらに、ポートピンは、アドレスの上位ビットをマイクロコントローラに入力するためのプログラミング時に使用されます。

R3-P1と同様の8ビット準双方向ポート。このポートのピンは、タイマー、シリアルI / Oポート、割り込みコントローラー、および外部プログラムの操作で使用されるいくつかの代替機能を実行できます。およびデータメモリ。

・p0-情報の入出力の多重化された8ビット双方向ポート。さまざまな時点でこのポートを介して、アドレスとデータの下位バイトが出力されます。

メモリ構成

MCS-51シリーズ全体には、ハーバードアーキテクチャ、つまり個別のプログラムとデータメモリのアドレス空間があります。 メモリ構造を図1に示します。 1.3。

チップ上に配置される内部(常駐)プログラムメモリ(ROM、EPROM、またはOTP ROM)の量は、マイクロ回路のタイプに応じて、0(ROMレス)、4K(ベースチップ)、8K、16K、または32Kになります。 必要に応じて、外部ROMをインストールしてプログラムメモリを拡張できます。 内部または外部ROMへのアクセスは、EA(外部アクセス)ピンの信号の値によって決まります。

EA = V cc(供給電圧)-内部ROMへのアクセス。

EA = V ss(接地電位)-外部ROMへのアクセス。

ROMレスチップの場合、EAピンは恒久的にVssに接続する必要があります。

米。 1.3。 MCS-51ファミリーのメモリー構成

外部ROM読み取りストローブ-(プログラムストア有効)は、外部プログラムメモリにアクセスするときに生成され、チップ上にあるROMへのアクセス中は非アクティブです。 下位プログラムメモリアドレス領域は、割り込みシステムによって使用されます。 8051ベースチップアーキテクチャは、5つの割り込みソースをサポートします。

2つの外部割り込み。

タイマーからの2つの割り込み。

シリアルポートからの割り込み。

イチジクに 1.4は、プログラムメモリの下部領域のマップを示しています。

米。 1.4。 プログラムメモリの下部領域のマップ

プログラムメモリ(ROM)

8051ファミリのマイクロコントローラの場合、プログラムメモリとデータメモリは独立した独立したデバイスであり、さまざまなコマンドと制御信号によってアドレス指定されます。

8051マイクロコントローラチップに搭載されている組み込みプログラムメモリの容量は4KBです(ファミリでは最大32)。 外部プログラムメモリにアクセスする場合、すべての8051マイクロコントローラは常に16ビットアドレスを使用します。これにより、64KBのROMにアクセスできます。 マイクロコントローラは、オペコードとオペランドを読み取るとき(PCプログラムカウンタを使用)、およびコマンドを実行してプログラムメモリからアキュムレータにバイトをコピーするときに、プログラムメモリにアクセスします。 データコピーコマンドを実行する場合、データを読み取るプログラムメモリセルのアドレス指定は、PCカウンタと特別な2バイトのデータポインタレジスタDPTRの両方を使用して実行できます。

データメモリ(RAM)

オンチップデータメモリの容量は128バイトです。 外部データメモリは最大64KBです。 最初の32バイトは、それぞれバンク0〜バンク3と指定された汎用レジスタの4つのバンクに編成されています。各バンクは、8つのレジスタR0〜R7で構成されています。 プログラムはいつでも利用可能であり、レジスタアドレス指定では、レジスタの1つのバンクのみが使用可能であり、その数はPSWプログラムステータスワードの3番目と4番目のビットに含まれています。

8051マイクロコントローラーのビット領域アドレス

表1.1

バイトアドレス(16進数) ビットごとのビットアドレス
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20時間

残りのアドレス空間は、開発者が独自の裁量で構成できます。スタック、システム、およびユーザーデータ領域に対応できます。 データメモリセルには、2つの方法でアクセスできます。 最初の方法は、メモリセルの直接アドレス指定です。 この場合、セルアドレスは対応する命令のオペランドです。 2番目の方法は、ポインタレジスタR0またはR1を使用した間接アドレス指定です。対応するコマンドを実行する前に、それらの1つにアクセスする必要のあるセルのアドレスが含まれている必要があります。

外部データメモリにアクセスするには、レジスタR0とR1を使用するか、16ビットポインタレジスタDPTRを使用して間接アドレス指定のみを使用します。

データメモリの一部はビット領域であり、特別なビットコマンドを使用してメモリセルの各桁をアドレス指定する機能があります。 直接アドレス指定可能なビットのアドレスは、(ByteAddress)。(Bit)の形式で書き込むこともできます。 これら2つのアドレッシング方式の対応は、表から判断できます。 1.1。

ロシア連邦総務省および職業教育省ノボシビルスク州立工科大学V.N. Veprik、V.A。 アファナシエフ、A.I。 Druzhinin、A.A。 Zemskov、A.R。 イサエフ、O.V。 あらゆる形態の教育の自動化およびコンピュータ工学部の上級生向けのコース「マイクロプロセッサシステム」および「マイクロプロセッサシステムの設計」に関するMCS-51ファミリのMalyavkoマイクロコントローラ教科書Novosibirsk1997 V.N. Veprik、V.A。 アファナシエフ、A.I。 Druzhinin、A.A。 Zemskov、A.R。 イサエフ、O.V。 マリャフコ。 MCS-51ファミリのマイクロコントローラ:チュートリアル。 -ノボシビルスク。 注目を集めた教科書には、インテルが製造したシングルチップマイクロコントローラー(組み込みマイクロコントローラー)MCS-51ファミリーのアーキテクチャ、機能、およびコマンドシステムの一般的な説明が含まれています。 マニュアルの第2部では、実験室での作業のサイクルを実行する際の学習対象として学生に提供される教育用マイクロプロセッサコントローラーUMPC-51について説明します。 マニュアルの資料は、コースや卒業証書の設計に使用でき、電子機器の開発と操作に携わる回路エンジニアにも役立ちます。 本作の基礎となった資料を提供してくださったインテルのオフィシャルディストリビューターであるCJSC「ニューテクノロジーズ」に深く感謝いたします。 表15、図25、点灯リスト。 12タイトル レビュアー:E.D。 バラン、G.G。 マツシキン。 作品は、ノボシビルスク州のコンピュータ工学科で準備されました©Technical University2はじめに。 8ビットシングルチップマイクロコントローラMCS-51のファミリは、80年代初頭に世界市場に登場しました。 結晶の最初の変更(約7)は、高品質のn-MOS(HMOS)テクノロジを使用して行われ、プログラムとデータの論理的な分離が主要な原則の1つであるハーバードアーキテクチャの機能的に完成したシングルチップマイクロコンピュータでした。メモリアドレス空間。 半導体技術の開発に伴い、MCS-51マイクロ回路の後続バージョンは、より高度な低電力CMOS(CHMOS)技術を使用して製造され始めました(アクティブモードでは、結晶の消費量は10 50 mAに増加しました)。 さまざまなデジタル制御アルゴリズムの実装に焦点を当てたコマンドシステムMCS-51は、以前のMCS-48ファミリのコマンドシステムとの外部の類似性を維持しながら、質的に拡張され、ビット指向の操作とビットフィールドという根本的な革新があります。データメモリでアドレス指定可能。これにより、チップ上のビットプロセッサの実装について話すことが可能になりました。 乗算、除算、減算コマンドの実行を実装しました。 スタックの作業が改善されました。 制御転送コマンドのグループが拡張されました。 コマンドシステムはより対称的に見え始めました。つまり、バッテリーを介したデータ転送への依存度が低くなりました。 組み込みの周辺機器の機能も、次の導入により拡張されました。2つの16ビットタイマーカウンター。 ハードウェアシリアルデュプレックスポート。 2レベルの割り込みシステム。 4つの8ビットI / Oポート。 プロセッサのタイムサイクルの構造の根本的な変更により、外部プログラムとデータメモリの処理が高速化され、外部および内部の割り込みへの応答も向上しました。 外部プログラムとデータメモリのアドレス空間の合計サイズが128KBに増加しました。 プログラムカウンター(プログラムカウンター)とデータポインター(データポインター)の16ビットレジスターにより、アドレスの全範囲に直接アクセスできるようになり、開発者は大規模なデータ配列を高速処理するためのアルゴリズムを実装できるようになりました。 マイクロコントローラのすべてのソフトウェアアクセス可能なノードは、特殊データメモリ領域(特殊機能レジスタ)に縮小され、常駐RAMの通常のセルとほぼ同じ方法でそれらにアクセスできるようになりました。 クリスタルのその後の変更では、以前のバージョンとの完全なソフトウェア互換性を維持しながら、追加機能を増やすという道に沿って改善が行われました。 MCS-51ファミリのマイクロコントローラの最新の変更の特徴は次のとおりです。完全に静的な設計。 水晶の3ボルトおよび5ボルトバージョン。 幅広い内蔵周辺機器。 最大クロック周波数-24MHz; 水晶の個々のグループの場合-33MHz。 現在、MCS-51には約60バージョンのクリスタルが含まれており、さらに詳細な独自のドキュメントが利用可能であり、利用可能です(残念ながら、まだロシア語に翻訳されていません)。 MCS-51マイクロコントローラー用のソフトウェアを準備するために、ASM-51、C言語が主に使用されます。これらの言語には、かなり実績のあるコンパイラー、標準サブルーチンのライブラリー、およびさまざまな国内外の企業によって作成されたソフトウェアエミュレーターがあります。 。 3ファミリの十分な「古さ」(15年以上)と、より高性能でアーキテクチャが改善されたシングルチップマイクロコントローラの近年の世界市場への登場にもかかわらず、MCS-51、MCS-251、MCS-96、 MCS-51コントローラは、長い間広く使用されます。比較的単純な組み込み制御システムで使用されます。 4 1. MCS-51ファミリのインテルコンポーネント指定システムと機能構成マイクロチップにラベルを付けるために、インテルはいくつかのフィールドで構成される表記システムを使用します。、拡張温度範囲(-40 / +125 C)用の自動車バージョンM(軍事) 、軍事基準に準拠したバージョン(-55 / +125 C)QまたはC(商用)、「商用」温度範囲(0 / +70 C)、(160 8)-1時間ごとの動的熱トレーニング。 LまたはE(拡張)、「拡張」温度範囲(-40 / + 85 C)、(160 8)時間の動的熱トレーニング。 T(拡張)、「拡張」温度範囲(-40 / + 85 C)、熱トレーニングなし。 I(工業用)、工業規格に準拠した実行。 2番目のフィールドには、マイクロサーキットのパッケージタイプ(パッケージタイプ)を示す1文字または2文字のプレフィックスが含まれています。 現在、数十種類のマイクロサーキットパッケージがあります。そのため、例として、いくつかの名称のみを示します。セラミックピングリッドアレイ(PGA)。 Cセラミックデュアルインラインパッケージ、(CDIP); Kセラミッククワッドフラットパックパッケージ、(QFP); KDプラスチッククワッドフラットパックパッケージ、ファインピッチ、ダイダウン、(PQFP); KUプラスチッククワッドフラットパックパッケージ、ファインピッチ、ダイアップ、(PQFP); Nプラスチックリードチップキャリア、(PLCC); Pプラスチックデュアルインラインパッケージ、(PDIP); SMシングルインラインリードレスメモリモジュール(SIMM); Uプラスチックデュアルインラインパッケージ、シュリンクディップ、(PDIPS); Zジグザグインラインパッケージ(ZIP)。 3番目のフィールドには、チップ上にある特定のデバイスのタイプを示す最大15文字の数字とアルファベットを含めることができます。 4番目のフィールドには、マイクロ回路のさまざまな機能とバージョンを反映して、最大6文字の数字とアルファベットを含めることができます。 ケースのタイプとその設計に関する追加情報は、ブックパッケージング注文番号240800に記載されています。MCS-51ファミリの説明されているマイクロコントローラに関して、3番目のフィールドの最初の文字は伝統的に(Intelの場合)次のようになります。 「8」。 3番目のフィールドの2番目の文字は、通常、組み込みROMのタイプを示します。0プログラムマスクROM。 非ROMクリスタル(クリスタルの新しいバージョン用); 1つのマスクROMプログラム(標準ROMコード、ファームウェア); 3マスクROM(クリスタルの新しいバージョン用)、(カスタマイズ可能なROMコード); 7 UFPROMまたはワンタイムプログラマブルROM(EPROMまたはOTP ROM)。 8 EEPROM(フラッシュ-チップ上のメモリ)次に、製造の技術的特徴を示す文字が続く場合があります。文字なしのHMOS技術、5V電源。 CHMOSテクノロジー、5V電源。 l CHMOSテクノロジー、3V電源。 5 MCS-51ファミリのマイクロコントローラの3番目のフィールドの次の文字は、数字(たとえば、31、32、51、54、58、152)であり、チップの機能機能を反映する1〜4文字です(たとえば、 ROMサイズ、チップグループの詳細、不正アクセスからのプログラムメモリのシステム保護の存在、より高度なプログラミングアルゴリズム「QuickPul​​se」などを使用する可能性)。 Intelの元の技術文書では、MCS-51ファミリのすべてのマイクロコントローラがグループ(「製品ライン」)にグループ化されており、各マイクロコントローラは、機能と電気的パラメータの点で最も近いバージョンの水晶を組み合わせています。 あるグループのマイクロサーキットの名前はわずかに異なるため、個々のグループを指定するために、特定のマイクロサーキットのマーキングから異なる文字を「X」に置き換えることによって形成される一般化された記号が使用されます。 したがって、以下のマイクロコントローラのグループを区別することができます。 1.グループ8X5X(8051製品ラインおよび8052製品ライン):8031AN、8051AN、8751H、8051AHP、8751H-8、8751VN、8032AN、8052AN、8752VN。 2.グループ8ХС51(80С51製品ライン):80С31ВН、80С51ВН、87С51。 3.グループ8ХС5Х(8ХС52/ 54/58製品ライン):80С32、80С52、87С52、80С54、87С54、80С58、87С58。 4.グループ8XC51FX(8XC51FA / FB / FC製品ライン):80C51FA、83C51FA、87C51FA、83C51FB、87C51FB、83C51FC、87C51FC。 5.グループ8XL5X(8XL52 / 54/58製品ライン):80L52、87L52、80L54、87L54、80L58、87L58。 6.グループ8XL51FX(8XL51FA / FB / FC製品ライン):80L51FA、83L51FA、87L51FA、83L51FB、87L51FB、83L51FC、87L51FC。 7.グループ8XC51RX(8XC51RA / RB / RC製品ライン):80C51RA、83C51RA、87C51RA、83C51RB、87C51RB、83C51RC、87C51RC。 8.グループ8XC51GB(8XC51GX製品ライン):80C51GB、83C51GB、87C51GB。 9.グループ8XC152JX(8XC152製品ライン):80C152JA、83C152JA、80C152JB、80C152JC、83C152JC、80C152JD。 10.グループ8XC51SL(8XC51SL製品ライン):80C51SL-BG、81C51SL-BG、83C51SL-BG、80C51-AH、81C51SL-AH、83C51SL-AH、87C51SL-AH、80C51SL-AL、81C51SL-AL、83C51SL-AL、 87C51SL-AL。 マイクロコントローラの最初のグループには、n-MOSテクノロジを使用して作成され、新しい開発での使用は推奨されていない、ファミリの若いモデルが含まれます。他のすべてのグループは、最新のCMOSテクノロジを使用して作成されます。 2番目、3番目、4番目のグループのマイクロサーキットは、今日、MCS-51ファミリの典型的な代表です。 5番目と6番目のグループには、3ボルトバージョンの水晶(低電圧)が含まれます。 7番目のグループのCrystalには、ボリュームが512バイトの拡張RAM(拡張RAM)が搭載されています。 第8、第9、第10グループのマイクロコントローラは、アプリケーション(アプリケーション固有)に特化したマイクロコントローラです。 今日のアプリケーションの多くは、高度なアドレス指定、レジスタアーキテクチャ、大容量の内部RAMとスタックスペースを使用し、高水準言語プログラミングを効率的にサポートする高性能制御マイクロコントローラを必要としています。 これらのマイクロコントローラには、Intelが1995年に発売したMCS-5およびMCS-251ファミリの新しいアーキテクチャのマイクロコントローラが含まれます。 MCS-51 / MCS-251マイクロコントローラの機能構成と主な機能は、付録に記載されています。 62.マイクロコントローラMCS-51ファミリの基本モデルの主な特性。 マイクロコントローラのMCS-51ファミリの基本モデルと、その後のすべての変更の基礎は、I-8051マイクロコントローラです。 その主な機能は次のとおりです。制御機能用に最適化された8ビットCPU。 内蔵クロックジェネレータ; プログラムメモリアドレス空間-64K; データメモリアドレス空間-64K; 内部プログラムメモリ-4K; 内部データメモリ-128バイト; ブール代数演算(ビット演算)を実行するための追加機能。 32の双方向で個別にアドレス指定可能なI / Oライン。 2 x16ビット多機能タイマー/カウンター。 全二重非同期トランシーバー。 2つの優先度レベルと6つのイベントソースを備えたベクトル割り込みシステム。 I-8051のブロック図を図1に示し、マイクロ回路のピン割り当てを図2に示します。 外部割り込み割り込み128バイトT / C0カウンター4KROM制御RAMT / C1入力CPUBUS 4 I / OシリアルOSC制御ポートポートP0P1 P2 P3 T D RDアドレス/データ図1。 I-8051のブロック図MCS-51シリーズ全体には、ハーバードアーキテクチャがあります。つまり、プログラムとデータメモリのアドレス空間が分離されています。 メモリの構成を図3に示します。 チップ上に配置される内部(常駐)プログラムメモリ(ROM、EPROM、またはOTP ROM)の量は、マイクロ回路のタイプに応じて、0(ROMレス)、4K(ベースチップ)、8K、16K、または32Kになります。 必要に応じて、外部ROMをインストールしてプログラムメモリを拡張できます。 内部または外部ROMへのアクセスは、EA(外部アクセス)ピンの信号値によって決まります。EA= Vcc(供給電圧)-内部ROMへのアクセス。 EA = Vss(接地電位)-外部ROMへのアクセス。 ROMレスチップの場合、EAピンは永続的にVssに接続する必要があります。 外部ROM読み取りストローブ-PSEN(プログラムストアイネーブル)は、外部プログラムメモリにアクセスすると生成され、オンチップROMへのアクセス中は非アクティブになります。 7低プログラムメモリ領域は割り込みシステムによって使用され、8051チップアーキテクチャは5つの割り込みソースをサポートします。2つの外部割り込み。 タイマーからの2つの割り込み。 シリアルポートからの割り込み。 P1.0 1 40 Vcc P1.1 2 39P0。 0(AD0)P1.2 3 38 P0.1(AD1)P1.3 4 37 P0.2(AD2)P1.4 5 36 P0.3(AD3)P1.5 6 35 P0.4(AD4)P1。 6 7 34 P0.5(AD5)P1.7 8 33 P0.6(AD6)リセット9 32 P0.7(AD7)(RD)P3.0 10 31 EA / Vpp(TD)P3.1 11 30 ALE / PROG(INT0)P3.2 12 29 PSEN(INT1)P3.3 13 28 P2.7(A15)(T0)P3.4 14 27 P2.6(A14)(T1)P3.5 15 26 P2.5( A13)(WR)P3.6 16 25 P2.4(A12)(RD)P3.7 17 24 P2.3(A11)XTAL2 18 23 P2.2(A10)XTAL1 19 22 P2.1(A9)Vss 20 21 P2.0(A8)図2。 ピン配置I-8051プログラムメモリ(読み出し)データメモリ(読み出し/書き込み)FFFFH外部ROMFFFFH外部@DPTRRDメモリPSENWRデータ@PCMOVC EA = 0内部メモリ@DPTRデータ@PC外部内部FFH上位128SFR MOVX ROM ROM 80H EA = 0 0000H EA = 1下12800H 0000HPSEN図3。 MCS-51ファミリのメモリ構成8図4は、プログラムメモリの下部領域のマップを示しています。 ROMプログラムメモリ0033H002BHシリアルポート0023HベクトルTimer1001BH割り込みEINT10013H Timer0 000BH EINT0 0003H開始アドレス0000H(リセット)図4。 プログラムメモリ割り込みベクタアドレスは8バイト間隔で配置されます。-0003H外部割り込み0(外部割り込み0)-出力IN T 0; -タイマー0からの000BH割り込み(タイマーオーバーフローフラグによる-T F 0); -0013H外部割り込み1(外部割り込み1)-出力IN T 1; -タイマー1からの001BH割り込み(タイマーオーバーフローフラグによる-T F 1); -0023Hシリアルポート割り込み(シリアル割り込み=受信割り込みまたは送信割り込み); 等 データメモリはプログラムメモリとは別です。 この領域では、64Kの外部RAMをアドレス指定できます。 外部データメモリにアクセスするとき、マイクロコントローラCPUは対応する読み取り(RD)または書き込み(W R)信号を生成し、内部データメモリとの相互作用はコマンドレベルで実行されますが、RDおよびWR信号は生成されません。 外部プログラムメモリと外部データメモリは、RD信号とPSEN信号を論理AND方式で組み合わせて、外部メモリ(プログラム/データ)ストローブを生成することで組み合わせることができます。 内部データメモリの下位128バイト(下位128)は、すべてのMCS-51チップに存在し、図5に示されています。 最初の32バイトは、8つのレジスタ(R7 ... R0)の4つのバンク(レジスタバンク)です。 いずれかのバンクのレジスタR0およびR1は、間接アドレスレジスタとして使用できます。 レジスタバンクに続く16バイトは、ビットアドレス指定可能なスペースのブロックを形成します。 MCS-51命令セットには、さまざまなビット演算が含まれており、このブロックの128ビットは直接アドレス指定可能で、アドレス範囲は00H〜7FHです。 メモリの下位128バイトの半分にあるすべてのバイトは、直接または間接的にアドレス指定できます。 RAMメモリの上位128バイトの半分(上位128)はI-8051チップには存在しませんが、256バイトのRAMバージョンのチップで使用できます。 この場合、「Upper128」エリアは間接アドレス指定でのみ使用できます。 SFR(特殊機能レジスタ)領域は、直接アドレス指定でのみ使用できます。 SFR空間での特殊機能レジスタの配置を図6に示します。 これらには、ポートレジスタ、タイマー、周辺機器制御などが含まれます。 9 7FHプルタイムアドレス指定可能領域30H(直接、間接)2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 74H 73H 71H 71H 77H 71H 71H 71H 71H 0FH 0FH 0H 0DH 0CH 0FH 0AH 09H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07HSPリセット後00HRB0(R7 + R0)図5。 下部128バイトの内部RAM。 ビットアドレス指定8バイトF8HFFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H 98H SCON SBUF 9FH 90H DPH PCO 87H N 0/8 1/9 2 / A 3 / B 4 / C 5 / D 6 / E 7 / F図6。 SFRスペースでの特殊機能レジスターの配置。 SFR空間の16個のアドレスの場合、バイトアドレスとビットアドレスの両方が可能です。 ビットアドレス指定可能なレジスタの場合、16進アドレスは「0H」または「8H」で終わります。 この領域のビットアドレスの値は80HからFFHです。 MCS-51ファミリの一連の水晶は、I-8051チップのように、同じアドレスに基本的なSFRセットがあります。 ただし、SFR領域でのファミリのさらなる開発を表すクリスタルでは、新しいレジスタが追加されて10が拡張されます。