
68HC12 ( 6812またはHC12とも略される)は、モトローラ・セミコンダクター(後にフリースケール、NXP )のマイクロコントローラファミリです。1990年代半ばに初めて登場したこのアーキテクチャは、フリースケールの68HC11を拡張したものです。HC11用に書かれたプログラムは通常、HC12と互換性があり、HC12にはいくつかの追加命令があります。最初の68HC12派生製品は、最大バス速度が8MHz 、フラッシュメモリサイズが最大128KBでした。
68HC11と同様に、68HC12には2つの8ビットアキュムレータAとB(AとBが結合されて16ビット演算が可能になった場合、単一の16ビットアキュムレータDと呼ばれる)、2つの16ビットプロセッサレジスタXとY、16ビットプログラムカウンタ、16ビットスタックポインタ、および8ビット条件コードレジスタがあります。68HC11とは異なり、プロセッサは16ビットの内部データパスを備えています。
68HC12は、68HC11の命令のごく一部を追加し、 6809プロセッサにより近い新しい形式の命令に置き換えています。さらに重要なことに、命令エンコーディングをはるかに高密度に変更し、6809に似たインデックス機能を多数追加しており、中にはさらに柔軟性の高いものもあります。結果として、コードサイズは通常30%小さくなっています。[ 1 ]
2000年からは、バス速度が最大25MHz 、フラッシュメモリ容量が最大512KBのMC9S12派生製品が導入され、製品ファミリーが拡張されました 。
MC9S12NE64は、2004年9月にフリースケール社によって発表され、「業界初のシングルチップ高速イーサネットフラッシュマイクロコントローラ」であると謳われました。25MHzの HCS12 CPU、 64KBのFLASH EEPROM、8KB のRAM、および10/ 100Mbpsイーサネットコントローラを搭載しています。
2004年に発表されたMC9S12XDP512は、40MHzのバス速度 と、CPUから一部のタスクをオフロードできるXGATEと呼ばれる周辺コプロセッサを備えています。S12X派生型のCPUには、パフォーマンス向上のための新しい命令もいくつか搭載されています。
フリースケールは2006年5月にMC9S12XEP100を発表し、S12Xファミリーを 50MHzのバス速度に拡張し、メモリ保護ユニット(セグメンテーションに基づく)とエミュレートEEPROMを提供するハードウェアスキームを追加しました。
HCS12製品はシングルプロセッサを搭載していますが、HCS12Xは追加のXGATE周辺プロセッサを搭載しています。
S12Xファミリーは、64KBを超えるデータをアドレス指定するための2つの主要な方法を提供します。
XGATEコプロセッサは、メインバスのクロック周波数の2倍で動作する16ビットRISCプロセッサです。割り込み処理のみを行うことでS12Xコアの処理負荷を軽減し、バックグラウンドループは実行しません。初期のXGATEでは、優先度の高い割り込みが現在処理中の割り込みをプリエンプトすることはできませんでしたが、9S12XEP100(およびその他の製品)に搭載されている「XGATEV3」ではこれが可能です。S12XはXGATEコア上でソフトウェア割り込みをトリガーでき、その逆も可能です。S12XコアとXGATEコアが周辺機器へのアクセスを同期できるように、セマフォシステムが実装されています。
通常、XGATEコードはデバイス起動時にRAMにコピーされ、速度向上のためRAMから実行されます。XGATEはページング機能のない64KBのアドレス空間を部分的に使用します。レジスタはアドレスを共有しますが、フラッシュメモリとRAMはコア間で異なるアドレスに配置されます。(詳細はデータシートを参照してください。)