51單片機(jī)擴(kuò)展IO口后擴(kuò)展口的地址如何確定
高八位7F是因?yàn)閜2.7為0是選通8255的cs片選端,第八位是FC,FD,FE,FF是由8255內(nèi)部結(jié)構(gòu)決定的,芯片的技術(shù)手冊(cè)上會(huì)有,其實(shí)也是由最后兩位的組合進(jìn)行選擇
本文引用地址:http://www.ex-cimer.com/article/201611/315857.htm
2.在用C51的P0,P2口做外部擴(kuò)展時(shí)使用,其中XBYTE [0x0002],P2口對(duì)應(yīng)于地址高位,P0口對(duì)應(yīng)于地址低位。一般P2口用于控制信號(hào),P0口作為數(shù)據(jù)通道。
XBYTE [0x4000] = 57;
這賦值語(yǔ)句,就可以把57寫(xiě)到外部RAM的0x4000處了,此地址對(duì)應(yīng)一個(gè)字節(jié)。
個(gè)人總結(jié):
以下圖為例
P0口接了8根 低地址 地址線(xiàn)
P2口低4位接了4根 高地址 地址線(xiàn)
P2口高3位接了3根 控制信號(hào)線(xiàn) RD WR CS
P2口P2.7沒(méi)用
這樣P0,P2口接的外圍設(shè)備有12位的 地址線(xiàn),3根控制線(xiàn),1根未使用的線(xiàn),
那么這個(gè)外圍器件的地址范圍是
XXXX 0000 0000 0000-XXXX FFFF FFFF FFFF
XXXX 是從0000-FFFF的16種不同的組合,那么由 XXXX 0000 0000 0000-XXXX FFFF FFFF FFFF組成的地址范圍就會(huì)有16中不同的表示范圍,但是這16中不同的地址表示都是指同以物理地址。這就是 物理地址對(duì)應(yīng)的映射地址不唯一。
例如:0000 0000 0000 0000和1111 0000 0000 0000都是指同一物理地址
這樣X(jué)XXX就可以作為控制信號(hào)線(xiàn)來(lái)使用
如果想對(duì)XXXX 0000 0000 0000地址進(jìn)行
那么可以通過(guò)命令:XBYTE[0xe000]=0 來(lái)實(shí)現(xiàn)
這句C語(yǔ)言命令的匯編命令如下:
mov dptr,#e000h
mov a,#0h
movx @dptr,a
如果把 X110 0000 0000 0000中X=0,那么 0110 0000 0000 0000=0x6000
那么實(shí)現(xiàn)以上操作是:XBYTE[0x6000]=0 來(lái)實(shí)現(xiàn)
從上面可以看出 最高位 未用的位設(shè)置位0或者1沒(méi)有任何影響,只是形式不同而已,
此處XBYTE[0xe000]=0 和 XBYTE[0x6000]=0 等價(jià)
如果想對(duì)XXXX 0000 0000 0000地址進(jìn)行
X101 0000 0000 0000=0xc000(X=1) 或者=0x5000(X=0)
命令為XBYTE[0xc000]=0,或者XBYTE[0x5000]=0
如果想對(duì)想對(duì)XXXX 0000 0000 0000地址進(jìn)行
如果想對(duì)想對(duì)XXXX 0000 0000 0001地址進(jìn)行
3.、程序存儲(chǔ)器擴(kuò)展實(shí)例
1、用一片2716芯片擴(kuò)展2K程序存儲(chǔ)器
1)地址線(xiàn)連接:2716的存儲(chǔ)容量為2K*8,需11位地址(A10~A0)進(jìn)行存儲(chǔ)單元的選擇。為此先把芯片的A7~A0與地址鎖存器的8位地址輸出對(duì)應(yīng)聯(lián)接,剩下的高位地址(A10~A8)與P2口的P2.2~P2.0相連。這樣2716芯片的內(nèi)存儲(chǔ)單元的問(wèn)題就解決了。
2)數(shù)據(jù)線(xiàn)的連接:程序存儲(chǔ)器的數(shù)據(jù)輸出引腳到P0口對(duì)應(yīng)連接。
3)控制信號(hào)線(xiàn)的連接:程序存儲(chǔ)器的擴(kuò)展只涉及到外部存儲(chǔ)器選通信號(hào)PSEN,此信號(hào)與2716的OE端相接,以便進(jìn)行存儲(chǔ)單元的讀出選通。
4)片選線(xiàn)的連接:因?yàn)檫@是一個(gè)小規(guī)模存儲(chǔ)器擴(kuò)展系統(tǒng),采用線(xiàn)選法比較方便,為此只需在剩下的高位地址線(xiàn)中選取P2.7作芯片選擇信號(hào)與2716的CE端相連即可。
5)擴(kuò)展芯片的地址范圍:
最低地址:當(dāng)A0~A10取值為0000000000時(shí)。
A15 P2.7 | A14 P2.6 | A13 P2.5 | A12 P2.4 | A11 P2.3 | A10 P2.2 | A9 P2.1 | A8 P2.0 | A7 P0.7 | A6 P0.6 | A5 P0.5 | A4 P0.4 | A3 P0.3 | A2 P0.2 | A1 P0.1 | A0 P0.0 |
0 | X | X | X | X | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 . 1 | 0 . 1 | 0 . 1 | 0 . 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0000H、0800H、1000H、1800H、2000H、2800H、…..7800H、7FFFH |
最高地址:當(dāng)A0~A10取值為11111111111時(shí)。
A15 P2.7 | A14 P2.6 | A13 P2.5 | A12 P2.4 | A11 P2.3 | A10 P2.2 | A9 P2.1 | A8 P2.0 | A7 P0.7 | A6 P0.6 | A5 P0.5 | A4 P0.4 | A3 P0.3 | A2 P0.2 | A1 P0.1 | A0 P0.0 |
0 | X | X | X | X | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
0 | 0 . 1 | 0 . 1 | 0 . 1 | 0 . 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
07FFH、0FFFH、17FFH、17FF H、27FFH、2FFFH…..7FFFH |
所以,該聯(lián)接方式程序存儲(chǔ)器的地址范圍為:0000H~07FFH、0800H~0FFFH、
1000H~17FFH………
這種地址范圍重疊是線(xiàn)選法本身造成的。因此地址范圍的非惟一性是線(xiàn)選法的一大缺點(diǎn)。
A15接的是CE(片選)
當(dāng)A15=0時(shí):16位二進(jìn)制地址范圍0XXX X000 0000 0000-0XXX X1111 1111 1111
當(dāng)A15=1時(shí):16位二進(jìn)制地址范圍1XXX X000 0000 0000-1XXX X1111 1111 1111
此處X表示該位可為 0或1 中的任意值,那么XXXX的范圍 0000-1111(16)
那么0XXX X000 0000 0000-0XXX X1111 1111 1111(有16種地址表示)
這就意味著:
同樣,當(dāng)A15=1時(shí),對(duì)于同一物理地址,有16種不同的地址值可以表示(同一地址,地址值不唯一)
評(píng)論