51单片机扩展IO口后扩展口的地址如何确定

发布者:之敖赵先生最新更新时间:2016-09-12 来源: eefocus关键字:51单片机  扩展IO口  扩展口  地址 手机看文章 扫描二维码
随时随地手机看文章
 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处了,此地址对应一个字节。

个人总结:

以下图为例

51单片机中XTYBE的使用及外围设备扩展地址编址的方法

 

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程序存储器

51单片机中XTYBE的使用及外围设备扩展地址编址的方法

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种不同的地址值可以表示(同一地址,地址值不唯一)

关键字:51单片机  扩展IO口  扩展口  地址 引用地址:51单片机扩展IO口后扩展口的地址如何确定

上一篇:51单片机普通定时器时钟参考程序
下一篇:51单片机频率的计算

推荐阅读最新更新时间:2024-03-16 15:09

如何用51单片机实现交通信号灯
实验环境 软件: Keil5+Proteus7 元件(主要): AT89C51 * 1, BUTTON * 1, 7SEG-MPX2-CA * 1, LED-GREEN * 8, LED-RED * 4, LED-YELLOW * 4 实验原理 7SEG-MPX2-CA数码管 7SEG-MPX2-CA数码管是一个两位数的阳极数码管,有10个针脚,通过标号a-dp八个针脚控制,LED灯的显示,通过标号为1,2的针脚控制显示的是个位或是十位的数码管。 要通过数码管显示具体数字,7SEG-MPX2-CA由于是一个阳极的数码管,所以需要接收在针脚上接收相应的低电平来显示,如如果要显示数字0,则标号a-dp的针脚需要接收1100 0000也
[单片机]
s3c2440裸机-内存控制器(二、不同位宽外设与CPU地址总线的连接)
不同位宽设备的连接 我们先看一下2440芯片手册上外设rom是如何与CPU地址总线连接的。 8bit rom与CPU地址线的连接 8bit*2 rom与CPU地址线的连接 8bit*4 rom与CPU地址线的连接 16bit rom与CPU地址线的连接 16bit*2 rom与CPU地址线的连接 从上面的图中,我们知道可以对2片位宽为8bit的外设扩展级联成1个16bit的外设,同理可用4片位宽为8bit的外设进行级联成1个32bit的外设... 从上面的图中,我们还看见一个规律: 当外设总线位宽为8bit时, 外设A0接CPU的地址总线ADDR , A - ADDR ...A - ADDR 当外设总线
[单片机]
s3c2440裸机-内存控制器(二、不同位宽外设与CPU<font color='red'>地址</font>总线的连接)
51单片机之继电器实验
一、继电器(relay)的工作原理和特性 当输入量(如电压、电流、温度等)达到规定值时,使被控制的输出电路导通或断开的电器。可分为电气量(如电流、电压、频率、功率等)继电器及非电气量(如温度、压力、速度等)继电器两大类。具有动作快、工作稳定、使用寿命长、体积小等优点。广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。 继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定
[单片机]
<font color='red'>51单片机</font>之继电器实验
直接通过寄存器地址操作控制LED灯(STM32_01)
一、硬件基础 1、开发板:STM32-PZ6806L 2、MCU型号:STM32F103ZET6 (1)内核:32位 高性能ARM Cortex-M3处理器。时钟:高达72M,实际还可以超频一点。单周期乘法和硬件除法。 (2)IO口:STM32F103ZET6: 144引脚 112个IO,大部分IO口都耐5V(模拟通道除外),支持调试:SWD和JTAG,SWD只要2根数据线 (3)存储器容量:512K FLASH,64K SRAM (4)时钟,复位和电源管理: ① 2.0~3.6V电源和IO电压 ② 上电复位,掉电复位和可编程的电压监控 ③ 强大的时钟系统 -4~16M的外部高
[单片机]
直接通过寄存器<font color='red'>地址</font>操作控制LED灯(STM32_01)
51单片机的状态机消抖
下午把状态机无延时按键消抖弄到51单片机上面,下面晒一下程序: #include reg52.h enum State {Init, Press, Free}; //定义按键状态的枚举类型 enum State Key_State; //按键状态 sbit Key1 = P2^4; sbit Key2 = P2^5; sbit Key3 = P2^6; sbit Key4 = P2^7; void Delay_ms(unsigned int x) { int i,j; for(i=0; i 110; i++) for(j=0; j x; j++) ; } //=======
[单片机]
80C51单片机的功能结构与引脚性能
本文着手从集成电路角度去认识单片机,主要介绍了单片机的引脚图及引脚功能,以及单片机简易编程。 首先,先看下80C51单片机的功能结构框图。 80C51单片机属于MCS-51系列单片机,采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。 80C51单片机的功能结构框图 下面介绍一下单片机的引脚图及引脚功能(如下图所示),引脚的具体功能将在之后详细介绍。 单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 1. 电源: ⑴ VCC -芯片电源,接+5V; ⑵ VSS - 接地端; 2. 时钟: XTAL1、XTAL2 - 晶体振荡电路反相输入端
[单片机]
80C<font color='red'>51单片机</font>的功能结构与引脚性能
51单片机STC15W408AS驱动无感无刷电机BLDC
看到很多人在用C8051做无感无刷电机的驱动,今天瑞生给大家来个国产51单片机STC15W408AS驱动无刷电机的驱动资料吧! 1.硬件设计 主控单片机使用STC15W408AS,单片机自带硬件PWM模块、ADC模块和比较器模块,所以非常适合做无刷电机的驱动,主频35M,无需外部晶振和复位电路,接好VCC和GND就可以工作。半桥电路使用PMOS+NMOS的组合,PMOS为IRF9540,NMOS为IRF540.驱动芯片用TC4427A。 先在洞洞板上做实验吧。原理图如下所示,懒得用软件画了,还是手画来得快些。下面的图中,只画出了A相的桥,B相和C相的桥与A相一样。 依照原理图,焊接好的板子如下图所示: 2.软件设计 2
[单片机]
<font color='red'>51单片机</font>STC15W408AS驱动无感无刷电机BLDC
89C51单片机的I/O 模拟串行通信实现
目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。 MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS5
[单片机]
89C<font color='red'>51单片机</font>的I/O <font color='red'>口</font>模拟串行通信实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved