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__ 修飾子

参考文献

 

 

4.          A/D変換

AD変換器の回路構成は次のようになっています.

8 AD変換器

4.1.        入出力端子

 AD変換用の入出力端子はアナログ入力用にAN0AN7とリファレンス電源用のAVccAD変換のトリガー用のADTGRがあります.

4.2.        データフォーマット

 AD変換器は10bitなので次に示すようなフォーマットで保存されます.

10bitのデータは上位側のbitに詰められていますので,10bitのデータとして利用したいときには、6bit右シフトをおこないます.この場合,符号拡張されて汎用レジスターに格納されていますから注意してください.

 上位8bitのみ必要な場合は、ADDRAをバイトサイズで読み出します.

9 データフォーマット

 

4.2.1.                 動作モード

A/D 変換器は逐次比較方式で分解機能は10 bitです.動作モードには単一モードとスキャンモードがあります.動作モードやアナログ入力チャネルの切換えは、誤動作を避けるためADCSR ADST ビットが0 の状態で行ってください.動作モードモードやアナログ入力チャネルの変更とADST ビットのセットは同時に行うことができます.

4.2.1.1.   単一モード

単一モードは指定された1 チャネルのアナログ入力を以下のように1 A/D 変換します。

1.        ソフトウェアまたは外部トリガー入力によってADCSRADSTビットが1にセットされると、選択されたチャネルのA/D変換を開始します.

2.        A/D変換が終了するとA/D変換結果がそのチャネルに対応するA/Dデータレジスタに転送されます.

3.        A/D変換終了時,ADCSRADFフラグが1にセットされます.このとき、ADIEビットが1にセットされていると,ADI割込み要求を発生します.

4.        ADSTビットはA/D変換中は1を保持し,変換が終了すると自動的にクリアされてA/D変換器は待機状態になります.

4.2.1.2.   スキャンモード

スキャンモードは指定された最大4 チャネルのアナログ入力を順次連続してA/D 変換します.

 

サンプルプログラム

#include<stdio.h>

 

#define      PCR8           (*(volatile unsigned char *)0xffeb)

#define      PDR8           (*(volatile unsigned char *)0xffdb)

 

#define      ADDRA       (*(volatile unsigned short *)0xffb0)

#define      ADDCSR     (*(volatile unsigned char *)0xffb8)

#define      ADDCR       (*(volatile unsigned char *)0xffb9)

 

 

int main(void)

{

              unsigned short data;

 

              PCR8 = 0xFF;                  //すべて出力に設定 ポート8

              ADDCSR = 0x00;             //割込みなし,単一モード,クロック134AN0端子

              ADDCR = 0x00;               //トリガー端子は使わない

 

              while(1) {                          //無限ループ

                            ADDCSR |= 0x20;                         //AD変換スタート

                            while( !(ADDCSR & 0x80) );         //AD変換終了まで待つ

                            ADDCSR &= 0x7F;                        //フラグのクリア

                            data = ADDRA;                              //データの読み込み

                            PDR8 = data >> 8;                         //8bitのみ出力(上位に詰められている)

              }

              return 0;

}

 

 

<<前へ  次へ>>

 

参考図書


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