コマンドは6バイト構成になっていますので、前回作成した1バイト通信プログラムをコールして、コマンド出力プログラムを作成します。

コマンドラインのアドレスはHLレジスタに格納します。
[asm] cmd_out: ;command out
push hl
push bc
ld b,0x06 ;command line word count
cmd_out1:
ld d,(hl) ;command line area
call spi_8bit
inc hl
djnz cmd_out1
pop bc
pop hl
ret
[/asm]

コマンド出力したとは、コマンドの返り値をチェックします。
1バイト0xffを出力しながら、戻り値を確認します。
次のプログラムは1バイトの戻り値用です。
ただし、受信データ0xffがず~っと続くと無限ループに^^;

[asm] r1_resp:
call resp_r1
cp 0xff
jr z,r1_resp
ret

resp:
ld d,0xff
call spi_8bit
ld a,e
ret
[/asm]

ここまでで ソフトウェアリセットができましたので、次回から
イニシャライズルーチンを作成したいと思います。

おすすめの記事