aki_iic’s blog

己の欲せざる処人に施す事無かれ、狂人の真似するは即ち狂人なり

intel 8051(MCS51)

 EDNの記事より。というかライタさんのエッセイに近い内容ではあるがこのライタさんは実績のある方とお見受けするので内容も安心して読める。8051は一部では未だ現役でIPも色々作られており(FPGAでもOpenCore辺りから入手可能)NXP(旧Philipsの方)、Microchip(旧Atmelの方),台湾、Chinaのメーカでは未だに生産されている超有名銘柄であります:

edn.itmedia.co.jp

 上記記事はMCS48(所謂8048)からMCS51の誕生の物語が書かれており当方にとっては初見なのでなかなか読み応えがありました。1980年代に社会人に成った時に職場で使われていたマイコンの一つがMCS51でありました(当時はCHMOSの12Mhzクロックで結構熱くなるチップでありました)。何故使われていたかと言えば・・・当時セカンドソースだったから、というか80年代は日本の半導体メーカ(それ以外も)の大半は米国半導体メーカのセカンドソースで我が世の春を謳歌していた良き時代でもありました。

20250325 05:32追記:そうそう小松さんのサイトからintel8051の解説とレジスタモデルを引用しておこう。どこぞのマイクロソフトの社長さんの如き(以下略:)

www.st.rim.or.jp

intel8051 register model

 レジスタ少ない?と思われるかもしれないがMCS48と同様のR0-R7の8ビットレジスタは使えるしDTPR(DaTaPointeR)はintel的にはポインタ(index registerとは言い難い)だしSPは8bit限定だが組込用途では然程困らなかった(当時)。右のレジスタ?はbit演算プロセサ(当時intelはそう詐称していた)のアドレッシングを示した図で当時はbitレベルの処理が貧相だった(論理演算が基本でそれ以外は基本無し、なのでバイトマシンが該当ビットを抽出・演算・書き戻しが基本オペレーションだったが)のでそれに対応したものだが・・・使った事のある方は多くは無いのでは。

 この記事の通りMCS51(MCSとはMicro Computer Systemの略でintelが当時用いたアーキテクチャの名称、MCS48(8048系),MCS51,MCS96(8096系)等のマイクロコントローラ系に多く用いられた印象だがMCS4、MCS8とintelマイクロコンピュータ(当時はプロセサとコンピュータの区別は明確では無かった気がする)の伝統的呼称でもあった様です(エビデンス無し)。

 マイクロコントローラの為か一部のマニア(主にジジババと物好き)で地味にブームとなっているレトロマイコンに採用される場面は少ないかもしれないがSDCC(Cコンパイラ)、Basic52(Basicインタプリタ)等意外に実用的なプログラムが今でも入手可能(Basic52のソールはクロスアセンブラのaslに同包されている)で開発環境が乏しく、オリジナルのMCS51の開発環境は現在ではほぼ入手困難で、一部のチップ以外はICEによるデバッグは難しいかもしれないがそれはレトロマイコンでは当たり前で(笑って良いか迷う処ですが)念力デバッグなる苦行も楽しみの内と悟る変態さんが住まう空間なのでありました(一部偏見と誇張があります:)。

 アーキテクチャについてはDTPRのデクリメントが無いとかいうお約束のツッコミは置いといて今ではCコンパイラが使えるし、当時のMCS51を知る方であればintel的(特にMCS48/51)な命令は苦行では無いと思うので気になる事も無いでしょう(50年前のマイコンですし)。

 これも既定事項ですがCypress(現infinion)のFX2では48MhzのMCS51コアが内蔵されていてもうディスコンかもしれないけど流通在庫は意外と入手可能な様です(24Mhz迄動作する簡易ロジアナに使われていたりする)。Cypressと言えばPSoC3(懐かし)も8051コアでしたね(PSoC1がM8、PSoC5がM3だった様な)。そういえばシリラボもC8051Fxxxで高速化した8051コアを使ったマイコン・SoCを展開しておりました。

 21世紀の現在では積極的に採用する理由は全くありませんが、温故知新の意味で一度は触ってみるのも宜しいかもしれません>レトロマイコン系、或いは暇人の方、まともな人なら変態度数は異なるがMicrochipのPICマイコンを使うでしょうし(或いはM0とか)。

 現役の方は無視頂いて宜しい内容かと(昔話が好きな方を除いて)。