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


16ビットマイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第15回]


●I/O端子の設定(4)

前回からの続きです。
前回も書きましたようにI/O回路のセレクト端子としてPCS0を使います。
前回はそのPCS0を利用可能にするためにPIO Direction1 Register(FF78)を設定しました。
しかしそれだけではPCS0はアクティブにすることができません。
次はアドレスFFA8のレジスタを設定します。

[00060] F00E  BA78FF            MOV DX,FF78;pdir1
[00061] F011  B8FEFF            MOV AX,FFFE;pcs0 active
[00062] F014  EF                OUT DX,AX
[00063] F015  BAA8FF            MOV DX,FFA8;mpcs
[00064] F018  B8B880            MOV AX,80BF
[00065] F01B  EF                OUT DX,AX
[00066] F01C  BAA4FF            MOV DX,FFA4;pacs
[00067] F01F  B87608            MOV AX,0876;i/o base address=8000
[00068] F022  EF                OUT DX,AX
[00069] F023  BA8380            MOV DX,8083;**** 82c55
[00070] F026  B080              MOV AL,80;**** all port out
[00071] F028  EE                OUT DX,AL;****
[00072] F029  8CC8              MOV AX,CS;*****
[00073] F02B  BA8080            MOV DX,8080;*****
[00074] F02E  EF                OUT DX,AX;*****

前回お見せしましたリストではFFA8に80B8を書き込んでいましたが、この記事を書くためにもう一度Manualを読み直してみましたら、意味の無いことをやっているように思えましたので、そこのところをはっきりさせるために、80B8ではなくて80BFを書き込むように変更しました(この場合にはどちらでも構いません)。
アドレスFFA8は PCS and MCS Auxiliary Register (MPCS register)です。
PCSとMCSの補助レジスタとでも訳すのでしょうか。
下の引用文を見ますと前に説明しましたUMCSやLMCSと同様にチップセレクト端子を設定するレジスタ群の1つのようです。


[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual

Table5−1を見ますと今回説明するMPCSのほかに、その後で説明する予定のPACS(オフセットアドレスA4)があります。
どちらもAffected PinsのところにPCS0がありますので、いずれもPCS0を使うためには設定が必要であることがわかります。

下はPCS and MCS Auxiliary Register (MPCS register)の説明です。

[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual

なんだかごちゃごちゃ書いてありますが、実際のところPCS0を使うために必要な設定はBit6のみです。
Bit6を1にするとPCS端子はMemory mapped I/Oとして働き、0にするとI/O mappedになります。
当然I/O mappedで使いますから、Bit6は0にします。
他のビットは今のところはどうでもよい設定ですから、M6−M0はオール0にするのと、ビット6を0にするほかは1にしておきます。
Table5−4にはM6−M0を0000000にする選択肢はないようですが、MCSは使う予定がありませんから、0000000にしておきます。
2ビット以上を1にするとMCS端子に予測できないこと(unpredictable operation)がおきる、と書いてあります。
まあMCS端子は使いませんから、どのみち影響はないのかも知れませんが。

そんなわけで、PCS and MCS Auxiliary Register (MPCS)(FFA8)に80BFを書き込んでいます。

[00063] F015  BAA8FF            MOV DX,FFA8;mpcs
[00064] F018  B8B880            MOV AX,80BF
[00065] F01B  EF                OUT DX,AX

このあとまだPACS registerの設定が必要です(本当に面倒なことです)。

次回に続きます。

16ビットマイコンボードの製作[第15回]
2017.1.20upload

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