2026.7.31
前へ
次へ
ホームページトップへ戻る


[新連載開始]W65C02マイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第29回]



●W65C02の2回目のテスト基板が出来てきました

実は1週間以上も前に到着していました。
パーツを組み付けたり動作テストをしたり。
そうそう回路が変わったのでPICUSBIOを制御するプログラムも大幅に書き換えました。
それと並行してW65C02のデバッグもやっていましたからホームページにアップするのが遅くなりました。
まことにHOTな夏なのです。
この基板を発注したのは7月16日([第15回])でした。
国際便で到着したのが7月22日です(某国から!)。
1週間かかっていません。
めっちゃ速いです。
かっては試作基板の原図を送ってから基板が出来上がってくるまで3〜4週間かかっていました(県内の業者から!)。
まさに隔世の思いです。
こちらが部品面です。


こちらがハンダ面です。


部品を実装して早速動作テストです。

今回の基板では簡単ですがI/O回路を実装しました。
左端の中ほどにある8Pディップスイッチが入力です。
その上方のLEDが出力です。
ディップスイッチには55(01010101)をセットしました。
LEDにその値が出力されています。
W65C02には独立したI/Oロジックはありません。
I/Oもメモリの一部として割り付けます。
基本的にメモリマップのどこにI/Oを割り当てるかは任意です。
このボードではアドレス0200〜02FFをI/Oに割り当てました([第12回])。
回路を簡略化するためにINとOUTには同じ0200〜02FFを割り当てています。
0200〜02FFのどのアドレスでも同じI/Oがセレクトされます。
同じアドレスでもIN回路とOUT回路は物理的にはつながっていません。
W65C02のRWB出力信号がHのときIN回路がセレクトされRWBがLのとき出力回路がセレクトされます。
RWBはメモリおよびI/Oに対してRD/WR_信号として働きます。
上の写真は下のプログラムを実行した後で撮影しました。
これはもっとも簡単なI/Oプログラムです。
        ;w65c02test12 26.7.29
        ;
        ;I/Otest
        ;
        org $8000
        ;
        lda $0200
        sta $0200
        stp
        ;
        ;end

下はW65C02アセンブラでアセンブルした結果生成されたリストファイルです。
0000            ;w65c02test12 26.7.29
0000            ;
0000            ;I/Otest
0000            ;
8000            org $8000
8000            ;
8000 AD0002     lda $0200
8003 8D0002     sta $0200
8006 DB         stp
8007            ;
8007            ;end

ディップスイッチの値を読んでそれをそのままLEDに出力します。
一度実行しただけでストップします。
下はそれを無限ループにしたプログラムです。
こちらはディップスィッチを変化させるとただちにLEDの表示に反映されます。
        ;w65c02test15 26.7.31
        ;
        ;I/Otest
        ;
        org $8000
        ;
        io=$0200
        ;
loop:
        lda io
        sta io
        bra loop
        ;
        ;end

下はアセンブルした結果生成されたリストファイルです。
0000            ;w65c02test15 26.7.31
0000            ;
0000            ;I/Otest
0000            ;
8000            org $8000
8000            ;
8000 0002       io=$0200
8000            ;
8000        loop:
8000 AD0002     lda io
8003 8D0002     sta io
8006 80F8       bra loop
8008            ;
8008            ;end

プログラムの実行を止めるには/STOPコマンドを実行します。

W65C02マイコンボードの製作[第29回]
2026.7.31 upload

前へ
次へ
ホームページトップへ戻る