16ビットマイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第14回]
●I/O端子の設定(3)
前回からの続きです。
前回書きましたようにI/O回路のセレクト端子としてPCS0を使います。
PCS0などというとなんだかよくわからないような印象を受けますが、Z80のIORQと同じような機能です。
そうそう。
前に説明しましたUCS、LCSはZ80のMREQと同じような機能です。
Z80の場合メモリアクセス命令やI/Oアクセス命令を実行するだけでMREQやIORQがアクティブになりますが、AM188の場合には機能が沢山詰め込まれているだけあって、事前に色々なお膳立てが必要です。
それでそのPCS0をI/O回路のセレクト信号として使うためには、やはりお膳立てが必要です。
ということでやっとプログラムリストの説明に戻ってきました。
下は[第12回]にお見せしたリストのうち、UMCS、LMCSを設定した後からの部分です。
[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,80B8 [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;***** |
Peripheral Control Block Register のアドレスFF78、FFA8、FFA4に値を設定しています。
Peripheral Control Blockについては[第9回]でその一部を紹介しています。
FFA8(オフセットA8)とFFA4(オフセットA4)はその表にありますが、FF78はありません。
下にFF78を含む部分を引用します。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
この表にある6個のレジスタで、32本のPIO端子の有効、無効(機能端子として使う)、I/Oの向きなどを設定します。
PIO DATA1〜PIO MODE1がPIO31〜PIO16の設定用レジスタでPIO DATA0〜PIO MODE0がPIO15〜PIO0の設定用レジスタです。
I/Oセレクト信号のPCS0はPIO16と端子を共用していますので(前回参照)、その設定にはPIO DATA1〜PIO MODE1を使います。
下はPIO Mode Registerの説明です。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
Table 12−2 の表から、Mode RegisterとDirection Registerの各対応するビットを0にするとNomal operationが選択されることがわかります。
今回はPCS0(PIO16)端子をPCS0として使いますから、PIO Mode1 RegisterとPIO Direction1 Registerのビット0をともに0にします。
ということになるのですが、上でお見せしましたプログラムリストではPIO Mode1 Register(FF76)は出てきません。
実は各レジスタにはリセット時に初期値が入れられるのです。
リセット時の初期値については[第6回]で表をお見せしています。
そのうちの関係する部分を再掲します。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
PIOMode1 Registerはリセット時に0000が入れられますから、初期値のまま使えばよいので、初期設定プログラムには出てこないのです。
しかしPIO Direction1 RegisterはFFFFになりますから、ビット0だけは0にする必要があります。
下はPIO Direction Registerの説明です。
[出典]Advanced Micro Devices,Inc. Am186EM and Am188EM Microcontrollers User’s Manual
以上の説明から、PIO Direction1 Register(FF78)にFFFEを書き込んでいます。
[00060] F00E BA78FF MOV DX,FF78;pdir1 [00061] F011 B8FEFF MOV AX,FFFE;pcs0 active [00062] F014 EF OUT DX,AX |
これでPCS0が晴れて使えるようになるかといいますと、これだけではまだ使えません。
もう少し設定する必要があります(なかなかに面倒です)。
次回に続きます。
16ビットマイコンボードの製作[第14回]
2017.1.18upload
前へ
次へ
ホームページトップへ戻る