イントロダクション

四半世紀を越えて使われ続ける業界標準アーキテクチャ

古くて新しい ８０５１ マイクロコントローラのすすめ

分，機能もそれなりなんだろう」などと勝手な勘■ わずか３mm角のマイコン
C８０５１F３００

さ

との出会い

本書をお手に取られたみなさんの中には， H8

あら繰りをしたのですが，然に非ず．24.5 MHz 2 ％精度のクロック源，フラッシュ・タイプのプログ
ラム・メモリ，複数のタイマ，SMBus，UART

をご存じの方も多いと思います．H8，

やA-Dコンバータなどを内蔵し，リアル・タイム

PICはそれぞれ日立製作所（現ルネサス テクノロのソース・レベル・デバッグができる開発環境まジ），マイクロチップ・テクノロジー社から発売で用意されていて「これは使える！」と感じましされている，とても大きなマイコン・ファミリでた．そして，その CPU コアがす．PICは，数量ベースで今やマイコンの世界シ

です．

や

PIC

ェアNo.1となりました．
実のところ私も，処理内容や規模に応じてこれらを使い分けながら，今までにさまざまな組み込み機器を開発してきました．

8051

だったの

■ ８０５１の誕生前後
8051 の説明を始める前に，簡単にその歴史などを紹介しておきましょう．図1は主なマイクロ

そんなある日「トランジスタ技術」誌の広告で，Cygnal Integrated Products社（当時．現在はシコントローラやマイクロプロセッサのリリース年
です．

リコン・ラボラトリーズ社）によるC8051F300（写インテル 8051（写真 2），つまり MCS-51 アーキ

真1）という新しいデバイスの登場を知りました．

テクチャが登場したのは 1980 年でした．インテ2001 年の暮れか 2002 年初頭だったと記憶していルのマイクロコントローラとしては第2世代になます．マイクロコントローラでありながら，わずります．初代は1976年発表の8048（MCS-48）です．

か3 mm角という小さなパッケージは衝撃的です

MCS-51は，このMCS-48の成果を踏まえて，大幅らありました．そのときは「パッケージが小さいに改良されたアーキテクチャとして誕生しました．

C8051F300

C8051F310

写真1 わずか3 mm角のマイコン
C8051F300（シリコン・ラボラトリーズ社）
http://www.silabs.com/

写真2 8051ファミリの始祖i8051（写真はEP-ROM版のi8751）

古くて新しい ８０５１ マイクロコントローラのすすめ

9

H8/3048F（1994年）
マイクロコントローラ

8048

8051

C8051F000（1976年）（1980年）（2000年）

PIC1650

PIC16C54

PIC16C84（1976年）（1986年）（1991年）

Z80

8086（1976年） （1978年）
4004
マイクロプロセッサ

8080（1971年） （1974年）

1970

80286

80386

（1982年） （1986年）

MC6800MC68000（1974年）（1979年）

1980

時間［年］

i486

Pentium4（1989年）（2000年）

Pentium（1993年）

1990

2000

図1 おもなマイクロコントローラとマイクロプロセッサの発売年

8051 が登場した 1980 年は，世界初のマイクロるアーキテクチャがあってのことでしょう．そしプロセッサであるインテル4004からわずか9年後て，シリコン・ラボラトリーズ社の最初のマイクにあたります．歴史の中では早期のアーキテクチ

ロコントローラ C8051F000 は 2000 年，つまりャであることは間違いありません．ですがこの8051 から実に 20 年後に，その流れを汲む新たな4004 以降の約 10 年間という時代は，今に続く大ファミリとして登場しています．

きな流れの起源ともいえるデバイスが，各メーカ
から次々とリリースされた時期であることがわかります．現在のインテルx86系マイクロプロセッ
サの原点である8086も，8051より2年早い1978年にリリースされています．

■ 四半世紀を越えて使われ続ける
業界標準の８０５１
MCS-48 の改良を受けた MCS-51 は，強力なビット操作など制御用途での高い処理能力と，幅広さらに 8048 と同じ 1976 年に，やや遅れていシステム構成に適応できる柔軟性を特徴とし

PIC1650が登場しています．これが後に続くPICて，今を遡ること四半世紀前の 1980 年にリリーシリーズの初代です．開発したのは General

スされました．その後のラインアップの拡充（図Instrument 社のマイクロエレクトロニクス部門2）により，MCS-51アーキテクチャは一大ファミ

で，この部門が 1989 年に独立してできたのが現

リに成長し，「業界標準」といわれるまでに普及

在のマイクロチップ・テクノロジー社です．した

しました．海外のデバイスのアプリケーション・

がって，PICシリーズは8051よりも4年先輩といノートには「8051 による制御例」などと書かれうことになりますね．いずれもこの技術革新と世たサンプル・プログラムが少なくありません．8

代交代の速い業界の中を現代まで生き残ってきた

ビット・マイクロコントローラの代表的なデバイ

ツワモノといえます．でもそれは現代にも通用すスの一つとして，今なおその地位を確立しています．

10

イントロダクション

16ビット（MCS-251）
80C251Sx
80C251Tx
16ビット化ROMサイズ・アップ
フラッシュROM

89C52（フラッシュ8K）
89C51（フラッシュ4K）
87C58（EPROM32K）
87C54（EPROM16K）
RAMサイズ
80C58（ROM32K）
・アップ
80C54（ROM16K）

87C51RC（EPROM32K）
83C51RB（ROM16K）
80C51RA（ROMレス）

87C51FC（EPROM32K）
PCA追加 83C51FB（ROM16K）
87C51BH
80C51FA（ROMレス）
高速化 80C52BH
87C51BH
80C51BH
87C52
8752（EPROM8K）
ROMサイズ・アップ
80C31BH
8052（ROM8K） CMOS化 80C52
87C51
8751（EPROM4K）
CMOS化
80C51
8051（ROM4K）
80C318031（ROMレス）
クラシック・シリーズ（8ビット）

新シリーズ

図2 インテル社製8051ファミリのおもな系譜

ここでもうひとつ，8051 の長い歴史を支えて

また，「8051 コントローラ」としてではなく，いる大きな要因として挙げられるのが，MCS-51

特定用途向け専用コントローラとして発売されてアーキテクチャへの上位コンパチブルを謳った多いるものもあります．これらを表 2 に示します．

種多様な派生デバイスの存在です．H8やPICは，

たとえばサイプレス社が発売しているEZ-USBシそれぞれルネサステクノロジ社やマイクロチッ

リーズの CPU コアが 8051 であることをご存じの

プ・テクノロジー社単独の製品です．一方の方も多いでしょう．

8051 は，インテルだけでなく，10 社を越えるさ

さらに，HDL で記述された IP コアとしてのまざまな半導体メーカから供給されています．こ8051コアも各種発売されています．表3はその一れらを表1に示します．

例です．

これらはセカンド・ソースではありません．
「8051相当」の機能を内包し，さらにメーカごと■ ８０５１系デバイスを使うことのメリット

な

このような状況により，本来の性能とは別に，のです．前述のC8051F300もその一つで，シリコ

8051 には H8 や PIC とは異なる独特のメリットがン・ラボラトリーズ社独自のさまざまな工夫が織生まれています．これらの 8051 系派生デバイス

り込まれています．興味のある方は，8051 の開は，どれもオリジナルの 8051 と同じ命令セット

発ツールを手がけているKeil Softwareのページをサポートしています．つまりソース・レベル，（http://www.keil.com/dd/8051chips.asp）などを

オブジェクト・レベルでの互換性があります．ア

参照してみてください．表1に挙げたものはごく

センブラやコンパイラも共通して使えます．さら一部で，さらに多くのデバイスがあることがわかに，メモリ構成や割り込みシステム，タイマやシります．

リアル・ポートに至るまで，オリジナル 8051に独自の改良や機能拡張が加えられた

8051

古くて新しい ８０５１ マイクロコントローラのすすめ

11

表1 ① 8051およびMCS-51互換コアをもつ8ビット・マイクロコントローラ
型

名

メーカ

最大動作 最大命令
内蔵
内蔵
内蔵クロック 実行速度 ROM ＊ 1
RAM
XRAM ＊ 4［MHz］ ［MIPS］ ［バイト］［バイト］ ［バイト］

特徴的なディジタル I/O ＊ 2●インテル直系の 8051
80C31BH

インテル

12

1.0

なし

128

−

タイマ / カウンタ，UART

80C32-24

インテル

24

2.0

なし

256

−

タイマ / カウンタ，UART

80C51BH

インテル

12

1.0

4K

128

−

タイマ / カウンタ，UART

80C52-24

インテル

24

2.0

8K

256

−

タイマ / カウンタ，UART

87C51-24

インテル

12

1.0

U4 K

128

−

タイマ / カウンタ，UART

87C52-24

インテル

24

2.0

U8 K

256

−

タイマ / カウンタ，UART

87C54-24

インテル

24

2.0

U16 K

256

−

タイマ / カウンタ，UART

80C58-33

インテル

33

2.8

32 K

256

−

タイマ / カウンタ，UART

87C58-33

インテル

33

2.8

U32 K

256

−

タイマ / カウンタ，UART

80C51FA-33

インテル

33

2.8

なし

256

−

タイマ / カウンタ，UART，PCA

83C51FA-33

インテル

33

2.8

8K

256

−

タイマ / カウンタ，UART，PCA

87C51FA-33

インテル

33

2.8

U8 K

256

−

タイマ / カウンタ，UART，PCA

80C51FB-33

インテル

33

2.8

なし

256

−

タイマ / カウンタ，UART，PCA

83C51FB-33

インテル

33

2.8

16 K

256

−

タイマ / カウンタ，UART，PCA

87C51FB-33

インテル

33

2.8

U16 K

256

−

タイマ / カウンタ，UART，PCA

80C51FC-33

インテル

33

2.8

なし

256

−

タイマ / カウンタ，UART，PCA

83C51FC-33

インテル

33

2.8

32 K

256

−

タイマ / カウンタ，UART，PCA

87C51FC-33

インテル

33

2.8

U32 K

256

−

タイマ / カウンタ，UART，PCA

80C51RA

インテル

24

2.0

なし

256

256

タイマ / カウンタ，UART

83C51RB

インテル

24

2.0

8K

256

256

タイマ / カウンタ，UART

83C51RC

インテル

24

2.0

16 K

256

256

タイマ / カウンタ，UART●各社の MCS-51 互換 8 ビット・マイクロコントローラ
ADuC812アナログ・デバイ
セズ

16

1.3

F8 K

256

−

タイマ / カウンタ，UART，SPI，I2C

ADuC845

アナログ・デバイ
セズ

12.6

12.6

F62 K

256

2K

タイマ / カウンタ，UART，SPI，I2C

AT89C51AC2

アトメル

20

3.3

F32 K

256

1K

タイマ / カウンタ，UART，PCA

AT89C2051

アトメル

24

2.0

F2 K

128

−

タイマ / カウンタ，UART

AT89C5121

アトメル

16

2.7

F16 K

256

256

タイマ / カウンタ，UART，
SmartCard

AT89C5122

アトメル

48

4.0

F32 K

256

512

タ イ マ / カ ウ ン タ，UART，USB2.0，
SmartCard，SPI

AT89EB5114

アトメル

40

3.3

F4 K

256

−

タイマ / カウンタ，UART

AT89LP2052

アトメル

20

20.0

F2 K

256

−

タイマ / カウンタ，
UART，
SPI，
乗算器

AT89LV55

アトメル

12

1.0

F20 K

256

−

タイマ / カウンタ，UART

C8051F060

シリコン・ラボラ
トリーズ

25

25.0

F64K

256

4K

タイマ / カウンタ，UART × 2，
SMBus，SPI，PCA，CAN2.0B

C8051F121

シリコン・ラボラ
トリーズ

100

100.0

F128 K

256

8K

タイマ / カウンタ，UART × 2，
SMBus，SPI，PCA，乗算器

C8051F310

シリコン・ラボラ
トリーズ

25

25.0

F16 K

256

1K

タ イ マ / カ ウ ン タ，UART，SMBus，
SPI，PCA

C8051F320

シリコン・ラボラ
トリーズ

25

25.0

F16 K

256

2K

タ イ マ / カ ウ ン タ，UART，SMBus，
SPI，PCA，USB 2.0

DS89C420

マキシム（Dallas）

33

33.0

F16 K

256

1K

タイマ / カウンタ，UART × 2

DS89C450

マキシム（Dallas）

33

33.0

F64 K

256

1K

タイマ / カウンタ，UART × 2

DS87C530

マキシム（Dallas）

33

8.3

U16 K

256

1K

タイマ / カウンタ，UART × 2

注 s＊1：F を前置したものはフラッシュ・メモリ，
同様に E は EEPROM，
U は UV-EPROM．＊ 2：機能のうち特徴的なものを抜粋して示した．
＊ 3：PGA（プログラマブル・ゲイン・アンプ），Comp.（コンパレータ），Tsens.（温度センサ）．＊ 4：MOVX 命令でアクセス可能な RAM．

12

イントロダクション

特徴的なアナログ I/O ＊ 2 ＊ 3

電源電圧
［V］

パッケージ

なし

5

DIP40，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

なし

5

DIP40，QFP44，PLCC44

備考

12 ビット ADC，12 ビット DAC × 2，Tsens.

3，5

LFCSP56，MQFP52

640 バイト・データ・フラッシュ ROM

24 ビット ADC × 2，12 ビット DAC，Tsens.

3，5

LFCSP56，MQFP52

4 K バイト・データ・フラッシュ ROM

3.0 〜 5.5 PLCC44，VQFP44

2 K バイト・ブート・フラッシュ，2 K バイ
ト EEPROM，UART 経由のブートComp.

2.7 〜 6.0 DIP20，SOIC20

1 マシン・サイクル 12 システム・クロックなし

2.85 〜 5.4 PLCC52，SSOP24

16 K バイト・コード RAM，UART 経由のブー
トなし

3.6 〜 5.5 PLCC28，QFN64，VQFP64

10 ビット ADC

3.0 〜 3.6 SO20，SO24

256 バイト EEPROM．少ピン数．

Comp.

2.4 〜 5.5 DIP20，SOIC20，TSSOP20

1 マシン・サイクル 1 システム・クロックなし

2.7 〜 6.0 DIP40，PLCC44，TQFP44

1 マシン・サイクル 12 システム・クロック

10 ビット ADC

16 ビット ADC × 2，10 ビット ADC，12 ビッ
2.7 〜 3.6 TQFP100
ト DAC × 2，Comp.，Tsens.

24.5 MHz システム・クロック内蔵，クロスバー

12 ビ ッ ト ADC，8 ビ ッ ト ADC，12 ビ ッ ト
2.7 〜 3.6 TQFP64
DAC × 2，Comp.，Tsens.

24.5 MHz システム・クロック内蔵，クロスバー

10 ビット ADC，Comp.，Tsens.

2.7 〜 3.6 LQFP32

24.5 MHz システム・クロック内蔵，クロスバー

10 ビット ADC，Comp.，Tsens.

4.0 〜 5.25 LQFP32

12 MHz システム・クロック内蔵，クロスバーなし

5 ± 10％

DIP40，PLCC44，TQFP44

8051 とピン互換なし

5 ± 10％

DIP40，PLCC44，TQFP44

8051 とピン互換なし

5 ± 10％

CLCC52，PLCC52，TQFP52 リアルタイム・クロック（RTC）

古くて新しい ８０５１ マイクロコントローラのすすめ

13

表1 ② 8051およびMCS-51互換コアをもつ8ビット・マイクロコントローラ型

名

最大動作 最大命令
内蔵
内蔵
内蔵クロック 実行速度 ROM ＊ 1
RAM
XRAM ＊ 4［MHz］ ［MIPS］ ［バイト］［バイト］ ［バイト］

メーカ

特徴的なディジタル I/O ＊ 2

DS87C550

マキシム（Dallas）

33

8.3

U8 K

256

1K

タイマ / カウンタ，UART × 2，PWM

DS80C323

マキシム（Dallas）

18

4.5

なし

256

−

タイマ / カウンタ，UART × 2

MSC1200Y3

テキサス・インス
ツルメンツ

33

8.3

F8 K

256

−

タイマ / カウンタ，USART，SPI，I2C

P89LV51RD2

フィリップス

33

5.5

F64 K

256

768

タ イ マ / カ ウ ン タ，UART，PCA，SPI

P89LPC904

フィリップス

12

6.0

F1 K

128

−

タイマ / カウンタ，UART

SST89V564RD

Silicon Storage
Technology

33

2.8

F64 K ＋
F8 K

256

512

タ イ マ / カ ウ ン タ，UART，PCA，SPI

uPSD3234BV

ST マイクロ24

2.0

F256 K＋ F32 K

8K

タ イ マ / カ ウ ン タ，UART × 2，I2C，
PWM

uPSD3454E

ST マイクロ40

10.0F256 K＋ F32 K

32K

タイマ / カウンタ，UART × 2，PCA，
SPI，I2C，IrDA，USB2.0（FS）

XC866L-4FR

インフィニオン

80

13.3

F16 K

256

512

タイマ / カウンタ，UART，SPI

表2 MCS-51互換コアをもつ特定用途コントローラ
型

名

メーカ

説

明

● USB
AN2131

サイプレス（Anchor Chips）

EZ-USB．USB1.1 ターゲット・デバイス・コントローラ

CY7C64613

サイプレス

EZ-USB FX．USB2.0 ターゲット・デバイス・コントローラ．12 MIPS@48 MHz

CY7C68013

サイプレス

EZ-USB FX2．USB2.0 ターゲット・デバイス・コントローラ．12 MIPS@48 MHz

TAS1020B

テキサス・インスツルメンツ

USB1.1 ストリーミング・コントローラ．AC 97 コーデック・インターフェース

TUSB2136

テキサス・インスツルメンツ

USB1.1 ハブ内蔵キーボード・コントローラ

USB2005

スタンダード・マイクロシステムズ USB2.0 ATA/ATAPI コントローラ．ディジタル著作権管理付き

USB97C202

スタンダード・マイクロシステムズ USB2.0 ATA/ATAPI コントローラ

USB97C242

スタンダード・マイクロシステムズ

USB2.0 フラッシュ・ドライブ・コントローラ．スマートメディアおよび各種
NAND フラッシュ対応

CS6201

Myson Century（Century Semiconductor）

10/100BASE-T Ethernet MAC&PHY 内蔵．15 MIPS ＠ 60 MHz，電源電圧 3〜5V

DS80C400

マキシム（Dallas）

10/100BASE Ethernet-MAC 内蔵．18.75 MIPS ＠ 75 MHz，電源電圧 3 V

CC1010ChipCon Semiconductor

モノリシック UHF データ・トランシーバ．300 M 〜 1 GHz，76.8 kbps

CC2500ChipCon Semiconductor

モノリシック UHF データ・トランシーバ．2.4 GHz，500 kbps

nRF24E1

Nordic Semiconductor

モノリシック UHF データ・トランシーバ．2.4 GHz，1 Mbps

CML Microcircuits

モデム内蔵コントローラ．対応 ITU-T 規格 : V.22 bis ，V.22 ，V.23 ，V.21● Ethernet●無線モデム●有線モデムCMX850（MCS-51アーキテクチャ）の概念を踏襲していま構成しているといえるかもしれません．

す．各派生デバイスはその概念を踏襲しながら，一般に新しいデバイスを使うためには，多くの機能拡張や高速化などの改良を施すことで，それ新しいことを理解しなければなりません．その点ぞれの独自性を出しています．すなわちこれは，8051は，MCS-51アーキテクチャを理解しておく

8051 という大きなファミリを，複数のメーカでことで，比較的少ない負担で多くの派生デバイス

14

イントロダクション

特徴的なアナログ I/O ＊ 2 ＊ 3

電源電圧
［V］

パッケージ

備

考

10 ビット ADC

5 ± 10 ％ CLCC68，PLCC68，PQFP80

なし

2.7 〜 5.5 DIP40，PLCC44，TQFP44

24 ビット ADC，8 ビット DAC，PGA

2.7 〜 5.5 TQFP48

なし

2.7 〜 3.6 DIP40，PLCC44，TQFP44

8 ビット ADC，8 ビット DAC，Comp.

2.4 〜 3.6 SO8なし

2.7 〜 3.6

8 ビット ADC

3.0 〜 3.6 TQFP80

16 マクロセル PLD 内蔵，内蔵 SRAM はバックアップ可能，5 V 版は 3.3 MIPS ＠ 40 MHz

10 ビット ADC

3.3 ＋ 5

TQFP52，TQFP80

16 マクロセル PLD 内蔵，内蔵 SRAM はバックアップ可能10 ビット ADC

3.3 〜 5TSSOP38

ブート ROM：8 K バイト，
10 MHz クロック内蔵

ブート ROM：1 KB

少ピン・パッケージ，7.4 MHz クロック内蔵，リアルタイム・クロック（RTC）

DIP40，PLCC44，TQFP44，WQFN40

表3 MCS-51互換のIPコア
型

名

メーカ

説

明

C8051

Evatronix SA

オリジナル 8051 と命令セット互換，マシン・サイクル数互換

D80530Evatronix SA

Dallas 社（現マキシム社）80530 互換 IP

Dalton 8051

University of California

命令セット互換．マシン・サイクル数は非互換．VHDL 記述

DW8051

Synopsys，Inc.

DesignWare 8051 Macrocell．1 命令 4 マシン・サイクル

Inventra 8051W

Mentor Graphics Corp.

VHDL および Verilog．1 命令 2 マシン・サイクル

PB8051

Roman-Jones, Inc.

PicoBlaze 8051．ザイリンクス社 FPGA 用 8051CPU コアのマクロセル．実行サイク
ル数非互換

R8051

Evatronix SA

RISC 型命令セットの 8051IP コア．周辺機能は 80C31 互換

T51

Opencores.org

VHDL 記述．Wishbone 対応

TSK51

Altium Ltd.

Nexar Soft core．1 命令 1 マシン・サイクル

を選択肢にできる可能性をもっています．これはユーザにとって大きなメリットになります．同時にメーカにとっても，ユーザに受け入れられやす■ C８０５１は「PICとH８の中間に位置するマイコン」

いというメリットになります．先ほどの 8051 にではC8051がどんなマイコンなのかを一言で表よるサンプル・プログラムの例もそうですし，ますと「PIC と H8 の中間に位置するマイコン」とた ST マイクロエレクトロニクスからリリースさいえると思います．H8 は高性能で非常に使い勝れているμ PSD シリーズのプレゼンテーション

手のいいマイコンですが，パッケージ・サイズや

資 料（ 3 ）で は ， デ バ イ ス の 特 徴 の 一 つ と し て ，価格などの面で，小ぢんまりとまとめたいときに8051 based，everybody knows how to use

はやや重いです．簡単なアプリケーションでは，（誰もが使い方を知っている 8051 コアを採用）とその能力があり余ってしまうこともあります．一謳われています．これも「業界標準」としての方の PIC は，ピン数も少なく低価格ですが，8051を象徴している一例でしょう．

RAM容量や内蔵ペリフェラル，処理速度などの制限のために，採用が難しい場合がままあります．
古くて新しい ８０５１ マイクロコントローラのすすめ

15

C8051シリーズには，ちょうどその両者のすき間

ここで「マイクロプロセッサ」と「マイクロコを埋めてくれる規模と能力を持ったユニークなデントローラ」の違いについて考えてみましょう．

バイスが揃っています．表7-1（156ページ）は現

みなさんが使っているパソコンの CPU は「マ在のラインアップです．併せて第1章では，8051

イクロプロセッサ」です．その CPU はメモリ・らしい部分を紹介しています．参照してみてくだ

モジュールなどとともにマザー・ボードに載ってさい．

います．マザー・ボードには，アプリケーショ

要は「適材適所」です．これをきっかけに，新ン・プログラムなどがインストールされているハ

たな持ち駒として，技術の引き出しを増やしてみード・ディスクが接続されていて，さらにキーボてはいかがでしょうか．「H8 では大げさだけど，ードやモニタ，USB など，外部とのインターフ

PICではちょっとツライ」というときに，きっとェースが付属していますね．

役立ってくれることでしょう．

「マイクロコントローラ」は，このパソコン本
体の機能を一つのチップに集積したものと考える■「マイクロプロセッサ」と「マイクロコントローラ」の違いことができます．つまり，CPU のほかに RAM，ROM，外部インターフェース回路をすべて内蔵

図1で示したように，1976年にはザイログ社かしています．したがって，マイクロプロセッサは

らZ80が発表されています．もしかすると若い方

周囲の助けがないとコンピュータとして機能しなはご存じないかもしれませんが，8ビット・マイ

いのに対して，マイクロコントローラはデバイス

クロプロセッサとして長い間市場を席捲したデバ

単体でコンピュータとして成立している点が大きイスです．MS-DOSよりも前の時代，パソコンのく異なります．

CPUはほとんどがこれでした．
マイクロプロセッサの変遷について見ると，4■ マイクロコントローラは脇役

ビットの4004に始まり，8ビット，16，32，64ビ

テレビやエアコン，電子レンジ，炊飯器などのットと進化してきています．最近のパソコンはほ

家電品はもちろんのこと，玩具，携帯電話や，目

とんどが32ビット・マシンですね．先のZ80マシに付きにくいところではガス・メータ，自動車やンは悲しいかな今やアンティーク扱いです．これ

人工衛星など，電気を使う製品は数え切れません．

とは対照的に，マイクロコントローラの世界では，「マイコン炊飯ジャー」などと銘打った家電製品

今でも4ビットのデバイスが現役で使われていまでいう「マイコン」とは，まさに「マイクロコン

す．

トローラ」を意味しています．それら家電製品を
マイクロコントローラ（マイコン）
マイクロプロセッサ
I/O

ROM
CPU
RAM

パラレル，
シリアル，
タイマ/
カウンタ，
割り込み
など

図3 マイクロプロセッサとマイクロコントローラの違い

16

イントロダクション

制御するために，小さなコンピュータであるマイ

使われますが，一口に制御といっても，その内容

クロコントローラは，まさにうってつけのアイテ

は千差万別ですね．その制御内容の多様性に加えムです．

て，さまざまなレベルの「必要最小限」にも対応

しかし，ここでの主人公は，あくまでもその制御対象である製品であることに注意してくださするために，実に多種多様なマイクロコントローラが製品化されることになるわけです．

い．マイクロコントローラは，その製品の機能を設計者はその多種多様なデバイスの海から，最実現するための一手段に過ぎません．どんなに高適なものを選択し，使い分けなければなりません．

性能なマイクロコントローラが組み込まれていてコストは多くの要素が絡む複雑な問題なので一概も，そのこと自体が製品の「売り」になることはにはいえませんが，とりあえず「いつも使っていありえません．したがって，マイクロコントロー

るから」にとらわれないデバイス選定を心がけてラに求められるスペックは，その製品の機能を実みてください．関連情報を収集する機会にもなり現できる「必要最小限」で十分なのです．今でもますし，システム的な視点を養う効果もあると思

4ビットのマイクロコントローラが現役たり得る

います．

のは，4ビットで対応できる用途があるからです．

■ 古くて新しい８０５１の世界への導入に■ マイクロコントローラの種類が多い理由
ここでもう一度表 7-1 を参照してみてくださ役立つ解説書適材適所と必要最小限を考える上で，8051 系

い．内蔵ペリフェラルやメモリ・サイズが少しず

マイコンは独特の魅力をもつ，検討に値するデバ

つ違うデバイスが取りそろえられていることがわ

イスです．しかし，いざチャレンジとなると，現かります．PIC や H8 も同様のラインアップをも在入手可能な和文の情報源がとても少ないようにっています．ペリフェラルが同じでも，メモリ・思われます．過去に出版された 8051 関連書籍はサイズだけが違ったりします．

絶版になっているようですし，またインターネッ

なぜこんなに細かく作り分ける必要があるので

ト上には 8051 に関する情報が星の数ほどもあり

しょうか．これは上記の「必要最小限」に対応すますが，ほとんどは和文ではありません．これらるためなのです．例えばプログラム・サイズがの点も，日本において 8051 の敷居を高くしてい2 Kバイトしかないのに，デバイスが16 Kバイト

る一因のように思います．

の ROM を内蔵していたらもったいないですね．

本書は，そんな状況を少しでも和らげることをもしラインアップに4 Kバイトのデバイスがある目的とした 8051 の解説書です．古くて新しいのなら，そちらを検討するべきです．多くの場合，8051 の世界への導入にあたって，本書がわずか

後者のほうが安価でしょう．極端な例ですが，でも皆さんのお役に立つことができれば，それに16 Kバイト品と4 Kバイト品のデバイス単価の差勝る喜びはありません．また私の浅学ゆえの誤り

が仮に 1 円だったとしても，もしその製品を 100などもあろうかと思います．ご指摘いただければ万台出荷するならば，100万円のコスト・ダウン

幸いです．

につながります．
マイクロコントローラは何かを制御するために2005年 冬中島 千明

古くて新しい ８０５１ マイクロコントローラのすすめ

17

第1部
第

MCS-５１リファレンス編

1章

強力なビット処理，高速割り込み応答，十分な演算能力，小さなオブジェクト・サイズ

MCS-５
１アーキテクチャの概要

1-1

1

MCS-51アーキテクチャの概要

それではいよいよ，8051の説明を始めましょう．図1-1は，元祖であるインテル8051のブロック図です．
この図が示すとおり，8051はデバイス単体で動作するマイクロコントローラとして，下記に挙げる機能をすべて内蔵しています．
●

CPUコア

●

プログラム・メモリ（ROM）●

データ・メモリ（RAM）●

複数の動作モードをもつ2組の16ビット・タイマ●

8ビット×4ポートのパラレル・ポート●

全二重通信が可能なシリアル・ポート●

割り込みコントローラ●

システム・クロック生成用のクリスタル発振回路

これら8051デバイスがもつ主な機能は，一括して「8051コア」と呼ばれます．
外部割り込み入力

割り込み
コントロール

4Kバイト
ROM

タイマ1

128バイト
RAM

タイマ0

カウンタ
入力

CPU

オシレータ

バス・
コントロール

シリアル・
ポート

I /Oポート×4

TxD
P0

P2

P1

RxD

P3

アドレス/データ・バス（4） 8051のブロック図
図1-1

1-1

MCS-51アーキテクチャの概要

19

1-2

外観とピン・アサイン

オリジナルのパッケージは図1-2のような40ピンDIPです．表1-1は各ピンの簡単な説明です．派生品
表1-1 各ピンの説明（40ピンDIP）
ピン番号

名

称

説

明

1

P1.0

I/O ポート 1 のビット 0

2

P1.1

I/O ポート 1 のビット 1

3

P1.2

I/O ポート 1 のビット 2

4

P1.3

I/O ポート 1 のビット 3

5

P1.4

I/O ポート 1 のビット 4

6

P1.5

I/O ポート 1 のビット 5

7

P1.6

I/O ポート 1 のビット 6

8

P1.7

I/O ポート 1 のビット 7

9RST

リセット入力10

P3.0/RXD

I/O ポート 3 のビット 0 またはシリアル入力ポート

11

P3.1/TXD

I/O ポート 3 のビット 1 またはシリアル出力ポート

12P3.2/INT0

I/O ポート 3 のビット 2 または外部割り込み 0

13

P3.3/INT1

I/O ポート 3 のビット 3 または外部割り込み 1

14

P3.4/T0

I/O ポート 3 のビット 4 またはタイマ / カウンタ 0 外部入力

15

P3.5/T1

I/O ポート 3 のビット 5 またはタイマ / カウンタ 1 外部入力

16P3.6/WR

I/O ポート 3 のビット 6 または外部メモリ・ライト・ストローブ

17

P3.7/RDI/O ポート 3 のビット 7 または外部メモリ・リード・ストローブ

18

XTAL2

インバータ発振回路の出力

19

XTAL1

インバータ発振回路の入力

20

V SS

グラウンド

21

P2.0/A8

I/O ポート 2 のビット 0 またはアドレス・バスのビット 8

22

P2.1/A9I/O ポート 2 のビット 1 またはアドレス・バスのビット 923

P2.2/A10

I/O ポート 2 のビット 2 またはアドレス・バスのビット 10

24

P2.3/A11

I/O ポート 2 のビット 3 またはアドレス・バスのビット 11

25

P2.4/A12

I/O ポート 2 のビット 4 またはアドレス・バスのビット 1226

P2.5/A13

I/O ポート 2 のビット 5 またはアドレス・バスのビット 13

27

P2.6/A14

I/O ポート 2 のビット 6 またはアドレス・バスのビット 14

28

P2.7/A15

I/O ポート 2 のビット 7 またはアドレス・バスのビット 15

29

PSEN

プログラム・ストア・イネーブル．外部プログラム・メモリのリード・ストローブ．

30

PROG/ALE

アドレス・ラッチ・イネーブル．外部メモリ・アクセス中にアドレスの下位バイトをラッチするためのパルス出力．EPROM デバイスではプログラム・パルス入力．

31

V DD /EA

外部アクセス・イネーブル．内部プログラムを実行するときは V CC ，外部プログラムを実行するときは
V SS へそれぞれ接続すること．

32

P0.7/AD7

I/O ポート 0 のビット 7 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 733

P0.6/AD6

I/O ポート 0 のビット 6 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 634

P0.5/AD5

I/O ポート 0 のビット 5 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 535

P0.4/AD4

I/O ポート 0 のビット 4 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 436

P0.3/AD3

I/O ポート 0 のビット 3 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 3

37

P0.2/AD2

I/O ポート 0 のビット 2 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 2

38

P0.1/AD1

I/O ポート 0 のビット 1 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 1

39

P0.0/AD0

I/O ポート 0 のビット 0 または外部メモリ・アクセス中の下位バイト・アドレス / データ・ビット 0

40

V CC

電源入力

20

第1章

MCS-51アーキテクチャの概要

P1.0 1

40 V CC

P1.1 2

39 P0.0

P1.2 338 P0.1

P1.3 437 P0.2

P1.4 5

36 P0.3

P1.5 6

35 P0.4

P1.6 7

34 P0.5

P1.7 833 P0.6

RST 9
P3.0/RXD 10
P3.1/TXD 11

32 P0.7
8051
8351
8751

31 V DD/EA
30 PROG/ALE

P3.2/I NT0 12

29 PSEN

P3.3/I NT1 13

28 P2.7

P3.4/T0 14

27 P2.6

P3.5/T1 15

26 P2.5

P3.6/WR 16

25 P2.4

P3.7/RD 17

24 P2.3

XTAL2 18

23 P2.2

XTAL1 19

22 P2.1

V SS 20

21 P2.0

図1-2（5）
40ピンDIPのピン・アサインの中には，同じパッケージを採用してオリジナルと置き換え可能であることを特徴とするものと，独自パッケージを採用しているものの両方があります．

1-3

8051の特徴■ 特徴一覧
以下に8051つまりMCS-51アーキテクチャの特徴を箇条書きでまとめて示します．マイクロプロセッサやマイクロコントローラに慣れている方は，ここで概略を掴んでいただけると思います．もし難しいようであれば，かまわず先へ進んでください．次の第2章から，一つずつ詳しく説明していきます．
● CPU
s制御用途に最適化されている．
s強力なブーリアン処理（1ビット単位の操作，演算）が可能
sアキュムレータへの依存度が低く，効率の良い命令セットになっている．
（メモリ-メモリ間データ転送，メモリと定数の直接論理演算など）
s8ビット×8ビット→16ビットの乗算命令，8ビット÷8ビットの除算命令をもつ．
s条件分岐命令を使ったループの構成として，制御変数を減算しながら0になるまでのループ（DJNZ 命令）と，制御変数がある値になるまでループ（CJNE 命令）が可能．この CJNE 命令はCASE分岐にも使える．
● メモリ
sプログラム・メモリ空間とデータ・メモリ空間が分離しているハーバード・アーキテクチャである．
sプログラム・メモリは最大64Kバイト●

8051は4Kバイト，8052は8KバイトのROMを内蔵
1-3

8051の特徴21不足分は外付けで拡張可能●

sデータ・メモリとして，256バイトの内部データ・メモリと，最大64Kバイトの外部データ・メモリの，二つのデータ・メモリ空間をもつ．
内部データ・メモリ空間は，機能によって，次の五つの領域に分けられる．

●（1）R0〜R7のレジスタ・バンク（4バンクで合計32バイト）（2）ビット・アドレス可能領域（128ビット分で16バイト）（3）直接アドレッシング可能メモリ領域［（1）と（2）を含めて128バイト］（4）間接アドレッシング専用メモリ領域（128バイト）（5）スペシャル・ファンクション・レジスタ領域（128バイト）●

内部メモリのアドレス空間は256バイトなので，8ビット幅（＝1バイト）のアドレスで全域をカバーで●（1）のレジスタ・バンクは4バンクあり，PSWというステータス・レジスタの設定で切り替えられる．

きる．このサイズに収まる処理は，非常に効率よく，かつ高速に動作する．
割り込み要因ごとにレジスタ・バンクを使い分ければ，レジスタのスタック退避/復帰を省略できる
ため，レスポンスが向上する．
●

バイト単位のアドレスとは別に，ビット単位にアドレスが付けられた領域が，（2）と（5）の中に合計32バイト（256ビット分）ある．そのビット・アドレスをオペランドとするブーリアン処理命令が充実しており，ビットのセット/クリア/反転はもちろん，キャリ・フラグを1ビット・アキュムレータとしての論理演算（AND，OR），ビット転送，ビットの状態による条件分岐が可能である．

●（4）は間接アドレッシングでだけアクセスできるメモリ領域であり，動的変数やスタックに適している．

●（5）は内蔵ペリフェラル関連レジスタ，およびアキュムレータなどのCPU関連レジスタが配置されている領域であり，直接アドレッシング専用である．

s内部データ・メモリでは容量が不足する場合には，外部データ・メモリとして最大64Kバイトまで外付けできる．アクセスには専用の転送命令（MOVX）
を使用する．
sプログラム・メモリとデータ・メモリは分離されているが，専用の転送命令（MOVC）を使用することで，プログラム・メモリ領域へアクセスできる．
● 割り込みs2段階の優先レベルをもつ6要因/5ベクタをサポートする．
s外部信号入力による割り込みが2本用意されている．それぞれレベル・トリガ，エッジ・トリガを選択
可能
s ペリフェラルからの割り込みとして，タイマ 0，タイマ 1，シリアル・ポートからの割り込みが可能．
8052デバイスではタイマ2も使用可能
s割り込みサービス・ルーチンの起動はベクタ・テーブル方式．要因ごとに決められたベクタ・アドレ
スがコールされる．
sベクタ領域にはジャンプ命令だけでなく，割り込みサービス・ルーチン自体を置くこともできる．高速な割り込み応答が可能
s2段階の割り込み優先度が用意されており，割り込み要因ごとに選択できる．これにより割り込みのネ
スティングを制御できる．

22

第1章

MCS-51アーキテクチャの概要

● I/Oポート
s8ビット4ポート（32本）のI/Oポートをもつ．
sすべてのピンが入力，出力どちらも可能
s一部のポート・ピンは，ペリフェラルや外部メモリ増設用の機能と共用● タイマ0およびタイマ1
s16ビットのカウント・レジスタをもつタイマ/カウンタである．
sシステム・クロックをカウントするタイマ動作，または外部入力信号をカウントするカウンタ動作を選択できる．
sモードによって，16ビット・タイマ/カウンタや8ビットのオート・リロード・タイマ/カウンタ，シリアル・ポート用ボー・レート・ジェネレータとして使用できる．
● タイマ2s16ビットのカウント・レジスタをもつタイマ/カウンタである．
sシステム・クロックをカウントするタイマ動作，または外部入力信号をカウントするカウンタ動作を選択できる．
s16ビット・オート・リロード・モード，16ビット・キャプチャ・モード，シリアル・ポート用ボー・
レート・ジェネレータ・モードがある．
sタイマ2は8052で盛り込まれた機能であり，8051にはない．
● シリアル・ポート
s全二重通信が可能なシリアル・ポートである．
sモードによって，クロック同期型のシフト・レジスタ動作や，8ビット/9ビットの調歩同期が可能● そのほかの機能
s外付けクリスタル用の発振回路を内蔵
s低消費電力モードをもつ．

■ ８０５１らしい部分のもう少し詳しい紹介
図 1-1 のブロック図を見る限り，8051 は何の変哲もない普通のマイクロコントローラです．ここで「8051らしい」部分を紹介しましょう．たくさんありますが，中でも特徴的と思われるものを挙げてみます．
● ビット・データの処理が得意
センサやスイッチからの信号入力，リレーの駆動，LEDの点滅，モータの回転/停止など，制御用途ではビット単位の入出力処理が多用されます．8051は，このビット・データを効率よく取り扱えるように「ビット・アドレス」というビットごとに割り振られたアドレス空間をもっています．これは一般的なバ
イト単位のアドレスの考え方をビットに対して適用したものと考えられます．ビット・アドレスによって，
データ・メモリ内の特定の1ビットをアドレスできます．
加えて8051では，図1-3に示すビット演算処理の例のように，キャリ・フラグ（Cフラグ）が，ビット操
作命令におけるアキュムレータとして機能します．
このビット・アドレスと，C フラグの 1 ビット・アキュムレータ機能によって，図 1-4 のようにバイト・データを扱うのと同レベルの処理が，ビット・データに対しても行えます．
この点はとくに「8051らしい」機能の一つで， boolean processorと呼ばれることもあります．これ
1-3

8051の特徴23

こんな処理をしたい：
Cフラグ←
フラグ←
｛
（ポート入力P1.0）AND（ビット・アドレス01H）｝OR (ポート入力P1.1)
ポート入力P1.0
ビット・アドレス01H

Cフラグ

ポート入力P1.1
これをコーディングすると…

MOV C, P1.0 ;ポート入力P1.0をCフラグへ転送
ANL C, 01H ;ビット・アドレス01Hの内容とCの内容をAND演算し，結果をCにストア
ORL C, /P1.1 ;ポート入力P1.1のデータのNOTと，CをOR演算し，結果をCにストア
たった3行でOK！

図1-3 ビット演算処理の例（キャリ・フラグは1ビット・アキュムレータとして機能する）●8ビット（1バイト）データ同士のAND演算・コード例：ANL A,01H… アキュムレータAと，データ・メモリのアドレス01Hの内容をビットごとにAND演算して，結果をAにストア
データ・メモリ
8ビット

8ビット

アキュムレータA

メモリ・アドレス01H

ビットごとのAND
アキュムレータA●1ビット・データ同士のAND演算・コード例：ANL C,01H… Cフラグと，データ・メモリのビット・アドレス01Hの内容をAND演算して，結果をCにストア
データ・メモリ
1ビット
キャリ（C）フラグ

1ビット
ビット・アドレス01H
実際の位置は，メモリ・アドレス20Hのビット1（図2-9参照）
AND

・他にOR演算（ORL命令），NOT演算（CPL命令），転送（MOV命令）もある

Cフラグ

図1-4 ビット・サイズのデータに対してバイト･データと同様の処理ができるは後に現れる多くのマイクロコントローラに影響を与えたようです．
● ベクタ・テーブル方式の割り込みサービス
8051の割り込みサービスは，割り込み要因ごとに個別のエントリ・アドレスがコールされる，いわゆ
る「ベクタ・テーブル方式」です．例えばタイマ0割り込みが発生すると，タイマ0用のエントリである
プログラム・メモリ・アドレス000BHがコールされます．
要因ごとのベクタ・テーブルをもたない，つまり単一ベクタのプロセッサやコントローラでは，割り込
みサービス・ルーチンの先頭でどの要因が割り込みを発生させたのかを調べる「ポーリング」という前処理（図1-5）が必要となります．このため，割り込みが発生してから，実際の割り込み処理が開始されるま

24

第1章

MCS-51アーキテクチャの概要