藤原です。 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