C - U-netSURF
C - U-netSURF C - U-netSURF
H8/3687 のレジスタ H8/300H の 内 部 には, 一 時昷 的 にデータをセットするために 使 う 汎 用 レジスタ(ER0~ER7)と, CPU の 制 御 のために 使 うコントロールレジスタ(PC と CCR)があります。レジスタはメモみたいなもので, ちょっとデータを 記 録 しておく,というような 感 じで 使 います。これからこのマニュアルで TK-3687mini (H8/3687)について 調 べていきますが,レジスタはよく 出 てくるため,ここでまとめて 取 り 上 げます。 • 汎 用 レジスタ H8/300H は 32 ビット 長 の 汎 用 レジスタを 8 本曓 持 っています。それぞれ,ER0~ER7 という 名 前 が つけられています。 この 32 ビットレジスタを 上 位 16 ビットと 下 位 16 ビットにわけて,それぞれを 16 ビットレジスタとし て 使 うことができます。E0~E7,R0~R7 という 名 前 がつけられていて,16 ビットレジスタを 最暷 大 16 本曓 使 うことができます。 さらに,R0~R7 については 上 位 8 ビットと 下 位 8 ビットにわけて,それぞれを 8 ビットレジスタとし ても 使 うことができます。R0H~R7H,R0L~R7L という 名 前 がつけられていて,8 ビットレジスタを 最暷 大 16 本曓 使 うことができます。 これらの 汎 用 レジスタは「 汎 用 」と 名 付 けられているとおり, 全 て 同 じ 機 能 を 持 っています。つまり, ER0 でできることは ER1~ER7 でもできますし,R0L でできることは R0H~R7H,R1L~R7L でもでき ます。また, 各 レジスタは 独 立 して 32,16,8 ビットレジスタとして 使 うことができます。 汎 用 レジスタの 構 成 について 図 で 示 すと 次 のようになります。(n=0~7) ERn(32 ビット) 半 分 にする En(16 ビット) Rn(16 ビット) 半 分 にする RnH(8 ビット) RnL(8 ビット) 汎 用 レジスタは 全 て 同 じ 機 能 を 持 っているのですが,ER7 だけは 汎 用 レジスタとしての 機 能 にプ ラスして,スタックポインタとしての 機 能 も 持 っています。 5 TK-3687mini ユーザーズマニュアル C 言 語 版
• コントロールレジスタ H8/300H には 2 つのコントロールレジスタがあります。1 つはプログラムカウンタ(PC)です。PC は 24 ビットのレジスタで,CPU が 次 に 実 行 する 命 令 のアドレスを 示 しています。H8/3687 は PC の 下 位 16 ビットを 使 用 しています。 プログラムカウンタ(24 ビット) もう 1 つはコンディションコードレジスタ(CCR)です。CCR は 8 ビットのレジスタで,それぞれのビ ットが CPU の 内 部 状 態 を 表 しています。 演 算 結 果 が 0 になったとか,マイナスになったとか,キャリや ボローやオーバフローが 発 生 したという 情 報 がセットされます。おもに 分 岐 命 令 で 使 われます。どん な 種 類 があるのか 下 記 に 示 します。 コンディションコードレジスタ(8 ビット) I UI H U N Z V C ビット ビット 7 ビット 6 ビット 5 ビット 4 ビット 3 ビット 2 ビット 1 ビット 0 ビット 名 称 I UI H U N Z V C 機 能 割 り 込 みマスクビット このビットが‘1’にセットされると 割 り 込 み 要 求 がマスクされます。 ユーザビット ユーザが 自 由 に 定 義 , 設 定 できるビットです。 ハーフキャリフラグ 8 ビット 算 術 演 算 のときは,ビット 3 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’になりま す。16 ビット 算 術 演 算 のときは,ビット 11 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’に なります。32 ビット 算 術 演 算 のときは,ビット 27 にキャリが 生 じたとき‘1’, 生 じなかったとき ‘0’になります。 このフラグは 10 進 補 正 命 令 (DAA,DAS)のときに 使 用 されます。 ユーザビット ユーザが 自 由 に 定 義 , 設 定 できるビットです。 ネガティブフラグ データの 最暷 上 位 ビットを 符 号 ビットと 見 なし, 最暷 上 位 ビットの 値 を 格 納 します。 ゼロフラグ データがゼロのときに‘1’,ゼロ 以 外 のときに‘0’になります。 オーバフローフラグ 算 術 演 算 命 令 の 実 行 によりオーバフローが 発 生 したときに‘1’,それ 以 外 のときは‘0’にな ります。 キャリフラグ 演 算 の 結 果 ,キャリが 生 じたときに‘1’, 生 じなかったときに‘0’になります。キャリには1 加 算 結 果 のキャリ,2 減浦 算 結 果 のボロー,3シフト/ローテート 命 令 のキャリがあります。 ダウンロードした「H8/300H シリーズ プログラミングマニュアル」の 各 命 令 のページに,「●コン ディションコード」という 項 目 があります。その 命 令 を 実 行 した 結 果 ,CCR がどのように 変 化 するか 説 明 されています。 「…」という 感 じでしょうか。でも 心 配 には 及 びません。このマニュアルでも 関 係 するところ で 説 明 しますし,プログラムを 作 ったり 動 かしたりしていくうちにだんだんわかってくると 思 います。「 習 うより 慣 れろ」と 言 いますしね。 6 TK-3687mini ユーザーズマニュアル C 言 語 版
- Page 2 and 3: はじめに コンピュータと
- Page 4 and 5: 第 1 章 ワンチップマイコ
- Page 8 and 9: H8/3687 のメモリマップ メ
- Page 10 and 11: 第 2 章 マイコンボードを
- Page 12 and 13: ハイパーターミナルの 設
- Page 14 and 15: 5 プロパティ ‘ 設 定 ’
- Page 16 and 17: ハイパーターミナルを 起
- Page 18 and 19: P60~67 の LED が 順 番 に 点
- Page 20 and 21: 第 3 章 マシン 語 でプロ
- Page 22 and 23: マシン 語 に 変 換 する
- Page 24 and 25: キーボード:‘F’,‘6’,‘
- Page 26 and 27: 3.プログラムをデバッグす
- Page 28 and 29: 第 4 章 C 言 語 でプログラ
- Page 30 and 31: 3.C 言 語 でプログラムを
- Page 32 and 33: まず,1「ワークスペース
- Page 34 and 35: 「 新 規 プロジェクト-5/9-
- Page 36 and 37: これで,プロジェクトワー
- Page 38 and 39: 「セクション 設 定 」ダ
- Page 40 and 41: もう 一 度 確 認 しましょ
- Page 42 and 43: HEW のワークスペースウィ
- Page 44 and 45: 4.プログラムのダウンロー
- Page 46 and 47: ダウンロードが 終 了 す
- Page 48 and 49: 実 習 には,TK-3687mini,Timer&LE
- Page 50 and 51: ポートプルアップコント
- Page 52 and 53: 記 述 します。 IO.PCR6 = 0xff
- Page 54 and 55: では,コーディングしてみ
• コントロールレジスタ<br />
H8/300H には 2 つのコントロールレジスタがあります。1 つはプログラムカウンタ(PC)です。PC は<br />
24 ビットのレジスタで,CPU が 次 に 実 行 する 命 令 のアドレスを 示 しています。H8/3687 は PC の 下 位<br />
16 ビットを 使 用 しています。<br />
プログラムカウンタ(24 ビット)<br />
もう 1 つはコンディションコードレジスタ(CCR)です。CCR は 8 ビットのレジスタで,それぞれのビ<br />
ットが CPU の 内 部 状 態 を 表 しています。 演 算 結 果 が 0 になったとか,マイナスになったとか,キャリや<br />
ボローやオーバフローが 発 生 したという 情 報 がセットされます。おもに 分 岐 命 令 で 使 われます。どん<br />
な 種 類 があるのか 下 記 に 示 します。<br />
コンディションコードレジスタ(8 ビット)<br />
I UI H U N Z V C<br />
ビット<br />
ビット 7<br />
ビット 6<br />
ビット 5<br />
ビット 4<br />
ビット 3<br />
ビット 2<br />
ビット 1<br />
ビット 0<br />
ビット<br />
名 称<br />
I<br />
UI<br />
H<br />
U<br />
N<br />
Z<br />
V<br />
C<br />
機 能<br />
割 り 込 みマスクビット<br />
このビットが‘1’にセットされると 割 り 込 み 要 求 がマスクされます。<br />
ユーザビット<br />
ユーザが 自 由 に 定 義 , 設 定 できるビットです。<br />
ハーフキャリフラグ<br />
8 ビット 算 術 演 算 のときは,ビット 3 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’になりま<br />
す。16 ビット 算 術 演 算 のときは,ビット 11 にキャリが 生 じたとき‘1’, 生 じなかったとき‘0’に<br />
なります。32 ビット 算 術 演 算 のときは,ビット 27 にキャリが 生 じたとき‘1’, 生 じなかったとき<br />
‘0’になります。<br />
このフラグは 10 進 補 正 命 令 (DAA,DAS)のときに 使 用 されます。<br />
ユーザビット<br />
ユーザが 自 由 に 定 義 , 設 定 できるビットです。<br />
ネガティブフラグ<br />
データの 最暷 上 位 ビットを 符 号 ビットと 見 なし, 最暷 上 位 ビットの 値 を 格 納 します。<br />
ゼロフラグ<br />
データがゼロのときに‘1’,ゼロ 以 外 のときに‘0’になります。<br />
オーバフローフラグ<br />
算 術 演 算 命 令 の 実 行 によりオーバフローが 発 生 したときに‘1’,それ 以 外 のときは‘0’にな<br />
ります。<br />
キャリフラグ<br />
演 算 の 結 果 ,キャリが 生 じたときに‘1’, 生 じなかったときに‘0’になります。キャリには1 加<br />
算 結 果 のキャリ,2 減浦 算 結 果 のボロー,3シフト/ローテート 命 令 のキャリがあります。<br />
ダウンロードした「H8/300H シリーズ プログラミングマニュアル」の 各 命 令 のページに,「●コン<br />
ディションコード」という 項 目 があります。その 命 令 を 実 行 した 結 果 ,CCR がどのように 変 化 するか 説 明<br />
されています。<br />
「…」という 感 じでしょうか。でも 心 配 には 及 びません。このマニュアルでも 関 係 するところ<br />
で 説 明 しますし,プログラムを 作 ったり 動 かしたりしていくうちにだんだんわかってくると 思 います。「 習<br />
うより 慣 れろ」と 言 いますしね。<br />
6<br />
TK-3687mini ユーザーズマニュアル C 言 語 版