[H8-ML(1728)] Re: AD変換スキャンモード
From: FUJIHARA Keiichi <keiichi@xxxxxxxxxxxxx>
Date: 2002年04月12日(金)22時51分41秒
 藤原です。

This message is reply to 伊藤 誠一 - san
(Subject was : [H8-ML(1725)] Re: [H8-ML(1723)] Re: AD変換スキャンモード)

Message-ID: <F1542vN9EP60A1ozvkh0000a1c1@xxxxxxxxxxx>
in Fri, 12 Apr 2002 12:03:23 +0900 ...

 えっと、実は私は、8bit の H8 しか使ったことがありません。
 というわけで、具体的なアドレス etc. は適時読み替えてください。

1.ベクターテーブル

> 	.CPU 300HA		;CPUの指定
> 	.SECTION  VECT,CODE,LOCATE=H'000000	;セクションの宣言
> RES	.DATA.L	INIT		;ラベルINIT以降にプログラム領域を確保
> 
> いかがでしょうか。

 VECT セクションのアドレスが正しく設定されていればこれでOKです。
 

> >2.RAM 領域を .EQU で定義するのは止めましょう。(SW5)
> >  .EQU でアドレスを定義するのは、データレジスタのように、本来的に
> >  アドレスが固定されているものだけです(定数もありますが)
> >  RAM の確保には、サイズに応じた .RES 擬似命令を使いましょう。
> 
>  SW5:	.RES.B   1	;SW5の状態を記憶するRAMの番地
>  P2DR	.EQU	H'FFFFC3	;ポート2の入力データレジスタを指定する番地
>  P5DR	.EQU	H'FFFFC6	;ポート5の入力データレジスタを指定する番地
> 
> SW5:を変更してみました。P5DRに訂正しました。
> レジスタのほうはこのままでもかまいませんか?

 え、言わずもがなですが、SW5 は、data セクションで定義しましょう。
 レジスタのほうはこれでいいです。

> >3.というわけで、コントロールレジスタのアドレスこそ、シンボルで定義しま
> >  しょう
> > > 	MOV.B	#H'00,R0L	     ;ポート2(SW-5に接続)を入力に設定するため
> > > 	MOV.B	R0L,@H'FFFFC1	;コントロールレジスタにH'00を書き込む
> > > 	MOV.B	#H'FF,R0L	     ;ポート2をプルアップに設定するため
> > > 	MOV.B	R0L,@H'FFFFD8	;コントロールレジスタにH'FFを書き込む

 で、なぜ、P2DR や、P2DR は、EQU で定義しているのに、コントロールレジスタ
の FFFFC1 や FFFFD8 は、直接アドレスを書くのでしょうか?

PCR1 .equ  H'FFFFC1
PCR2 .equ  H'FFFFD8

   MOV.B  #H'00, R0L
   MOV.B  R0L, @PCR1

とするのとどちらがわかりやすいでしょか?


> 
> >4.SW_D5 は、SW5 のミスだとして、これではスイッチの状態は読めません。
> >  まあ動くかもしれませんが。
> >  SW5 の内容は、必ず「0」で、そのままですね。
> > > S5CHK:	MOV.B	@P2DR,R0L	     ;SW5の状態をR0Lに読み込む
> > 	MOV.B	@SW5,R0H	     ;SW_D5の内容をR0Hに読む
> >	CMP.B	R0H,R0L		;両者を比較する
> 

 SW5 という RAM エリアは何の目的で使用していますか?
 基本的なところで誤解があるような気がします。

 いずれにしても、書かれていたプログラムでは

 1)SW5 に0を代入する
 2)ポート2の値を読み込む
 3) ポート2とSW5の内容(つまり0)を比較する
 4)それが同じなら、2)からやりなおす。

 という流れですよね。
 SW5 は、何の意味があるのでしょうか?

 普通は、

 1)SW5 に、ポート2の状態を読み込んでおく
 2)ポート2の値を読み込む
 3)ポート2と SW5の内容(それは、ひとつまえのポート2)を比較する
 4)それが同じなら、今のポート2の値を、SW5 に保存しておいて、
   2)からやりなおす

 あたりを意図しているんではないかと思いますが。

-- 
_/ -- Last  1653 hours until 2002 World Cup final (12 Apr @603) ------
_/ FUJIHARA Keiichi
_/ E-Mail : keiichi@xxxxxxxxxxxxx <or> nagi@xxxxxxx
_/ URL    : http://www.keiichi.fujihara.name/
--------------------------------------------+----- Luna Phase 29.34 --
PGP FingerPrint = 7CC3 4F95 8CC7 87D3 7178  C348 CD65 7F08 D68F 69F6


スレッド概略
[1725(R)](起点)
 └[表示中]
   └[1732(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]