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

マイクロコントローラーMCS-51。 ブロック図、ALU、データメモリ。 mcs51ファミリのマイクロコントローラmcs51を受信するためのポートを作成する方法

基本バージョンMCS-51簡単な情報。 最新の8ビットマイクロコントローラー(MC)には、このようなリアルタイム制御リソースがあり、以前は個別のマイクロコンピューターボードの形式で高価なマルチチップレイアウトが使用されていました。

●十分なメモリ容量、プログラムメモリとデータメモリへの物理的および論理的な分割(ハーバードアーキテクチャ)、および制御アルゴリズムの実行を対象としたコマンドシステムを備えている。

●最小限の構成でマイクロプロセッサ制御システムを実装するために必要なすべてのデバイス(プロセッサ、ROM、RAM、入出力ポート、割り込みシステム、ビット情報処理ツールなど)を含めます。 1970年代に、会社は インテル多数の共通機能(桁容量、コマンドシステム、基本機能ブロックのセットなど)によって統合された、8ビットMCS-48マイクロコントローラーのファミリーの商業生産を開発および習得しました。 このファミリの基本バージョンには、次のものが含まれます。

●8ビットプロセッサ。

●内部プログラムメモリ(1/2 / 4Kバイト)。

●内部データメモリ(64/128/256バイト)。

●最大27の内部I / Oラインと16の外部I / Oライン。

●1つの8ビットタイマーカウンター。

●2つの要求ソースを備えたシングルレベルの割り込みシステム。 1980年に、同じ会社が8ビットMCS-51マイクロコントローラーの新しいファミリーを開発しました。これは、MCS-48ファミリーのアーキテクチャーと互換性がありますが、より幅広い機能を備えています。

MCS-51ファミリのアーキテクチャは非常に成功しているため、今日でも8ビットMKの標準の1つです。 そのため、比較的単純な制御システムで広く使用されているこのファミリのMCを調査対象として選択しました。

MCS-51ファミリには、さまざまなプログラム準備ツール(コンパイラ、ハードウェア-ソフトウェアエミュレータなど)が開発されており、標準サブルーチンのライブラリが多数あります。 このファミリには、マイクロコントローラのマイクロ回路(チップバージョン)のさまざまな変更が含まれています。 このセクションの記事では、MCS-51ファミリのマイクロコントローラの基本バージョン(8051マイクロ回路は国内のアナログKP1816BE51に対応)について十分に詳細に説明しています。これは、構造的および機能的な観点から、また理解の観点から最も単純です。

後続の一連のマイクロ回路は、基本バージョンとの互換性を維持しながら、改善された製造技術、電気的パラメーター、追加のハードウェアおよび機能においてそれとは異なります。 以下の記事は、MCS-51ファミリーのマイクロ回路のその後の変更の構造的および機能的特徴に専念しています。
MCS-51の一般化されたブロック図。 MCの構成。一般化されたブロック図を図1に示します。 7.1.1、含まれるもの:

●8ビット中央処理装置CPU、構成 ALU、制御装置 uuおよびアドレスジェネレータ F;

●プログラムを保存するための4Kバイトの容量を持つマスクROM。

●データストレージ用の128バイトRAM。

●情報入出力用の4つのプログラム可能なポートР0–Р3。

●2線式回線を介した外部デバイスとの情報交換用のBPIシリアルインターフェースブロック。

●リアルタイムモードを維持するためのタイマー/カウンターBT / Cのブロック。

●実行可能プログラムの割り込みを整理するためのBP割り込みブロック。 これらの資金は 居住者チップ上に直接配置されたマイクロコントローラーの一部。 MCには多数のレジスタが含まれていますが、これらは個別の機能ブロックに割り当てられており、図には示されていません。

この図には、制御回路も示されていません。 ブロック間の情報の二国間交換は、内部8ビットを介して実行されます データバス SD-8。

内部16ビットによる アドレスバス SHA-16では、CPUで形成されたアドレスがROM(アドレスの12ビット)とRAM(下位8ビット)に表示されます。

外部メモリを使用する場合、アドレスの下位8ビットがポートP0に出力され、上位3ビットまたは8ビットがポートP2に出力されます。

インターフェイスの論理的な拡張には、ポートラインの機能の組み合わせが使用されます。 例として、図。 7.1.1点線は、ポートP3の線を示しています。 制御信号伝送機能。その目的については、以下で説明します。 内部クロックジェネレータを作成するために、水晶振動子と2つのコンデンサがマイクロサーキットMKの出力に接続されます(図7.1.1)。 内部クロックジェネレータの代わりに、外部発振器を同期に使用できます。 マイクロサーキットMKの従来のグラフィック指定を図1に示します。 7.1.2、結論の指定と目的-表。 7.1.1。 MKの機能ブロックとその動作原理を検討してください。 算術論理デバイス。 算術論理ユニットは、8ビットオペランドの算術演算(乗算と除算を含む)と論理演算、および論理シフト、ゼロ調整、設定などの演算を実行するように設計されています。ALUのブロック図を図1に示します。 7.1.3。

ALUには次のものが含まれます

●パラレル8ビット 加算器算術演算(加算と減算)および論理演算(加算、乗算、視差、単位元)を実行する、順次転送を備えたSM組み合わせタイプ。

バッテリーA、主算術レジスタの機能を提供します。

登録 B、乗算と除算の演算を実装するために使用されるか、または追加の超演算レジスタとして使用され、その関数はユーザーによって定義されます。

レジスタ(プログラムで利用できません) 一時保管РВХ1、РВХ2、演算期間中のオペランドの受信と保存を目的としています。

●ROM 定数 2進化10進データ表現用の補正コード、ビット演算用のマスクコード、および定数コードを格納するROM。

プログラムステータスワードレジスタ PSW、操作が実行された後のALUの状態を修正します。 テーブルの中。 7.1.2は、PSWレジスタの個々の桁へのビットの割り当てに関する情報を提供します。 制御装置。 CPUコントロールユニット(CU) 意図されました生成されたクロックと制御信号を使用して、すべてのMKノードの共同作業を調整します。 これには以下が含まれます(図7.1.4):

同期および制御ユニット USUは、マシンサイクルとその個々の状態(S)およびフェーズ(P)を設定するクロックパルスを生成し、MKの動作モードに応じて、必要な制御信号のセットを生成します。 命令を実行するために、1、2、または4つのマシンサイクルが割り当てられます。

各マシンサイクルには 6つの州 S1〜S6、各状態には次のものが含まれます 二相 P1、P2、その持続時間はクロックジェネレータT0SCの発振周期です。

マシンサイクルの期間は12T0SCです。 S1P1フェーズで始まり、S6P2フェーズで終わる、すべてのマシンサイクルは同じです。

クロックパルスに加えて、各マシンサイクルのクロックデバイスは、フェーズS1P2-S2P1およびS4P2-S5P1で、ALEアドレスの下位バイトの2つ(場合によっては1つ)のストローブ信号を正のパルスとして生成します。 図のタイミング図。 7.1.5は、マシンサイクルの構成を示しています。

●RKコマンドレジスタ、 コマンドデコーダー DCおよびPLA。各マシンサイクルで、実行中のコマンドのマイクロプログラムに従って一連のマイクロ操作を形成できます。

●ポートP0〜P3を介したMCと外部デバイス間の情報交換を保証する信号を送受信するためのLPVの入出力ロジック。

●PCONレジスタ。シリアルポートのデータレートを2倍にするためにPCON.7の位置に単一の有効なSMODビットがあります。 残りのビットは、将来の使用のために予約されています。
アドレスジェネレータ。 アドレスシェーパー(FA)、またはPCコマンドカウンター、 意図されました現在の16ビットプログラムメモリアドレスと8/16ビット外部データメモリアドレスを形成します。 これには以下が含まれます(図7.1.6):

●16ビット バッファ B、SDの8ビットデータバスとアドレスジェネレータの16ビット内部バス(IS)の間で通信します。

●現在のプログラムメモリアドレスの値を1つ増やすためのSIインクリメントスキーム。

●SIからのPTAコマンドの現在のアドレスを保存するためのレジスタ。

●データポインタレジスタDPTR , 2つの8ビットレジスタDPHとDPLで構成されます。 これは、外部データメモリの16ビットアドレスを格納するのに役立ち、2つの独立したソフトウェアアクセス可能なRONとして使用できます。

●エグゼクティブ16ビットプログラムメモリアドレスまたは8/16ビット外部データメモリアドレスを格納するためのRFAアドレスジェネレータレジスタ。 このレジスタは、MOVX @ Rm、AおよびMOVX @ DPRT、A命令を実行するときに、ポートP0を介して外部デバイスにデータを転送するためにも使用されます。

データメモリ。 データメモリ 意図されましたプログラム実行の過程で使用される情報を受信、保存、および発行するため。 データの内部(常駐)メモリ(図7.1.7)は、128バイトの容量のRAMで構成されています。 スタックポインタ SP、 アドレスレジスタ RAMRAと デコーダ Dsh。 SPスタックポインタは、最後にアクセスされたスタック位置のアドレスを受信して​​格納する8ビットレジスタです。 リセット後、スタックポインタはアドレス07Hに設定されます。これは、アドレス08Hのスタックの先頭に対応します。 アドレスレジスタRAとデコーダDshを組み合わせることで、1バイトまたは1ビットの情報を含む必要なメモリセルにアクセスできます。

MKは、接続することにより、データメモリの量を最大64KBまで増やす機能を提供します。 外部ストレージデバイス。例として、図。 7.1.8は、MOVXなどの命令を使用した2Kバイトの容量を持つ外部データメモリVPDのページングを示しています @ Rm(m = 0; 1)。 この場合、ポートP0は多重化されたアドレス/データバスとして動作し、ポートP2の3本のラインは外部RAMページのアドレス指定に使用され、残りの5本のラインはI / Oラインとして使用できます。
イチジクに 7.1.9は、MKが外部RAMで動作しているときの読み取りおよび書き込みサイクルのタイミング図を示しています。 図は次のことを示しています。

●PCN-PCコマンドカウンターの上位バイト。

●DPL、DPH-DPTRデータポインタレジスタの下位バイトと上位バイト。MOVX@ DPTR、AおよびMOVX A、@ DPTR命令で間接アドレス指定レジスタとして使用されます。

●P2SFR-P2ポートラッチ。

●Rm(m = 0、1)-MOVX @ Rm、AおよびMOVX A、@ Rm命令で間接アドレスレジスタとして使用されるレジスタ。

●Z-高抵抗状態。

●D-ポートP0からのデータがマイクロコントローラに入力される期間。 プログラムメモリ。 プログラムメモリは、プログラムを格納するように設計されており、独自の(データメモリとは別の)アドレス空間を持ち、読み取り専用です。 デコーダーDshとROMが含まれています(図7.1.10)。 プログラムメモリは16ビットPCカウンタを使用してアドレス指定されるため、最大容量は64Kバイトです。 内部プログラムメモリは、4Kバイトの容量のROMと12ビットのデコーダで構成されています。 外部メモリは図1の図に従って接続されています。 7.1.11。 MCUの¯EAピンに0Vが印加されると(図7.1.11に示すように)、内部プログラムメモリは無効になります。 すべてのメモリアクセスはアドレス0000hから始まります。 ¯EAピンが電源に接続されている場合、アドレス0000h〜FFFFhの内部プログラムメモリおよびアドレス0FFFh〜FFFFhの外部プログラムメモリへのアクセスが自動的に行われます。

MKの外部プログラムメモリを読み取るために、信号¯PSENが生成されます。 内部メモリを使用する場合、読み取り信号は使用されません。 外部プログラムメモリにアクセスする場合、常に16ビットアドレスが形成されます。 アドレスの下位バイトは、マシンサイクルの前半でポートP0を介して送信され、レジスタのALEストローブのカットオフによって固定されます。サイクルの後半では、ポートP0を使用してデータバイトを入力します。外部メモリからMCUへ。

アドレスの上位バイトは、メモリがアクセスされている間中、P2ポートを介して送信されます。

外部RAMを備えたMKの動作中の読み取りおよび書き込みサイクルのタイミング図を図1に示します。 7.1.12。
図は次のことを示しています。

●PCLOUT-PCコマンドカウンタの下位バイト出力。

●PCNOUT-PCコマンドカウンターの上位バイトの発行。

●DPHは、DPTRデータポインタレジスタの上位バイトであり、MOVX @ DPTR、AおよびMOVX A、@ DPTR命令で間接アドレス指定レジスタとして使用されます。

●P2SFR-P2ポートラッチ。

●INSIN-プログラムメモリからの命令(コマンド)バイトの入力。

●ADDROUT-Rmレジスタ(m = 0、1)またはDPLレジスタ(下位レジスタDPTR)からの外部データメモリアドレスの下位バイトの発行。 I / Oポート。 ポートの割り当て。ポートP0、P1、P2、P3 意図されました MKと外部デバイス間で情報を交換するため、および次の機能を実行するため。

●アドレスА7…A0の下位バイトはポートР0を介して出力されます。 外部プログラムメモリおよび外部データメモリ(時分割あり)を操作する場合、1バイトのデータがMKから出力され、MKに入力されます。

●アドレスA15…A8の上位バイトは、外部プログラムメモリおよび外部データメモリを使用する場合(MOVX A、@ DPTRおよびMOVX @ DPTR、Aコマンドを使用する場合のみ)、ポートP2を介して出力されます。

●P3ポートラインは、このラインのラッチに1が入力されている場合、代替機能を実行するために使用できます。それ以外の場合、ライン出力に0が固定されます。P3ポート出力の代替機能を表に示します。 7.1.3。

ポートの概略機能

イチジクに 7.1.13は、各MKポートの1つのチャネルの図を示しています。

●受信データビットを固定するためのラッチ。

●出力増幅 カスケード(運転者);

●ノード との接続出力ステージ(P2を除く);

●ポートの出力側からデータビットを送信するための回路で、バッファB2とB3(ポートP4用)で構成されています。 ラッチはDフリップフロップであり、内部信号「Writetolatch」によってクロックされます。 Dフリップフロップの直接出力からのデータのビットは、MKの内部データバス(SD)のラインへの「ラッチの読み取り」信号によってバッファB1を介してソフトウェアによって読み取ることができます。

出力段ポートP0はインバータであり、その特徴は、負荷トランジスタVT2が外部メモリにアクセスするとき(ポートを介してアドレスとデータを転送するとき)にのみ開くという事実に表れています。 他のすべてのモードでは、負荷トランジスタは閉じています。 したがって、P0(図7.1.13、a)を汎用出力ポートとして使用するには、外部負荷抵抗をその出力に接続する必要があります。 ポートラッチに1を書き込むと、インバータトランジスタVT1がオフになり、ポートP0.Xの外部ピンが高抵抗状態に移行します。 このモードでは、ポートピンP0.Xを入力として使用できます。 ポートP0を汎用I / Oポートとして使用する場合、そのP0.Xピンのそれぞれは入力または出力として独立して動作できます。 出力段ポートP1、P2、P3(図7.1.13、 b、c、d)トランジスタVT2として使用される内部負荷抵抗を備えたインバータの回路に従って作られています。

ポート出力が状態0から状態1に遷移する間のスイッチング時間を短縮するために、追加のトランジスタVT3が負荷トランジスタVT2と並列に導入されます。 ゲート回路の要素の助けを借りたトランジスタVT3は、マスター水晶発振器の2周期の発振に等しい時間(マシンサイクルのフェーズS1P1、S2P2の間)ロック解除されます。 出力段 MXマルチプレクサを使用するポートP0、P2(図7.1.13、A、c)は、ラッチまたは内部バス「アドレス/データ」および「アドレス」のいずれかに接続できます。 ポートP1の出力段(図7.1.13、6)は恒久的にラッチに接続されています。

ポートピンP3が出力であり、そのラッチに1が含まれている場合、その出力ステージは、対応する代替機能を提供するハードウェア内部信号「代替出力機能」によって制御されます。 信号¯WR、¯RD、またはRxDのいずれかが外部ピンに形成されます。 ポートピンが入力として使用される場合、ポートピンに到達する代替信号(TxD、¯INT0、¯INT1、T0、T1)が「代替入力機能」内部ラインに送信されます。

ポート書き込みモード。

ポートへの書き込みコマンドが発行されると、新しい値がフェーズS6P2でラッチに書き込まれ、次のマシンサイクルのフェーズS1P1でポート出力ピンに直接出力されます。

ポート読み取りモード

ポート読み取りコマンドは、ポートピンの外部ピンまたはラッチ出力から直接情報を読み取ります。 最初のケースでは、ポート出力からのデータビットは、MKの内部データバス(SD)のラインへの「出力の読み取り」信号によってバッファB2を介してプログラムで読み取られます。 「書き込みラッチ」、「読み取りラッチ」、「読み取りピン」の信号は、対応するコマンドが実行されるときにハードウェアによって生成されることに注意してください。

2番目のケースでは、いわゆる「読み取り-変更-書き込み」モードが実装されます。このモードでは、コマンドがラッチステータス信号を読み取り、必要に応じて変更してから、ラッチに書き戻します。 リードモディファイライトモードは、次のコマンドが実行されたときに実装されます。ANL、ORL、XRL、JBC。 CPL; I.N.C。; DEC; DJNC; MOV PX、Y; CLR PX.Y; SETB PX、Y。

ラッチ出力から情報を読み取ると、ポートピンの論理レベルを解釈する際のエラーがなくなります。 の記事の続きを読んでください。

現在、さまざまな企業がこのファミリの多くの変更と類似体を製造しており、Intelと他のメーカーの両方によって、クロック周波数とメモリサイズが10倍に増加し、増加し続けています。 組み込みのLSIモジュールのセットも補足されています。高速常駐ADCは、最大12個の最新モデルに組み込まれており、ビット数が増える可能性があります。 しかし、MSS51ファミリの中心には、IntelのBIS 8051、80C51、8751、87C51、8031、80C31があり、その最初のサンプルは1980年にリリースされました。

MCS51ファミリのマイクロコントローラは、高品質のn-MOSテクノロジ(シリーズ8ХХХ、アナログ-ロシアとベラルーシのシリーズ1816)およびk-MOSテクノロジ(シリーズ8ХСХХ、アナログ-シリーズ1830)を使用して作成されています。 8に続く2番目の文字は、0-チップ上にEEPROMがない、7-4KのEEPROMとUV消去を意味します。 3番目の文字:3-ROMは結晶化されます。5-ROMがない場合は、チップ上にマスクされたROMがあります。

したがって、80S51はチップ上にマスクROMを備えたk-MOS LSIであり、8031はチップ上にプログラムメモリ(ROM、EPROM)を備えていないn-MOS LSIであり、8751は常駐(配置された)を備えたn-MOSLSIです。オンチップ)紫外線消去付きRPROM。 引き続きLSI8751を検討し、必要に応じて、最初のシリアルLSIで公開されたパラメータを引用して、他の回路の違いを予約します。 必要に応じて、会社のディレクトリおよび技術文書で、すべての最新の変更に関する追加情報を見つけることができます。

A.一般的な特性とピン割り当て

MCS51ファミリは、MKの5つの変更(主な特性は同じ)に基づいています。主な違いは、プログラムメモリの実装と消費電力です(表3.1を参照)。 マイクロコントローラは8ビットです。 8ビットワードを処理するための命令があり、ハーバードアーキテクチャがあり、ファミリの基本サンプルのクロック周波数は12MHzです。

表3.1。

マイクロ回路

内部プログラムメモリ、バイト

プログラムメモリタイプ

内部データメモリ、バイト

クロック周波数、MHz

消費電流、mA

MK 8051および80C51には、4096バイトの容量を持つマスクプログラム可能なROMプログラムメモリが含まれており、大量生産で使用するように設計されています。 MK 8751には、UV消去機能を備えた4096バイトのEPROMが含まれており、システム開発の段階でプログラムをデバッグする場合や、少量のバッチで作成する場合、または必要なシステムを作成する場合に便利です。

定期的な調整。

MK8031および80C31には組み込みのプログラムメモリは含まれていません。 これらは、前述の変更と同様に、最大64 KBの外部プログラムメモリを使用でき、非常に大きな(チップ上の4 KBを超える)プログラムメモリROMを必要とするシステムで効果的に使用されます。

ファミリの各MKには、128バイトの容量の常駐データメモリが含まれており、外部RAMICを使用してRAMデータの合計量を最大64KBまで拡張できます。

    中央8ビットプロセッサ。

    4Kプログラムメモリ(8751および87C51のみ)。

    128バイトのデータメモリ。

    4つの8ビットプログラマブル入出力ポート。

    2つの16ビットマルチモードタイマー/カウンター。

    5つのベクトルと2つのソフトウェア制御の優先度レベルを持つ自動ベクトル割り込みのシステム。

    4つのモードで動作可能なユニバーサルデュプレックストランシーバーを含むシリアルインターフェース。

    クロックジェネレータ。

MKコマンドシステムには、1、2、または3バイトの形式の111の基本コマンドが含まれています。 マイクロコントローラには次のものがあります。

    32個の汎用レジスタRONは、それぞれR0 ... R7という名前の8個のレジスタからなる4つのバンクとして編成され、特定のバンクの選択は、PSWプログラムステータスレジスタの対応するビットを設定することによってプログラムによって決定されます。

    128個のソフトウェア制御フラグ(ビットプロセッサ、以下を参照)。

    MKの要素を制御する特殊機能のレジスタのセット。 マイクロコントローラには、次の動作モードがあります。

1)。 一般的なリセット。 2)。通常の操作。 3)。低電力モードとアイドルモード。 4)。 常駐EPROMのプログラミングモード(ある場合)。

ここでは、最初の2つの動作モードに焦点を当てます。すべてのモードでのMCの構成と動作の詳細については、付録P1を参照してください。

RONとビットプロセッサゾーンは、0〜80hのアドレスを持つ常駐RAMのアドレス空間に配置されています。

常駐RAMのアドレスの上位ゾーンには、特殊機能のレジスタ(SFR、特殊機能レジスタ)があります。 それらの目的を表に示します。 3.2。

表3.2。

指定

名前

バッテリー

レジスタB

プログラムステータスレジスタ

スタックポインタ

データポインタ。 2バイト:

下位バイト

上位バイト

割り込み優先レジスタ

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

タイマ/カウンタモードレジスタ

タイマ/カウンタ制御レジスタ

タイマー/カウンター0。上位バイト

タイマー/カウンター0。下位バイト

タイマー/カウンター1.上位バイト

タイマー/カウンター1.下位バイト

シリアルポート制御

シリアルバッファ

消費管理

* - レジスター、 許可する 少しずつ アドレッシング

表3.2にリストされているSFRの機能を簡単に見てみましょう。

バッテリー ACC -アキュムレータレジスタ。 動作するように設計されたチーム

アキュムレータを使用する場合は、ニーモニック「A」を使用します。たとえば、 MOV A、 R2 。 ニーモニック「ACC」は、たとえば、アキュムレータをビットごとにアドレス指定するときに使用されます。 したがって、A5M51アセンブラを使用する場合のアキュムレータの5番目のビットの記号名は次のようになります。ACC。 5.。

登録 V 。 乗算および除算演算中に使用されます。 その他の命令については、レジスタBを追加のスクラッチパッドレジスタと見なすことができます。

登録 プログラム PSW プログラムの状態に関する情報が含まれており、一部はユーザーによって実行された操作の結果によって一部は自動的に設定されます。 レジスタビットの指定と目的をそれぞれ表3.3と表3.4に示します。

表3.3。

指定

表3.4。

指定

ビット割り当て

ビートへのアクセス

キャリーフラグ。 多数の算術および論理命令の実行中の変更。

ハードウェアまたはソフトウェア

追加のキャリーフラグ。 結果の下位ニブル(D0〜D3)を生成するときに、ビット3でキャリーまたはボローを示すために、加算または減算命令の実行中にハードウェアによってセット/クリアされます。

ハードウェアまたはソフトウェア

フラグ0。ユーザーが定義したフラグ。

プログラムで

プログラムで

作業レジスタのバンクへのポインタ

プログラムで

バンク0アドレス(00H-07H)バンク1アドレス(08H-0FH)バンク2アドレス(10H-17H)バンク3アドレス(18H-1FH)

オーバーフローフラグ。 算術命令の実行中にハードウェアによって設定またはクリアされ、オーバーフロー状態を示します。

ハードウェアまたはソフトウェア

予備の。 使用できる読み取り/書き込みトリガーが含まれています

パリティビット。 「1」状態にあるバッテリビットの偶数または奇数を示すために、命令サイクルごとにハードウェアによってリセットまたは設定されます。

ハードウェアまたはソフトウェア

ポインター スタック SP - PUSHおよびCALL命令中にデータがスタックに書き込まれる前に、内容がインクリメントされる8ビットレジスタ。 初期リセット時に、スタックポインタは07Hに設定され、データRAMのスタック領域はアドレス08Hから始まります。 必要に応じて、スタックポインタを再定義することにより、スタック領域をマイクロコントローラの内部データRAMのどこにでも配置できます。

ポインター データ DPTR 上位バイト(DPH)と下位バイトで構成されます

(DPL)。 外部メモリにアクセスするときの16ビットアドレスが含まれます。 に使える

16ビットレジスタまたは2つの独立した8ビットレジスタとして格納されます。

Port0 - PortZ。 特殊機能P0、P1、P2、P3のレジスタの個別のビットは、ポートP0、P1、P2、P3の出力のビット-「ラッチ」です。

バッファ 一貫性のある ポート SBUF トランスミッタバッファとレシーババッファの2つの別々のレジスタを表します。 データがSBUFに書き込まれると、データはトランスミッタバッファに入り、SBUFにバイトを書き込むと、シリアルポートを介した送信が自動的に開始されます。 SBUFからデータを読み取る場合、データはデスティネーションバッファからフェッチされます。

レジスター タイマー。 レジスタペア(TH0、TL0)および(TH1、TL1)フォーム16-

それぞれタイマー/カウンター0とタイマー/カウンター1のビットカウンターレジスタ。

レジスター 管理。 特殊機能レジスタIP、IE、TMOD、TSON、SCON、およびPCONには、割り込みシステムの制御ビットとステータスビットが含まれています。

メジャー/カウンターとシリアルポート。 それらについては、以下で詳しく説明します。

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

動作中のMCは以下を提供します:

    追加コマンドの最小実行時間は1µsです。

    最小実行時間4µsでのハードウェアの乗算と除算。

MKは、水晶振動子、LCチェーン、または外部発振器を使用して内部発振器の周波数を設定する機能を提供します。

拡張コマンドシステムは、バイトとビットのアドレス指定、2進数と2進化10進数の算術演算、オーバーフロー表示と偶数/奇数の決定、および論理プロセッサを実装する機能を提供します。

MCS51ファミリのアーキテクチャの最も重要で特徴的な機能は、ALUが8ビットデータ型で操作を実行するとともに、シングルビットデータを操作できることです。 ソフトウェアでアクセス可能な個々のビットは、設定、リセット、またはそれらの補数で置き換えることができ、転送、チェック、および

図3.2。 外部調査結果

マイクロコントローラー

論理計算で使用されます。 一方、単純なデータ型のサポート(存在する場合)

単語の長さを増やすという現在の傾向)は、一見後退しているように見えるかもしれませんが、この品質により、MCS51ファミリのマイクロコントローラはコントローラを使用するアプリケーションに特に適しています。 後者の操作アルゴリズムは、独自の方法で、標準のマイクロプロセッサを使用して実装するのが難しい入力および出力のブール変数の存在を前提としています。 これらのプロパティはすべて、MCS51ファミリのブールプロセッサと総称されます。 この強力なALUにより、MCS51ファミリのマイクロコントローラは、リアルタイム制御アプリケーションとデータ集約型アルゴリズムの両方に等しく適した命令セットになります。

マイクロコントローラの回路図を図1に示します。 3.2。 基本バージョンでは、40ピンDIPパッケージにパッケージ化されています。 結論の目的を検討してください。

パワーリードから始めましょう «0 V」 「5 V」 、それを通して主力を受け取ります。 消費電流を表に示します。 3.1。

結論 「RST」 -マイクロコントローラをリセットします。 このピンがアクティブハイに駆動されると、 モード 全般的 リセット MKは次のアクションを実行します。

PC命令カウンタと、ポートラッチP0〜P3、スタックポインタSP、およびレジスタSBUFを除くすべての特殊機能レジスタをゼロに設定します。

    スタックポインタは07Hに等しい値を取ります。

    すべての割り込みソース、タイマーカウンター、およびシリアルを無効にします

    RAMのBANK0を選択し、データを受信するためにポートP0〜RZを準備し、決定します

外部クロックの入力としてALEピンとPMEピンを共有します。

      PCON、IP、およびIEの特殊機能レジスタでは、予約済みビットはランダムな値を取り、他のすべてのビットはゼロにリセットされます。

      SBUFレジスタはランダムな値に設定されます。

      ポートP0〜P3のラッチを「1」に設定します。

リセット後のマイクロコントローラレジスタの状態を表3.5に示します。

表3.5。

情報

不定

k-MOSの場合は0XXXX0000B、n-MOSの場合は0XXXXXXXB

RST出力には代替機能もあります。 メインのRAMが取り外されたときにマイクロコントローラのRAMの内容を変更せずに保持するために、バックアップ電源が供給されます。

結論 bq1、 BQ2 MCのクロック周波数を決定する水晶振動子を接続するように設計されています。

結論 EA` (E xternal A ドレス 外部の 住所・アドレス) -アクティブローレベルがこのピンに適用されると、外部プログラムメモリから制御コードを読み取るモードをアクティブにするように設計されています。 出力には別の目的(機能)があります。 プログラミングモードでは、EPROMのプログラミング電圧が供給されます。

結論 PME (P プログラム M エモリー E ノーブル 許可 メモリー プログラム)-プログラムメモリからの読み取りサイクルを制御し、各マシンサイクルでMKを自動的にアクティブ化するように設計されています。

結論 エール (A ドレス L 英語 E ノーブル 許可 ジュニア 住所) ポートP0のアドレスの下位部分の出力をストローブします。 この出力はEPROMのプログラミング時にも使用され、プログラミングプロセス中にストローブパルスがEPROMに適用されます。

MKには、P0、P1、P2、およびP3の4つのポートグループが含まれています。 これらはマイクロコントローラの残りの40ピンです。 これらのポートは、ビットごとの入力(情報の出力)に使用できますが、さらに、それぞれに独自の特殊性があります。 ポートの一般化された機能図を図1に示します。 3.3。 このポートには、ピンに接続されたFET出力スイッチ、機能スイッチ、Dラッチラッチ、および制御ロジックが含まれています。 MKの内部バスのラッチに1または0を書き込むことができます。 この情報は、ファンクションスイッチを介して出力キーとMCの出力に送られます。 1つの状態では、トランジスタNとN1の両方が閉じているが、N2は開いている。 ゼロの状態では、Nが開きます-

Xia、およびN2が閉じます。 ポートが専用の代替機能を実行すると、出力ラッチ状態が解放されます。 マイクロコントローラは、外部信号によって設定されたポートのラッチ状態とその出力の状態を別々に読み取ることができます。 これを行うために、MKアセンブラには、対応する行をアクティブにする特別なコマンドがあります。 対応するポートのラッチへのピンのステータスを読み取るには、

事前に録音する

内部から

管理ラッチ

機能スイッチ

Vcc

週末

ユニット。 このラインが接続されている「AND」セルの出力で「ラッチ読み取り」ラインがアクティブになると、

彼女のタイヤMKD Q

ラッチCQへの書き込み

ラッチの読み取り

ポートピン

起動時にマイクロコントローラの内部バスに到達するラッチの状態

「読み取り出力」-ポートの外部出力の状態。

ポート P0 –ユニバーサル双方向ポート

入出力。 このポートの後ろ

アドレスの外部バスを編成する機能と

米。 3.3。 マイクロコントローラポートの機能図

プログラムメモリとデータメモリを拡張するデータ

マイクロコントローラー。 外部プログラムメモリにアクセスしたり、外部データメモリアクセスコマンドを実行したりすると、アドレスの下部(A0…A7)がポートピンに設定され、ALEピンでハイにストローブされます。 次に、データメモリに書き込むときに、MKの内部バスから書き込まれる情報がP0ポートのピンに供給されます。 逆に、読み取り操作では、ポートピンからの情報は内部バスに送られます。 ポートP0の特徴は、出力に電力を供給する「プルアップ」トランジスタN2がないことです。 ラッチが1ポートに書き込まれると、データバスが正しく機能するために必要な高インピーダンス状態になります。 出力を介して外部デバイスに電力を供給する必要がある場合は、外部抵抗を電源回路からポート出力に提供する必要があります。

ポート P1 –代替機能のないユニバーサル双方向I / Oポート。

ポート R2 –代替機能として、外部メモリにアクセスするときにアドレスの上部(А8…А15)を発行するユニバーサル双方向I / Oポート。

ポート P3 –ユニバーサル双方向入出力ポート。各ビットはさまざまな代替機能のパフォーマンスを提供します。 この場合、代替機能は、ユニットがポート出力ラッチに書き込まれる場合にのみ実装されます。それ以外の場合、代替機能の実行はブロックされます。 ビットごとに個別にリストします。

P3.0 RxD (R頭e バツ内部 D食べて、外部データを読んでください)–内蔵シリアルトランシーバーの入力。

P3.1 TxD (T ype e バツ内部 D食べて、外部データを送信します)–内蔵のシリアルトランシーバー出力。

P3.2 INT0` (INT errupt、interrupt)-外部割り込み入力0。

P3.3 INT1` –外部割り込み入力1。

P3.4 С/ T0 –ゼロ内蔵タイマー/カウンターの入力。

P3.5 C / T1 –最初の内蔵タイマー/カウンターの入力。

P3.6 WR` (W rite、write)-データメモリの書き込みサイクルの出力を制御します。

P3.7 RD` (R ead、read)-データメモリからの読み取りサイクルの出力制御。

ポートピンP1、P2、およびP3は、約0.2mAの電流を出力し、ゼロで3 mAの電流を受け取ることができます。ポートP0ピンは、より強力で、ゼロで約0.8mAの電流を供給し、ゼロで5mAの電流を受け入れることができます。 マイクロコントローラのピンの目的に関する簡単な情報を表3.6に示します。

表3.6。

指定

出力先

8ビット双方向P1ポート。 内部ROM(RPZU)チェック時のアドレス入力A0〜A7

出口に入る

一般的なリセット信号。 外部ソースからのRAMバックアップ電源出力(1816の場合)

追加機能を備えた8ビット双方向P3ポート

出口に入る

レシーバーシリアルデータ-RxD

送信機のシリアルデータ-TxD

外部割り込み入力0-INT0`

外部割り込み入力1-INT1`

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

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

外部データメモリへの書き込み時のストローブ信号出力:-WR`

外部データメモリから読み取るときに出力されるストローブ信号-RD`

水晶振動子を接続するための結論。

出口入口

一般的な結論

8ビット双方向P2ポート。 外部メモリを使用した動作モードでアドレスA8〜A15を出力します。 内部ROMテストモードでは、出力P2.0〜P2.6がアドレスA8〜A14の入力として使用されます。 結論P2.7-ROMを読み取る許可。

出口に入る

プログラムメモリの解像度

アドレスラッチイネーブル出力。 EEPROM信号をプログラミングする場合:PROG

出口に入る

内部メモリを使用したブロック作業。 EEPROMをプログラミングするとき、UPR信号が与えられます。

出口に入る

8ビット双方向ポートP0。 外部メモリを操作するためのアドレス/データバス。 内部ROM(RPZU)のテストモードでのデータ出力D7-D0。

出口に入る

電圧源からの電力出力+ 5V

マイクロコントローラ(図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減算コマンドは、借用がある場合にのみ実行されます(つまり、Caryフラグも結果から減算されます)。 したがって、借用せずに減算命令を実行するには、最初に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フラグを介してのみ送信されます。

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。

OMEVMコマンドシステムは、優れたデータ処理機能を提供し、論理演算、算術演算、およびリアルタイム制御の実装を提供します。 ビット単位、テトラッド(4ビット)、バイト(8ビット)、および16ビットのデータ処理を実装しました。

LSIファミリMCS-51-8ビットOMEVM:ROM、RAM、専用レジスタ、ALU、および外部バスにはバイト構成があります。 2バイトのデータは、ポインタレジスタ(DPTR)とプログラムカウンタ(PC)によってのみ使用されます。 データポインタレジスタは、2バイトレジスタDPTRとして、または2つのシングルバイト専用レジスタDPHおよびDPLとして使用できることに注意してください。 プログラムカウンタは常に2バイトのレジスタとして使用されます。

OMEVMコマンドセットには、このシステムの33の機能を指定するための42のコマンドニーモニックがあります。

ほとんどのアセンブリ言語命令の構文は、関数ニーモニックとそれに続くアドレッシング方式とデータ型を指定するオペランドで構成されています。 さまざまなデータ型またはアドレッシングモードは、ニーモニック表記の変更ではなく、セットされたオペランドによって決定されます。

コマンドシステムは、条件付きで5つのグループに分けることができます。

ソースオペランドのアドレス指定には、次のタイプがあります。

  • ベースレジスタとインデックスレジスタの合計による間接レジスタアドレス指定

コマンドシステムで使用される指定と記号の表

指定、記号 目的
A バッテリー
Rn 現在選択されているレジスタバンクのレジスタ
r コマンドで指定されたロード済みレジスタの番号
直接 直接アドレス指定可能な8ビットの内部データロケーションアドレス。内部データRAMロケーション(0-127)またはSFR(128-255)にすることができます。
@rr 間接的にアドレス指定可能な8ビットの内部データRAMの場所
data8 CPCに含まれる8ビットの即時データ
dataH 即時16ビットデータのMSB(15-8)
dataL 即時16ビットデータの下位ビット(7-0)
addr11 11ビットの宛先アドレス
addrL 宛先アドレスの最下位ビット
disp8 8ビット符号付きオフセットバイト
少し アドレスに内部データRAMまたはSFRにあるCPCが含まれる直接アドレス指定可能なビット
a15、a14 ... a0 宛先アドレスビット
(バツ) X要素の内容
((バツ)) 要素Xに格納されているアドレスのコンテンツ
(X)[M] MエレメントXを放電します

+
-
*

また
XOR
/バツ
オペレーション:
追加
減算
乗算
分割
論理乗算(AND演算)
論理加算(OR演算)
2を法とする加算(XOR)
要素Xの反転

関数ニーモニックは、アドレッシング方式とデータ型の特定の組み合わせに一意に関連付けられています。 コマンドシステムでは、合計111のこのような組み合わせが可能です。 この表は、アルファベット順にソートされたコマンドのリストを示しています。

ニーモニック 関数 フラグ
ACALLチーム 絶対サブルーチン呼び出し
添加 AC、C、OV
キャリー付き加算 AC、C、OV
AJMPチーム 絶対遷移
論理積「AND」
可変ビットの論理「AND」 C
等しくない場合は比較してジャンプする C
チームCLRA バッテリーリセット
CLRチーム リセットビット C、ビット
CPLチームA バッテリーの反転
CPLチーム ビット反転 C、ビット
チームDAA 加算のためのアキュムレータの10進補正 AC、C
DECチーム<байт> デクリメント
チームDIVAB 分割 C、OV
チームDJNZ<байт>, <смещение> ゼロ以外の場合はデクリメントしてジャンプします
チームI.N.C.<байт> インクリメント
チームINCDPTR データポインタの増分
チームJ.B. , ビットが設定されている場合はジャンプ
チームJBC , ビットが設定されている場合は分岐し、このビットをリセットします
チームJ.C. キャリーが設定されている場合はジャンプ
JMP @ A + DPTRコマンド 間接的な移行
JNBチーム , ビットが設定されていない場合はジャンプします
チームJNC 転送が設定されていない場合はジャンプします
チームJNZ アキュムレータの内容がゼロ以外の場合はジャンプします
チームJZ アキュムレータの内容が0の場合にジャンプします
LCALLチーム ロングコール
チームLJMP 長い移行
可変バイトを転送
データビットを送信 C
コマンドMOVDPTR、#data16 16ビット定数でデータポインタをロードする
MOVC命令A、@ A +( ) プログラムメモリからバイトを移動します
(外部メモリから)外部メモリにデータを送信する