[新連載開始]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
前へ
次へ
ホームページトップへ戻る