H8 C言語によるプログラミング

TOP

1. H8マイコン

1.1. H8マイコンの特徴

1.2. 内部レジスター構成

1.3. 命令セット

1.4. アドレス空間

1.5. 例外処理

2. プログラムの作成と実行

2.1. GCC Developer Lite

2.2. ROMへの書き込みと動作

2.3. GCCのオプション

2.4. I/Oコントロール

2.5. volatile修飾子

2.6. const修飾子

2.7. インラインアセンブラ

3. ポートの入出力

3.1. ポートのプログラミング

4. A/D変換

4.1. 入出力端子

4.2. データフォーマット

5. タイマー

5.1. タイマーA

5.2. タイマーV

5.3. タイマーW

6. RS232C

6.1. 初期化

6.2. データの送信と受信

7. ROM

7.1. 変数の扱い

7.2. セクション

7.3. main関数が実行されるまでの流れ

7.4. 関数の呼び出しとアセンブラ

8. 割込み

8.1. 割り込みプログラム例

8.2. __attribute__ 修飾子

参考文献

 

 

1.          H8マイコン

1.1.        H8マイコンの特徴

l         ワンチップ

l         内臓フラッシュROM

l         豊富なラインナップ

l         CPUスケーラビリティ

l         高い演算能力

l         低消費電力

 

CPUコアのラインナップは次のようになっています.

1 CPUコアの種類

CPUコア

ビット幅

扱える最大メモリ

H8/300

8

64K

H8/300L

8

64K

H8/300H Tiny

16

64K

H8/300H

16

64K16M

H8S/2000

H8S/2600

16

64K16M

データ 4G

これらのコアの命令はオブジェクトレベルで上位互換になっています.

 

1.2.        内部レジスター構成

CPUの汎用レジスター構成は次のようになっています.

1 レジスター構成

これら以外のレジスターはPC(24bit,プログラムカウンタ)EXR(8bit,割込み)CCR(8bit,フラグ)があります.

1.3.        命令セット

H8/300H CPU の命令は2 byteを単位としています.

命令セットの特徴には次のものがあります.

l         基本は汎用レジスター演算

l         H8/300CPU上位互換

l         汎用レジスター:16ビット×16

Ø        8ビット×16本+16ビット×8本、32ビット×8本としても使用可能

l         基本命令:62種類

Ø        81632ビット転送、演算命令

Ø        乗除算命令

Ø        強力なビット操作命令

l         アドレッシングモード:8種類

l         アドレス空間:64Kバイト

l         高速動作

Ø        頻出命令をすべて24ステートで実行

Ø        8×8ビットレジスタ間乗算:14ステート

Ø        16÷8ビットレジスタ間除算:14ステート

Ø        16×16ビットレジスタ間乗算:22ステート

Ø        32÷16ビットレジスタ間除算:22ステート

l         低消費電力動作

Ø        SLEEP命令により低消費電力状態に遷移

 

1.4.        アドレス空間

 アドレス空間はノーマルモードで64Kbyte,アドバンスモードで最大16Mbyteです.

また,ワンチップ化された周辺装置はメモリマップドIO方式で接続されています.

 割込みベクタ領域(テーブル)にプログラムの番地がかかれているのでリセット後はこのテーブルの内容にしたがってプログラムが実行されます.

2 アドレス空間

1.5.        例外処理

 例外処理にはリセット,トラップ命令,割込みがあります.

例外処理の受付の流れは次のとおりになります.

1.        PCCCRレジスターをスタックに退避

2.        CCRの割込みマスクビットに”1”をセット

3.        例外処理要因ごとにベクタアドレスを生成し,PCレジスターにセットする.

1.5.1.                 ベクタテーブル

 例外処理のプログラムの開始番地を記録しておくテーブルです.

 

2 ベクタテーブル

発生元

例外処理要因

ベクタ番号

ベクタアドレス

端子

ウオッチドッグタイマ

リセット

0

H’0000H’0001

システム予約

16

H’0002H’000D

外部割込み端子

NMI

7

H’000EH’000F

CPU

トラップ命令 #0

8

H’0010H’0011

トラップ命令 #1

9

H’0012H’0013

トラップ命令 #2

10

H’0014H’0015

トラップ命令 #3

11

H’0016H’0017

アドレスブレーク

ブレーク条件成立

12

H’0018H’0019

CPU

スリープ命令の実行

による直接遷移

13

H’001AH’001B

外部割込み端子

IRQ0

14

H’001CH’001D

IRQ1

15

H’001EH’001F

IRQ2

16

H’0020H’0021

IRQ3

17

H’0022H’0023

WKP

18

H’0024H’0025

タイマA

オーバーフロー

19

H’0026H’0027

システム予約

20

H’0028H’0029

タイマW

インプットキャプチャA

コンペアマッチA

インプットキャプチャB

コンペアマッチB

インプットキャプチャC

コンペアマッチC

インプットキャプチャD

コンペアマッチD

オーバーフロー

21

H’002AH’002B

タイマV

コンペアマッチA

コンペアマッチB

オーバーフロー

22

H’002CH’002D

SCI3

受信データフル

送信データエンプティ

送信終了

受信エラー

23

H’002EH’002F

IIC

データ転送終了

アドレス不一致

停止条件検出

24

H’0030H’0031

A/D変換器

A/D変換終了

25

H’0032H’0033

 

 表の上は優先度が高く,下に行くほど低くなります.

 

次へ>>

 

参考図書


Copyright © 2005 namichin. All Rights Reserved.
Last modified 2005/03/26