您的位置 首页 5G

51单片机扩展IO口后扩展口的地址怎么确认

1.然后它说8255的A口、B口、C口、控制寄存器的地址分别为7FFCH、7FFDH、7FFEH、7FFFH。这个是怎么算出来的?高八位7F是因为p2.7为0是选通…

1. 然后它说8255的A口、B口、C口、操控寄存器的地址别离为7FFCH、7FFDH、7FFEH、7FFFH。这个是怎样算出来的?

高八位7F是由于p2.7为0是选通8255的cs片选端,第八位是FC,FD,FE,FF是由8255内部结构决议的,芯片的技能手册上会有,其实也是由最终两位的组合进行挑选

2.在用C51的P0,P2口做外部扩展时运用,其间XBYTE [0x0002],P2口对应于地址高位,P0口对应于地址低位。一般P2口用于操控信号,P0口作为数据通道。
比方:P2.7接WR,P2.6接RD,P2.5接CS,那么就能够确认个外部RAM的一个地址,想往外部RAM的一个地址写一个字节时,地址能够定为XBYTE [0x4000],其间WR,CS为低,RD为高,那便是高位的4,当然其他的能够依据状况自己定,然后经过
XBYTE [0x4000] = 57;
这赋值句子,就能够把57写到外部RAM的0x4000处了,此地址对应一个字节。

个人总结:

以下图为例

P0口接了8根 低地址 地址线

P2口低4位接了4根 高地址 地址线

P2口高3位接了3根 操控信号线 RD WR CS

P2口P2.7没用

这样P0,P2口接的外围设备有12位的 地址线,3根操控线,1根未运用的线,

那么这个外围器材的地址规模是

XXXX 0000 0000 0000-XXXX FFFF FFFF FFFF

XXXX 是从0000-FFFF的16种不同的组合,那么由 XXXX 0000 0000 0000-XXXX FFFF FFFF FFFF组成的地址规模就会有16中不同的表明规模,可是这16中不同的地址表明都是指同以物理地址。这便是 物理地址对应的映射地址不仅有。

例如:0000 0000 0000 0000和1111 0000 0000 0000都是指同一物理地址

0000 0000 0000 0000和0000 0000 0000 0001指的是不同的物理地址

这样XXXX就能够作为操控信号线来运用

假如想对XXXX 0000 0000 0000地址进行RD=0 WR=1 CS=1 这样的操作

RD,WR,CS别离对应P2.4 P2.5 P2.6

X110 0000 0000 0000(X能够是1或许0,这儿选1,那么1110 0000 0000 0000=0xe000)

那么能够经过指令:XBYTE[0xe000]=0 来完成

这句C言语指令的汇编指令如下:

mov dptr,#e000h

mov a,#0h

movx @dptr,a

假如把 X110 0000 0000 0000中X=0,那么 0110 0000 0000 0000=0x6000

那么完成以上操作是:XBYTE[0x6000]=0 来完成

从上面能够看出 最高位 未用的位设置位0或许1没有任何影响,仅仅方法不同罢了,

此处XBYTE[0xe000]=0 和 XBYTE[0x6000]=0 等价

假如想对XXXX 0000 0000 0000地址进行RD=1 WR=0 CS=1 这样的操作

X101 0000 0000 0000=0xc000(X=1) 或许=0x5000(X=0)

指令为XBYTE[0xc000]=0,或许XBYTE[0x5000]=0

假如想对想对XXXX 0000 0000 0000地址进行RD=1 WR=0 CS=1 这样的操作,而且向A0-A12这12位数据线输出数值57,那么指令为:XBYTE[0xc000]=57或许XBYTE[0x5000]=57

假如想对想对XXXX 0000 0000 0001地址进行RD=1 WR=0 CS=1 这样的操作,而且向A0-A12这12位数据线输出数值57,那么指令为:XBYTE[0xc001]=57或许XBYTE[0x5001]=57

3.、程序存储器扩展实例

1、用一片2716芯片扩展2K程序存储器

1)地址线衔接:2716的存储容量为2K*8,需11位地址(A10~A0)进行存储单元的挑选。为此先把芯片的A7~A0与地址锁存器的8位地址输出对应联接,剩余的高位地址(A10~A8)与P2口的P2.2~P2.0相连。这样2716芯片的内存储单元的问题就处理了。

2)数据线的衔接:程序存储器的数据输出引脚到P0口对应衔接。

3)操控信号线的衔接:程序存储器的扩展只涉及到外部存储器选通信号PSEN,此信号与2716的OE端相接,以便进行存储单元的读出选通。

4)片选线的衔接:由于这是一个小规模存储器扩展体系,选用线选法比较便利,为此只需在剩余的高位地址线中选取P2.7作芯片挑选信号与2716的CE端相连即可。

5)扩展芯片的地址规模:

最低地址:当A0~A10取值为0000000000时。

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

最高地址:当A0~A10取值为11111111111时。

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

所以,该联接方法程序存储器的地址规模为:0000H~07FFH、0800H~0FFFH、

1000H~17FFH………

这种地址规模堆叠是线选法自身形成的。因而地址规模的非专一性是线选法的一大缺陷。

A15接的是CE(片选)

当A15=0时:16位二进制地址规模0XXX X000 0000 0000-0XXX X1111 1111 1111

当A15=1时:16位二进制地址规模1XXX X000 0000 0000-1XXX X1111 1111 1111

此处X表明该位可为 0或1 中的恣意值,那么XXXX的规模 0000-1111(16)

那么0XXX X000 0000 0000-0XXX X1111 1111 1111(有16种地址表明)

1XXX X000 0000 0000-1XXX X1111 1111 1111(也有16种地址表明)

这就意味着:

当A15=0时,关于同一物理地址,有16种不同的地址值能够表明(同一地址,地址值不仅有)

相同,当A15=1时,关于同一物理地址,有16种不同的地址值能够表明(同一地址,地址值不仅有)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/266796.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部