...

Title シングルチップマイクロコンピュータを用いたボイスレコーダの開発

by user

on
Category: Documents
3

views

Report

Comments

Transcript

Title シングルチップマイクロコンピュータを用いたボイスレコーダの開発
Title
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
Author(s)
秋葉, 治克
Citation
北海道教育大学紀要. 自然科学編, 66(1): 1-17
Issue Date
2015-08
URL
http://s-ir.sap.hokkyodai.ac.jp/dspace/handle/123456789/7832
Rights
Hokkaido University of Education
北海道教育大学紀要(自然科学編)第66巻 第1号
Journal of Hokkaido University of Education(Natural Sciences)Vol. 66, No.1
平 成 27 年 8 月
August, 2015
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
秋 葉 治 克
北海道教育大学旭川校電気研究室
Development of a Voice Recorder using a Single Chip Microcomputer
AKIBA Haruyoshi
Electric Laboratory, Asahikawa Campus, Hokkaido University of Education, Asahikawa 070-8621
ABSTRACT
This paper describes the development of a voice recorder which used a single chip
microcomputer. The outline is as follows.
When recording, a sound is changed into an analog electric signal with a microphone, and
The signal is amplified with an amplifier. ―Then, it changes into digital data with the A-D
converter contained in the single chip microcomputer, and it is saved in an external random
access memory.
When reproducing, the digital data is changed into an analog electric signal with the D-A
converter contained in the single chip microcomputer, and it is amplified with an amplifier.
―Then, a sound is generated from a loudspeaker.
This sound can be reproduced by pushing the button equipped on the surface of
equipment. Moreover, it can also be made to reproduce when a human body is detected
using an infrared sensor.
1.まえがき
レ コ ー ダ の よ う に 携 帯 し て 持 ち 運 び, イ ン タ
ビュー録音などの用途に使用することを想定した
部屋などを不在にするとき,来客に対してホワ
ものではなく,一定の場所に固定して,人体検出
イトボードや貼り紙を活用してメッセージを伝え
赤外線センサを使って人体を検出し留守中の来訪
ることがよく行われている。本研究ではこの代用
者にメッセージを伝えることを目的としている。
に音声をディジタル化し記憶媒体であるランダム
その概要は,録音時に音声をマイクでアナログ
アクセスメモリに記録する録音機器として,シン
電気信号に変換し増幅器で増幅した後,シングル
グルチップマイクロコンピュータを用いたボイス
チップマイクロコンピュータに内蔵されている
レコーダの開発を行った。本装置は,市販のIC
A/D変換器でディジタルデータに変換し外部の
1
秋 葉 治 克
ランダムアクセスメモリに保存する。再生時には,
2.準備および操作
そのディジタルデータをシングルチップマイクロ
コンピュータに内蔵されているD/A変換器でア
図1および図2にボイスレコーダ本体表面およ
ナログ電気信号に変換し増幅器で増幅した後,ス
び裏面の外観を示す。また,図3にマイク,図4
ピーカから音声を発生させる。さらに,人体検出
にスピーカ,図5にMPモーションセンサの外観
赤外線センサを使って人体が検出されると自動的
を示す。
に音声を再生させる機能を持たせた。これにより,
準 備 は 設 置 作 業 か ら 始 ま る。 本 体 を 蛍 光 灯
留守中でも人にメッセージを伝えることが可能と
チェーン(真鍮メッキ,#16×1M)を使って壁
なった。
掛けとし,マイクは本体底部に取り付けた金具(真
使用したシングルチップマイクロコンピュータ
中よーと,サイズ25mm)に引っ掛ける。MPモー
はシステム構成に必要な周辺機能を集積した日立
ションセンサは木ねじを使ってメッセージを伝え
H8/3048である。このH8/3048は,内部32ビット
ようとする人が通る廊下の天井にねじ止めする。
構成で16ビット×16本の汎用レジスタと高速動作
スピーカはメッセージが聞こえやすい高所に任意
を指向した簡潔で最適化された命令セットを備え
の方法で取り付ける。設置作業が終了したら電源
ており,16Mバイトのアドレス空間を扱うことが
プラグをコンセント(AC100V)に差込み,本体
できる。システム構成に必要な周辺機能としては
表面のRESETボタンを押せば準備完了である。
128kバイトROM,4kバイトRAM,I/Oポート,
操作は全て本体表面で行い,録音モードを選ぶ
A/D変 換 器,D/A変 換 器,16ビ ッ ト イ ン テ グ
ことから始まる。スライドスイッチを「20秒」側
レーテッドタイマユニット(ITU)
,プログラマ
にするとメッセージを20秒間録音し再生できる。
ブルタイミングパターンコントローラ(TPC),
「各10秒」側にするとチャネルCH1とCH2の二つ
ウオッチドックタイマ(WDT),シリアルコミュ
に分割し,別々に10秒間録音し再生できる。この
ニケーションインタフェース(SCI)
,DMAコン
場合,チャネルの選択は,スライドスイッチの右
トローラ(DMAC)
,リフレッシュコントローラ
手にあるタンブラスイッチを「CH1」側か「CH2」
などを内蔵している。アドレス空間は8つのエリ
側にすることによって行う。
アに分割されており,エリアごとにデータバス幅,
録音を始めるには,押しボタン「録音」を押す。
アクセスステートを選択でき,各種のメモリを容
すると,録音開始を知らせるブザーが鳴り,押し
易に接続することができる。MCU動作モードは,
ボタン「録音」の上にあるLEDが赤く点灯し録
モード1~7(シングルチップモード1種類,拡
音中であることを知らせる。マイクに向かって
張モード6種類)があり,データバス幅とアドレ
メッセージを録音し,録音終了時間に達すると
ス空間を選択することができる1)。
LEDが消灯する。
教育的には,本研究の内容は平成11年度からそ
再生を始めるには,押しボタン「再生」を押す。
の開発段階に応じて学部学生を対象とした卒業研
すると,再生開始を知らせるブザーが鳴り,押し
究(4単位,4年生)のテーマとして取り上げ実
ボタン「再生」の上にあるLEDが赤く点灯し再
践してきた。開発当初はポケットコンピュータ
生中であることを知らせる。録音されたメッセー
(Z-1GR, カ シ オ ),A/D変 換 器(ADC0809),
ジが再生され,再生終了時間に達するとLEDが
D/A変換器(AD558)など一体化されていない
消灯する。
電子部品を使い録音時間8秒のものであったが
赤外線で人体を検出して自動再生を始めるに
A/D変換,D/A変換のしくみを学習する教材と
は,押しボタン「センサ」を押す。すると,MPモー
して役立った。
ションセンサの検出距離の範囲内を人が通るたび
に再生開始を知らせるブザーが鳴り,押しボタン
2
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
「センサ」の上にあるLEDが赤く点灯し再生中
する。
であることを知らせる。録音されたメッセージが
なお,録音,再生,センサによる自動再生を途
再生され,再生終了時間に達するとLEDが消灯
中で中止したいときはRESETボタンを押す。
図1 本体(表面)
図2 本体(裏面)
3
秋 葉 治 克
図3 マイク
図4 スピーカ
図5 MPモーションセンサ
4
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
3.ハードウェア
A/D変換器(10ビット分解能,8チャネル,変
換時間最小7.4μs,サンプル&ホールド機能内蔵)
図6にマイコン周辺部の回路図を示す。回路は
の入力端子であり,メッセージ録音中に限りアナ
AKI-H8/3048F超高性能マイコンボード(秋月電
ログ電気信号が入力され内部でディジタルデータ
子通商)
,メモリHM628128BLP-8(1M CMOS
に変換される。このディジタルデータは,チップ
Static RAM,日立),ブザー(TMB-05-01C),
セレクトCS1(外部アドレス空間の当該エリアが
ダイオード(1S1588),トランジスタ(2SC1815),
選択されたときLowレベルを出力する),HWR
LED(TLR123),押しボタンスイッチ(DPI-120,
(ライト時にLowレベルを出力する),RD(リー
12mm×12mm,赤,青,橙),タンブラスイッチ
ド時にLowレベルを出力する),アドレスバスA0
(ATEID-2M3-10), ス ラ イ ド ス イ ッ チ(SS-
~ A16,データバスD8~ D15(8ビットアクセ
22SDP2,NKK),RESETボタン(B3W-1000),
ス空間ではデータバスの上位側を使用する)によ
カーボン被膜抵抗器(2k,5.1k,各1/4W),抵
りメモリHM628128BLP-8に書き込み/読み込み
抗アレー(10k,M9-1-103J)で構成する。これ
が行われる。RESはリセット端子である。VCCは
らの電子部品はすべてプリント基板(ICB-96,
電源(+5V),VSSは電源(0V,GND)である。
サンハヤト)にはんだ付けした。動作は,AKI-
図7にマイクおよび増幅部の回路図を示す。回
H8/3048FにおいてI/OポートP4-3(出力)はト
路は2線式コンデンサマイク
(KUC2123-040245)
,
ランジスタを駆動してブザーのON/OFFを行う。
オーディオ電力増幅器(TA7368P,東芝),電解
P4-0,P4-1,P4-2(出力)はLEDを駆動してそ
コンデンサ(1μ,50Vおよび100μ,25V),セラ
の点灯/消灯を行う。P6-0,P6-1,P6-2(入力)
ミックコンデンサ(4700p,50V),カーボン被膜
は録音ボタン,再生ボタン,センサボタンが押さ
抵 抗 器(1k,1/4W), 可 変 抵 抗 器(30k,CT-
れたかどうかを検出する。P4-4(入力)はスラ
6P)で構成する。このうち2線式コンデンサマ
イドスイッチが「20秒」側(スイッチOFF,+5
イクはプリント基板(ICB-86,サンハヤト)に
V)か「各10秒」側(スイッチON,0V)どちら
はんだ付けした。それ以外の電子部品はすべてマ
を選択しているかを検出する。P4-5(入力)は
イコン周辺部のプリント基板に一緒にはんだ付け
タンブラスイッチが「CH1」側(スイッチON,
した。動作は,音声を2線式コンデンサマイクで
0V) か「CH2」 側( ス イ ッ チOFF,+5V) ど
アナログ電気信号に変換した後,オーディオ電力
ちらを選択しているかを検出する。P4-6(出力)
増幅器で増幅してAKI-H8/3048FのA/D変換器入
はメッセージ再生中に限りD/A変換器のデータ
力端子AN0に与える。
書き込み周期に等しい周波数の矩形波を出力す
図8にスピーカおよび増幅部の回路図を示す。
る。P4-7(出力)はメッセージ録音中に限りA/
回路はスピーカ(8Ω,0.5W,TS-150,MARK-
D変換器のサンプリング周期に等しい周波数の矩
IT)
,オーディオ電力増幅器(TA7368P,東芝),
形波を出力する。この二つの矩形波はオシロス
電解コンデンサ(470μ,100μ,各25V),セラミッ
コープ観測用として用いる。MD1はCPUモード
クコンデンサ(4700p,50V),可変抵抗器(5k,
をモード5(内蔵ROM有効拡張1Mバイトモー
CT-6P)で構成する。スピーカ以外の電子部品
ド)に設定するためGNDに接続する。IRQ0は外
はすべてマイコン周辺部のプリント基板に一緒に
部割込み端子であり,人体が検出されると割込み
はんだ付けした。動作は,AKI-H8/3048FのD/A
処理ルーチンの実行が開始される。DA0はD/A変
変換器出力端子DA0から与えられるアナログ電気
換器(8ビット分解能,2チャンネル,変換時間
信号をオーディオ電力増幅器で増幅してスピーカ
最大10μs)の出力端子であり,メッセージ再生
から音声を発生させる。
中に限りアナログ電気信号が出力される。AN0は
図9にMPモーションセンサおよび増幅部の回
5
秋 葉 治 克
路図を示す。回路はMPモーションセンサ
(NaPiOn,
リッジ(1B4B41,400V,1A),3端子電圧安定
AMN11111,
松下電工),トランジスタ(2SC1815),
器(78M05),電解コンデンサ(4700μ,47μ,各
カーボン被膜抵抗器(1k,4.3k,10k,各1/4W)
16V),セラミックコンデンサ(0.1μ,50V)で構
で構成する。これらの電子部品はすべて2線式コ
成する。変圧器とヒューズを除く電子部品はプリ
ンデンサマイクとは別のプリント基板(ICB-86,
ント基板(ICB-93S-2,サンハヤト)にはんだ付
サンハヤト)にはんだ付けした。なお,MPモー
けした。動作は,AC100Vを変圧器によってAC
ションセンサの性能等は動作電圧DC3~6V,
9Vに降圧し,ダイオードブリッジで整流した後,
標準タイプ,レンズ色は黒,検出距離は最大5m,
3端子電圧安定器と電解コンデンサおよびセラ
検出範囲は水平方向100°,垂直方向82°である。
ミックコンデンサにより安定化しDC5V電源と
動作は,人体から発せられる赤外線の変化をMP
し た。 こ のDC5V電 源 の 消 費 電 流 は 待 機 時
モーションセンサでアナログ電気信号に変換した
75mA,録音時120mA,再生時およびセンサによ
後,トランジスタで増幅してAKI-H8/3048Fの外
る自動再生時214mA,センサによる自動再生時
部割込み端子IRQ0に与える。このIRQ0信号は人
であって,かつ人体が検出されず待機中のとき
体を検出すると0V,検出しないと+5Vになる。
75mAである。
図10に電源部の回路図を示す。回路は変圧器(一
なお,本装置の乾電池駆動は消費電流が常時
次 側AC100V, 二 次 側AC9V,0.3A,SP-903,
75mA以上となるため,乾電池の早期消耗や音質
S.E.L)
,ガラス管ヒューズ(1A),ダイオードブ
劣化をきたすので実用的ではない。
AKI-H8/3048F超高性能マイコンボード
+5V
ブザー
TMB-05-01C
5.1k×3
録音
LED
TLR123
再生
センサ
トランジスタ
Vcc
ダイオード
1S1588
2k
CN1-34
2SC1815
CN1-33
CN1-32
CN1-31
抵抗アレ― センサボタン
10k×5
CN3-37
CN3-36
CN3-35
再生ボタン
録音ボタン
CN3-6
CN3-5
P4-3
P4-2
P4-1
P4-0
P6-2
P6-1
P6-0
P4-7
P4-6
タンブラスイッチ
CN3-4
スライドスイッチ
+5V
CN3-3
CN2-4
RESET
ボタン
CN1-37 or 38
CN5-4
P4-5
P4-4
RES
VSS
MD1
IRQ0
DA0
AN0
CS1
HWR
RD
A16
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
D15
D14
D13
D12
D11
D10
D9
D8
CN1-35
CN2-18
D/A OUT
A/D IN
CN2-12
メモリ HM628128BLP-8
CN1-6
22
CN2-8
29
CN2-7
24
CN3-31
2
CN3-30
31
CN3-29
3
CN3-28
28
CN3-27
CN3-26
4
25
CN3-25
23
CN3-24
26
CN3-23
CN3-22
27
5
CN3-21
6
7
CN3-20
CN3-19
CN3-18
CN3-17
CN3-16
CN3-15
CN3-14
CN3-13
CN3-12
CN3-11
CN3-10
CN3-9
CN3-8
CN3-7
図6 回路図(マイコン周辺部)
6
+5V
IRQ0
CN1-3
8
9
10
11
12
21
20
19
18
17
15
14
13
+5V
CS1
WE
OE
A16
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
I/O7
I/O6
I/O5
I/O4
I/O3
I/O2
I/O1
I/O0
VDD
CS2
VSS
32
30
16
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
オーディオ電力増幅器
TA7368P
+5V
2線式
コンデンサ
マイク
+5V
1k
1 8 6 5
1μ
3
7
9
1
A/D IN
2
30k
4700p
1回転式
100μ 100μ
図7 回路図(マイクおよび増幅部)
オーディオ電力増幅器
TA7368P
スピーカ
8Ω,0.5W
470μ
7 8 6 5
3
9
+5V
47μ
1
D/A OUT
5k
1回転式
100μ 100μ 4700p
図8 回路図(スピーカおよび増幅部)
+5V
+5V
10k
MPモーションセンサ
NaPiOn
Vdd
OUT
GND
IRQ0
4.3k
トランジスタ
2SC1815
1k
図9 回路図(MPモーションセンサおよび増幅部)
ヒューズ
1A
AC100V
変圧器
SP-903
S.E.L
ダイオードブリッジ
1B4B41
~
+
-
9V
0.3A
3端子電圧安定器
78M05
IN
OUT
+5V
COMM
~
4700μ
47μ
0.1μ
GND
図10 回路図(電源部)
7
秋 葉 治 克
4.ソフトウェア
図11~図13にフローチャートを示す。付録にプ
ログラムリストを示す2)。
[主プログラム]
[録音サブルーチン]
始 め
始 め
シンボルの定義
IRQ0割込み禁止
ベクタアドレスの設定
レジスタの待避
スタックポインタの設定
録音モード
の検出
マニュアル(秋月電子通商)に従
い,シリアルコミュニケーショ
ンインタフェース(SCI)を使用
しないので,ポート9のP9-0,
P9-1を出力に,P9-2,P9-3を
入力に設定
各10秒
チャネル
の検出
20秒
外部RAMの保存開始アドレスを
#H'20000,保存終了アドレスを
#H'3FFFFに設定
ポート4のP4-0,P4-1,P4-2,P4-3,
P4-6,P4-7を出力に,
P4-4,P4-5を入力に設定
三つのLEDを消灯,ブザーをOFF
ポート6のP6-0,P6-1,P6-2を
入力に設定
ブザーをON
チップセレクトCS1を,外部アドレス
空間H'20000~H'3FFFFのエリアに設定
時間待ち
ブザーをOFF
A/D変換器を単一モード,チャネルAN0使用,
変換時間134ステートに設定
ブザーの残響が消えるまで
時間待ち
録音LEDを点灯
D/A変換器のチャネル0のD/A変換のみ許可
三つのLEDを消灯,ブザーをOFF
A/D変換を開始
P4-7を論理反転
録音ボタンが
押されたか?
YES
サブルーチンROKUONを呼び出す
NO
再生ボタンが
押されたか?
NO
A/D変換
終了か
YES
YES
時間待ち
サブルーチンSAISEIを呼び出す
NO
A/D変換データを入力
A/D変換終了フラグをクリア
センサボタンが
押されたか?
YES
A/D変換データの上位8ビット
を外部RAMに保存
サブルーチンSENSAを呼び出す
NO
外部RAMのアドレスをカウント
するためのレジスタER5の内容
を+1
NO
外部RAMの
保存終了アドレス
に達したか
YES
録音LEDを消灯
レジスタの復帰
RTS
図11 フローチャート(その1)
8
CH1
外部RAMの保存開始アドレスを
#H'20000,保存終了アドレスを
#H'2FFFFに設定
ポート1,2,5をアドレスバス
A0~A19に設定
外部トリガ入力によるA/D変換を禁止
CH2
外部RAMの保存開始アドレスを
#H'30000,保存終了アドレスを
#H'3FFFFに設定
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
[再生サブルーチン]
[センササブルーチン]
始 め
始 め
IRQ0割込み禁止
IRQ0割込み禁止
レジスタの待避
レジスタの待避
録音モード
の検出
三つのLEDを消灯,ブザーをOFF
各10秒
ブザーをON
チャネル
の検出
20秒
外部RAMの保存開始アドレスを
#H'20000,保存終了アドレスを
#H'3FFFFに設定
CH2
時間待ち
CH1
外部RAMの保存開始アドレスを
#H'20000,保存終了アドレスを
#H'2FFFFに設定
ブザーをOFF
外部RAMの保存開始アドレスを
#H'30000,保存終了アドレスを
#H'3FFFFに設定
センサLEDを点灯
レジスタの復帰
コンディションコードレジスタ
(CCR)の割込みマスクビット(I)
をクリアして割込み受付け可能
三つのLEDを消灯,ブザーをOFF
ブザーをON
IRQ0割込みのプライオリティ
レベルを1に設定
時間待ち
IRQ0割込みをLowレベルセンス
に設定
ブザーをOFF
IRQ0割込み禁止状態の時ラッチ
された新たなIRQ0割込み要求信号
やIRQ0サービスルーチン実行時に
ラッチされた新たなIRQ0割込み要
求信号をクリアして2重割込みが
かからないようにする
再生LEDを点灯
外部RAMから保存して
いたディジタルデータ
を読み込む
IRQ0割込み許可
D/A変換器にディジタル
データを書き込んで
D/A変換を開始
RTS
P4-6を論理反転
時間待ち
外部RAMのアドレスをカウント
するためのレジスタER5の内容
を+1
NO
外部RAMの
保存終了アドレス
に達したか
YES
再生LEDを消灯
レジスタの復帰
RTS
図12 フローチャート(その2)
9
秋 葉 治 克
[IRQ0サブルーチン]
始 め
IRQ0割込み禁止
レジスタの待避
録音モード
の検出
10各秒
チャネル
の検出
20秒
外部RAMの保存開始アドレスを
#H'20000,保存終了アドレスを
#H'3FFFFに設定
CH2
CH1
外部RAMの保存開始アドレスを
#H'20000,保存終了アドレスを
#H'2FFFFに設定
外部RAMから保存して
いたディジタルデータ
を読み込む
D/A変換器にディジタル
データを書き込んで
D/A変換を開始
P4-6を論理反転
時間待ち
外部RAMのアドレスをカウント
するためのレジスタER5の内容
を+1
NO
外部RAMの
保存終了アドレス
に達したか
YES
レジスタの復帰
IRQ0割込み禁止状態の時ラッチ
された新たなIRQ0割込み要求信号
やIRQ0サービスルーチン実行時に
ラッチされた新たなIRQ0割込み要
求信号をクリアして2重割込みが
かからないようにする
IRQ0割込み許可
RTE
図13 フローチャート(その3)
10
外部RAMの保存開始アドレスを
#H'30000,保存終了アドレスを
#H'3FFFFに設定
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
5.本装置のサンプリング周波数
人の耳に聞こえる音の周波数は人によって多少
異なるが,最低20Hzから最高20kHz程度の範囲
である。人の会話は100Hzから8kHz程度の範囲
で,しかも300Hzから3.4kHzくらいの周波数成分
の音が大部分であり,電話では主としてこの周波
数を伝送している。
そこで,
本装置では音質を電話の音質(3.4kHz)
程度にするため,A/D変換器のサンプリング周
波数をその約2倍の6.6kHz(サンプリング周期
でいうと150μs)にした。それに合わせてD/A変
換器へのディジタルデータ書き込み周波数も
6.6kHz(書き込み周期でいうと150μs)とした。
これにより,本装置の音質は誰の声か,何と言っ
ているのかきちんと判別できる程度となった。
6.おわりに
本装置の実用例として,大学の研究室出入り口
に設置し研究室不在中に訪れる学生諸君等の来客
へのメッセージ伝達に使用した。本体とマイクは
研究室内に設置し,MPモーションセンサは出入
り口付近の廊下の天井に設置し,ドアをノックし
た人だけに反応するようにレンズ部にφ10mm×
長さ40mmの円筒状の黒ゴムをかぶせた。スピー
カは廊下の高所に設置した。本体とMPモーショ
ンセンサおよびスピーカをつなぐ電線は換気口を
通した。最後に,本装置は昼間だけでなく夜の暗
がりの中でも人体検出赤外線センサで人体を検出
しメッセージを伝えることができるので,例えば
自宅敷地内への不審者の侵入,盗難防止対策にも
応用できるのではないかと考える。
参考文献
1)H8/3048シリーズ,H8/3048F-ZTAT TMハードウェ
アマニュアル,日立製作所(1994)
2)H8/3048シリーズプログラミングマニュアル,日立
製作所(1999)
11
秋 葉 治 克
付 録
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
;-------------------------------------------------------------------;
主プログラム
;-------------------------------------------------------------------.CPU 300HA
.SECTION A,DATA,LOCATE=H'00000
; I/Oポートのシンボル定義
P1_DDR .EQU
H'FFFC0
;ポート1データディレクションレジスタ
P2_DDR .EQU
H'FFFC1
;ポート2データディレクションレジスタ
P4_DDR .EQU
H'FFFC5
;ポート4データディレクションレジスタ
P4_DR .EQU
H'FFFC7
;ポート4データレジスタ
P5_DDR .EQU
H'FFFC8
;ポート5データディレクションレジスタ
P6_DDR .EQU
H'FFFC9
;ポート6データディレクションレジスタ
P6_DR .EQU
H'FFFCB
;ポート6データレジスタ
P8_DDR .EQU
H'FFFCD
;ポート8データディレクションレジスタ
P9_DDR .EQU
H'FFFD0
;ポート9データディレクションレジスタ
; A/D変換器のシンボル定義
ADDRAH .EQU
H'FFFE0
;A/Dデータレジスタ上位8bit(AH)
ADDRAL .EQU
H'FFFE1
;A/Dデータレジスタ下位8bit(AL)
ADCSR .EQU
H'FFFE8
;A/Dコントロール/ステータスレジスタ
ADCR .EQU
H'FFFE9
;A/Dコントロールレジスタ
; D/A変換器のシンボル定義
DADR0 .EQU
H'FFFDC
;D/Aデータレジスタ0
DACR .EQU
H'FFFDE
;D/Aコントロールレジスタ
; 割込みコントローラのシンボル定義
ISCR .EQU
H'FFFF4
;IRQセンスコントロールレジスタ
IER
.EQU
H'FFFF5
;IRQイネーブルレジスタ
IPRA .EQU
H'FFFF8
;インタラップトプライオリティレジスタA
ISR
.EQU
H'FFFF6
;IRQステータスレジスタ
; リセットのベクタアドレスの設定
.DATA.LINIT
; 外部割込みIRQ0のベクタアドレスの設定
.ORG
H'00030
.DATA.LIRQ0
; スタックとI/Oポートの設定
.ORG
H'00100
INIT: MOV.L #H'FFF10,ER7
;スタックポインタの設定
MOV.B #H'C3,R0L
MOV.B R0L,@P9_DDR
;ポートP9-0とP9-1を出力に,P9-2とP9-3を入力に設定
MOV.B #H'FF,R0L
MOV.B R0L,@P1_DDR
;ポート1をアドレスバスA0~A7として使用
MOV.B R0L,@P2_DDR
;ポート2をアドレスバスA8~A15として使用
MOV.B R0L,@P5_DDR
;ポート5をアドレスバスA16~A19として使用
MOV.B #H'CF,R0L
MOV.B R0L,@P4_DDR
;ポートP4-0,P4-1,P4-2,P4-3,P4-6,P4-7を出力に,
;P4-4,P4-5を入力に設定
MOV.B #H'F8,R0L
MOV.B R0L,@P6_DDR
;ポートP6-0,P6-1,P6-2を入力に設定
MOV.B #H'08,R0L
MOV.B R0L,@P8_DDR
;外部アドレス空間H'20000~H'3FFFFアクセス時CS1出力
50
51
52
53
54
; A/D変換器の設定
MOV.B #H'08,R0L
MOV.B R0L,@ADCSR
MOV.B #H'7F,R0L
MOV.B R0L,@ADCR
;単一モード,AN0使用,変換時間134ステートに設定
;外部トリガ入力によるA/D変換を禁止
プログラムリスト(その1)
12
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
; D/A変換器の設定
MOV.B #H'5F,R0L
MOV.B R0L,@DACR
;チャンネル0のみD/A変換を許可
; 録音・再生・センサボタンが押されたか検出
MOV.B #H'37,R0L
MOV.B R0L,@P4_DR
;三つのLEDを消灯,ブザーをOFF
LOOP: BTST
#H'00,@P6_DR
;録音ボタンの検出
BNE
JMP1
;ボタンを押していないときはJMP1へ飛ぶ
BSR
ROKUON
;ボタンを押しているときはサブルーチンROKUONを呼ぶ
JMP1: BTST
#H'01,@P6_DR
;再生ボタンの検出
BNE
JMP2
;ボタンを押していないときはJMP2へ飛ぶ
BSR
SAISEI
;ボタンを押しているときはサブルーチンSAISEIを呼ぶ
JMP2: BTST
#H'02,@P6_DR
;センサボタンの検出
BNE
LOOP
;ボタンを押していないときはLOOPへ飛ぶ
BSR
SENSA
;ボタンを押しているときはサブルーチンSENSAを呼ぶ
BRA
LOOP
;LOOPへ飛ぶ
;-------------------------------------------------------------------;
録音サブルーチン
;-------------------------------------------------------------------ROKUON: MOV.B #H'00,R0L
MOV.B R0L,@IER
;IRQ0割込みを禁止
PUSH.L ER0
;レジスタER0を待避
PUSH.L ER1
;レジスタER1を待避
PUSH.L ER2
;レジスタER2を待避
PUSH.L ER3
;レジスタER3を待避
PUSH.L ER4
;レジスタER4を待避
PUSH.L ER5
;レジスタER5を待避
PUSH.L ER6
;レジスタER6を待避
BTST
#H'04,@P4_DR
;録音モードの検出
BEQ
JMP3
;2チャンネル各10秒モードならJMP3へ飛ぶ
MOV.L #H'20000,ER5
;外部RAMの保存開始アドレスの設定
MOV.L #H'40000,ER6
;外部RAMの保存終了アドレス+1の設定
BRA
JMP5
;JMP5へ飛ぶ
JMP3: BTST
#H'05,@P4_DR
;チャネルの検出
BEQ
JMP4
;CH1ならJMP4へ飛ぶ
MOV.L #H'30000,ER5
;外部RAMの保存開始アドレスの設定
;外部RAMの保存終了アドレス+1の設定
MOV.L #H'40000,ER6
BRA
JMP5
;JMP5へ飛ぶ
JMP4: MOV.L #H'20000,ER5
;外部RAMの保存開始アドレスの設定
MOV.L #H'30000,ER6
;外部RAMの保存終了アドレス+1の設定
JMP5: MOV.B #H'37,R0L
MOV.B R0L,@P4_DR
;三つのLEDを消灯,ブザーをOFF
BSET
#H'03,@P4_DR
;ブザーをON
BSR
WAIT1
;時間待ち
BCLR
#H'03,@P4_DR
;ブザーをOFF
100
BSR
101
BCLR
102 ADMAIN: BSET
103
BNOT
104 ADEND: BTST
105
BEQ
106
BSR
107
MOV.L
108
MOV.B
WAIT2
#H'00,@P4_DR
#H'05,@ADCSR
#H'07,@P4_DR
#H'07,@ADCSR
ADEND
WAIT3
#0,ER1
@ADDRAH,R1H
;時間待ち
;録音LEDを点灯
;A/D変換開始
;ポートP4-7を論理反転
;A/D変換が終了したか検出
;終了していないならADENDへ戻る
;150μs時間待ち
;レジスタER1をクリア
;A/D変換データの上位8bitをR1Hレジスタに保存
プログラムリスト(その2)
13
秋 葉 治 克
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
MOV.B @ADDRAL,R1L
;A/D変換データの下位8bitをR1Lレジスタに保存
BCLR
#H'07,@ADCSR
;A/D変換終了フラッグをクリア
MOV.B R1H,@ER5
;A/D変換データを外部RAMに保存
INC.L #1,ER5
;レジスタER5の内容を+1
CMP.L ER5,ER6
;外部RAMの保存終了アドレスに達したか検出
BNE
ADMAIN
;達していないならばADMAINに戻る
BSET
#H'00,@P4_DR
;録音LEDを消灯
POP.L ER6
;レジスタER6を復帰
POP.L ER5
;レジスタER5を復帰
POP.L ER4
;レジスタER4を復帰
POP.L ER3
;レジスタER3を復帰
POP.L ER2
;レジスタER2を復帰
POP.L ER1
;レジスタER1を復帰
POP.L ER0
;レジスタER0を復帰
RTS
;リターン
;-------------------------------------------------------------------;
ブザーのON時間待ちサブルーチン
;-------------------------------------------------------------------WAIT1: MOV.L #H'0000FFFF,ER2
T1:
DEC.L #1,ER2
CMP.L #H'00000000,ER2
BNE
T1
RTS
;リターン
;-------------------------------------------------------------------;
ブザーの残響が消えるまでの時間待ちサブルーチン
;-------------------------------------------------------------------WAIT2: MOV.L #H'000A0000,ER2
T2:
DEC.L #1,ER2
CMP.L #H'00000000,ER2
BNE
T2
RTS
;リターン
;------------------------------------------------------------------------------;
A/D変換器のサンプリング周期を150μsにするための時間待ちサブルーチン
;------------------------------------------------------------------------------WAIT3: MOV.L #H'000000B5,ER2
T3:
DEC.L #1,ER2
CMP.L #H'00000000,ER2
BNE
T3
RTS
;リターン
;-------------------------------------------------------------------;
再生サブルーチン
150 ;-------------------------------------------------------------------151 SAISEI: MOV.B #H'00,R0L
152
MOV.B R0L,@IER
;IRQ0割込みを禁止
153
PUSH.L ER0
;レジスタER0を待避
154
PUSH.L ER1
;レジスタER1を待避
155
PUSH.L ER2
;レジスタER2を待避
156
PUSH.L ER3
;レジスタER3を待避
157
PUSH.L ER4
;レジスタER4を待避
158
159
160
161
162
PUSH.L
PUSH.L
BTST
BEQ
MOV.L
ER5
ER6
#H'04,@P4_DR
JMP6
#H'20000,ER5
;レジスタER5を待避
;レジスタER6を待避
;録音モードの検出
;2チャンネル各10秒モードならJMP6へ飛ぶ
;外部RAMの保存開始アドレスの設定
プログラムリスト(その3)
14
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
MOV.L #H'40000,ER6
;外部RAMの保存終了アドレス+1の設定
BRA
JMP8
;JMP8へ飛ぶ
JMP6: BTST
#H'05,@P4_DR
;チャネルの検出
BEQ
JMP7
;CH1ならJMP7へ飛ぶ
MOV.L #H'30000,ER5
;外部RAMの保存開始アドレスの設定
MOV.L #H'40000,ER6
;外部RAMの保存終了アドレス+1の設定
BRA
JMP8
;JMP8へ飛ぶ
JMP7: MOV.L #H'20000,ER5
;外部RAMの保存開始アドレスの設定
MOV.L #H'30000,ER6
;外部RAMの保存終了アドレ+1の設定
JMP8: MOV.B #H'37,R0L
MOV.B R0L,@P4_DR
;三つのLEDを消灯,ブザーをOFF
BSET
#H'03,@P4_DR
;ブザーをON
BSR
WAIT1
;時間待ち
BCLR
#H'03,@P4_DR
;ブザーをOFF
BCLR
#H'01,@P4_DR
;再生LEDを点灯
DAMAIN: MOV.B @ER5,R1H
;保存していたA/D変換データを読み込む
MOV.B R1H,@DADR0
;D/A変換を開始
BNOT
#H'06,@P4_DR
;ポートP4-6を論理反転
BSR
WAIT4
;150μs時間待ち
INC.L #1,ER5
;レジスタER5の内容を+1
CMP.L ER5,ER6
;外部RAMの保存終了アドレスに達したか検出
BNE
DAMAIN
;達していないならばDAMAINに戻る
BSET
#H'01,@P4_DR
;再生LEDを消灯
POP.L ER6
;レジスタER6を復帰
POP.L ER5
;レジスタER5を復帰
POP.L ER4
;レジスタER4を復帰
POP.L ER3
;レジスタER3を復帰
POP.L ER2
;レジスタER2を復帰
POP.L ER1
;レジスタER1を復帰
POP.L ER0
;レジスタER0を復帰
RTS
;リターン
;------------------------------------------------------------------------------;
D/A変換器の書き込み周期を150μsにするための時間待ちサブルーチン
;------------------------------------------------------------------------------WAIT4: MOV.L #H'000000C3,ER2
T4:
DEC.L #1,ER2
CMP.L #H'00000000,ER2
BNE
T4
RTS
;リターン
;-------------------------------------------------------------------;
IRQ0サブルーチン
;-------------------------------------------------------------------IRQ0: MOV.B #H'00,R0L
MOV.B R0L,@IER
;IRQ0割込みを禁止
PUSH.L ER0
;レジスタER0を待避
PUSH.L
PUSH.L
PUSH.L
PUSH.L
PUSH.L
PUSH.L
BTST
BEQ
MOV.L
ER1
ER2
ER3
ER4
ER5
ER6
#H'04,@P4_DR
JMP9
#H'20000,ER5
;レジスタER1を待避
;レジスタER2を待避
;レジスタER3を待避
;レジスタER4を待避
;レジスタER5を待避
;レジスタER6を待避
;録音モード検出
;2チャンネル各10秒モードならJMP9へ飛ぶ
;外部RAMの保存開始アドレスの設定
プログラムリスト(その4)
15
秋 葉 治 克
217
MOV.L
218
BRA
219 JMP9: BTST
220
BEQ
221
MOV.L
#H'40000,ER6
IMAIN
#H'05,@P4_DR
JMP10
#H'30000,ER5
;外部RAMの保存終了アドレス+1の設定
;IMAINへ飛ぶ
;チャネルの検出
;CH1ならJMP10へ飛ぶ
;外部RAMの保存開始アドレスの設定
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
MOV.L
#H'40000,ER6
;外部RAMの保存終了アドレス+1の設定
BRA
IMAIN
;IMAINへ飛ぶ
JMP10: MOV.L
#H'20000,ER5
;外部RAMの保存開始アドレスの設定
MOV.L
#H'30000,ER6
;外部RAMの保存終了アドレス+1の設定
IMAIN: MOV.B
@ER5,R1H
;保存していたA/D変換データを読み込む
MOV.B
R1H,@DADR0
;D/A変換を開始
BNOT
#H'06,@P4_DR
;ポートP4-6を論理反転
BSR
WAIT5
;150μs時間待ち
INC.L
#1,ER5
;レジスタER5の内容を+1
CMP.L
ER5,ER6
;外部RAMの保存終了アドレスに達したか検出
BNE
IMAIN
;達していないならばIMAINに戻る
POP.L
ER6
;レジスタER6を復帰
POP.L
ER5
;レジスタER5を復帰
POP.L
ER4
;レジスタER4を復帰
POP.L
ER3
;レジスタER3を復帰
POP.L
ER2
;レジスタER2を復帰
POP.L
ER1
;レジスタER1を復帰
POP.L
ER0
;レジスタER0を復帰
MOV.B
@ISR,R0L
;IRQ0の2重割込みを禁止
MOV.B
#H'00,R0L
MOV.B
R0L,@ISR
MOV.B
#H'01,R0L
MOV.B
R0L,@IER
;IRQ0割込みを許可
RTE
;リターン
;------------------------------------------------------------------------------;
IRQ0割込みにおけるD/A変換器の書き込み周期を150μsにするための
;
時間待ちサブルーチン
;-------------------------------------------------------------------------------
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
WAIT5: MOV.L
#H'000000C3,ER2
T5:
DEC.L
#1,ER2
CMP.L
#H'00000000,ER2
BNE
T5
RTS
;リターン
;-------------------------------------------------------------------;
センササブルーチン
;-------------------------------------------------------------------SENSA: MOV.B
#H'00,R0L
MOV.B
R0L,@IER
;IRQ0割込みを禁止
PUSH.L ER0
;レジスタER0を待避
PUSH.L ER1
;レジスタER1を待避
PUSH.L ER2
;レジスタER2を待避
PUSH.L ER3
;レジスタER3を待避
PUSH.L ER4
;レジスタER4を待避
PUSH.L ER5
;レジスタER5を待避
PUSH.L ER6
;レジスタER6を待避
MOV.B
#H'37,R0L
MOV.B
R0L,@P4_DR
;三つのLEDを消灯,ブザーをOFF
BSET
#H'03,@P4_DR
;ブザーをON
BSR
WAIT1
;時間待ち
プログラムリスト(その5)
16
シングルチップマイクロコンピュータを用いたボイスレコーダの開発
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
BCLR
BCLR
POP.L
POP.L
POP.L
POP.L
POP.L
POP.L
POP.L
STC.B
AND.B
LDC.B
MOV.B
MOV.B
MOV.B
MOV.B
MOV.B
MOV.B
MOV.B
MOV.B
MOV.B
RTS
293
.END
#H'03,@P4_DR
#H'02,@P4_DR
ER6
ER5
ER4
ER3
ER2
ER1
ER0
CCR,R0L
#H'7F,R0L
R0L,CCR
#H'80,R0L
R0L,@IPRA
#H'00,R0L
R0L,@ISCR
@ISR,R0L
#H'00,R0L
R0L,@ISR
#H'01,R0L
R0L,@IER
;ブザーをOFF
;センサLEDを点灯
;レジスタER6を復帰
;レジスタER5を復帰
;レジスタER4を復帰
;レジスタER3を復帰
;レジスタER2を復帰
;レジスタER1を復帰
;レジスタER0を復帰
;レジスタCCRの内容を読み込む
;レジスタCCRのマスクビット(I)をクリアして割込み受付け可能
;IRQ0割込みのプライオリティレベルを1に設定
;IRQ0割込みをLowレベルセンスに設定
;IRQ0の2重割込みを禁止
;IRQ0割込みを許可
;リターン
プログラムリスト(その6)
(旭川校准教授)
17
Fly UP