STC89C52单片机存储器扩展ppt课件

上传人:钟*** 文档编号:5844449 上传时间:2020-02-09 格式:PPT 页数:87 大小:5.66MB
返回 下载 相关 举报
STC89C52单片机存储器扩展ppt课件_第1页
第1页 / 共87页
STC89C52单片机存储器扩展ppt课件_第2页
第2页 / 共87页
STC89C52单片机存储器扩展ppt课件_第3页
第3页 / 共87页
点击查看更多>>
资源描述
8 1系统扩展结构8 2地址锁存与地址空间分配8 3程序存储器的扩展8 4数据存储器的扩展8 5EPROM和RAM的综合扩展 第八章STC89C52单片机存储器的扩展 8 1系统扩展结构 STC89C52单片机属于总线型结构 片内各功能部件都是按总线关系设计并集成为整体的 为减少连接线 简化组成结构 可把具有共性的连线归并成一组公共连线 即总线 传送信息的公共通道 BUS 单片机系统扩展主要包括存储器扩展和I O接口部件扩展 三总线 地址总线 AB 数据总线 DB 控制总线 CB STC89C52单片机与外部设备连接有两种方式 第8章单片机接口技术 I O口方式 非总线方式 总线方式 STC89C52单片机没有专用总线引脚 而是采用了I O引脚兼作总线引脚的方案 I O口方式 采用片内RAM指令访问外设例如 MOVA P0 总线方式 采用片外RAM指令访问外设例如 MOVXA DPTR 片外RAM0 0FFFFH STC89C52单片机的存储器扩展即包括程序存储器扩展又包括数据存储器扩展 AT89S51单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构 扩展后 系统形成了两个并行的外部存储器空间 数据总线 P0口地址总线 P0 P2控制总线 P3口 控制引脚 STC89C52为减少引脚数量 采用了复用P0口方案 即P0口兼作数据线和低8位地址线 为了将地址和数据信息区分开来 需要在P0口外部增加地址锁存器 即将地址信息的低8位锁存后输出 使用的控制信号如下 作为外扩程序存储器的读选通控制信号 和为外扩数据存储器和I O的读 写选通控制信号 ALE作为P0口发出的低8位地址锁存控制信号 为片内外程序存储器的选择控制信号 STC89C52RC的4个并行I O口 由于系统扩展的需要 能够真正作为数字I O使用 就剩下P1和P3的部分口线了 8 2地址锁存与地址空间分配8 2 1地址锁存目前 常用的地址锁存器芯片有74LS373 74HC373 74LS573等 在每个机器周期 ALE两次有效 可以利用地址锁存器在ALE的下降沿将P0口输出的地址信息锁存 当ALE转为低电平时 P0输出8位数据信息 1 锁存器74LS373 带有三态输出门的8D触发器 结构 内部由8路D触发器和8个三态缓冲器组成 原理 OE端为低电平时 D端信号在G端正脉冲作用下实现 接通 锁存 隔离 功能 74LS373的引脚 373功能表 引脚说明 D7 D0 8位数据输入线 Q7 Q0 8位数据输出线 G 数据输入锁存选通信号 当加到该引脚的信号为高电平时 外部数据选通到内部锁存器 负跳变时 数据锁存到锁存器中 数据输出允许信号 低电平有效 当该信号为低电平时 三态门打开 锁存器中数据输出到数据输出线 当该信号为高电平时 输出线为高阻态 373的工作过程 1 P0口先将低8位地址信号锁存在373中 2 373的输出端与输入端 P0口 隔离 3 P0口输出8位数据信号 P2口输出高8位地址信号 373输出低8位地址信号 同时产生16位地址信号 8位数据信号 STC89C52单片机P0口与74LS373的连接 2 锁存器74LS573是一种带有三态门的8D锁存器 功能及内部结构与74LS373完全一样 只是其引脚排列与74LS373不同 与74LS373相比 74LS573的输入D端和输出Q端依次排列在芯片两侧 为绘制印制电路板提供方便 8 2 2地址空间分配 实际系统设计中 既需要扩展程序存储器 又需要扩展数据存储器 如何把片外的两个64KB地址空间分配给各个程序存储器 数据存储器芯片 使一个存储单元只对应一个地址 避免单片机发出一个地址时 同时访问两个单元 发生数据冲突 这就是存储器地址空间分配问题 STC89C52单片机发出的地址码用于选择某个存储器单元 在这个过程中单片机必须进行两种选择 一是选中该存储器芯片 称为 片选 未被选中的芯片不能被访问 二是在 片选 的基础上再根据单片机发出的地址码来对 选中 芯片的某一单元进行访问 即 单元选择 为实现片选 存储器芯片都有片选引脚 同时也都有多条地址线引脚 以便进行单元选择 注意 片选 和 单元选择 都是单片机通过地址线一次发出的地址信号来完成选择的 本书讲解时把单片机系统的地址线笼统地分为低位地址线和高位地址线 片选都是使用高位地址线 实际上 16条地址线中的高 低位地址线的数目并不是固定的 只是习惯上把用于 单元选择 的地址线 都称为低位地址线 其余的为高位地址线 常用的存储器地址空间分配方法有两种 线性选择法 简称线选法 和地址译码法 简称译码法 1 线选法 一般只适用于外扩少量的片外存储器和I O接口芯片 线选法是指直接利用单片机系统的某一高位地址线作为存储器芯片 或I O接口芯片 的 片选 控制信号 为此 只需要把用到的高位地址线与存储器芯片的 片选 端直接连接即可 线选法的优点是电路简单 不需要另外增加地址译码器硬件电路 体积小 成本低 缺点是可寻址的芯片数目受到限制 芯片之间地址不连续 地址空间没有充分利用 2 译码法 适合于多芯片扩展 使用译码器对AT89S51单片机的高位地址进行译码 译码输出作为存储器芯片的片选信号 译码法的优点是能够有效地利用存储器空间 常用的译码器芯片有74LS138 74LS139和74LS154 若全部高位地址线都参加译码 称为全译码 若仅部分高位地址线参加译码 称为部分译码 部分译码存在着部分存储器地址空间相重叠的情况 1 74LS1383线 8线译码器 有3个数据输入端 经译码产生8种状态 138真值表 当一个选通端为G1为高电平 且另外两个选通端和为低电平时 可将输入端C B A的二进制编码在一个对应的引脚输出端以低电平译出 其余引脚输出均为高电平 此时 可将输出为低电平的引脚作为某一存储器芯片的片选信号 2 74LS139 双2线 4线译码器 这两个译码器完全独立 分别有各自的数据输入端 译码状态输出端以及数据输入允许 例 若需外扩8片8KB的RAM6264 如何通过74LS138把64KB空间分配给各个芯片 P2 7 P2 6 P2 5 高3位地址线 分别接74LS138的C B A端 由于对高3位地址译码 这样译码器有8个输出分别接到8片6264的各 片选 端 实现8选1的片选 低13位地址 P2 4 P2 0 P0 7 P0 0 完成对选中的6264芯片中的各个存储单元的 单元选择 全地址译码 地址有重叠吗 在本例中 如果将接到一片6116 芯片容量只有2KB 那么E000H E7FFH E800H EFFFH F000H F7FFH F800H FFFFH这4个2KB空间都对应6116芯片 也就是说 即使采用全地址译码法 也仍然会有地址重叠现象 采用译码器划分的地址空间块都是相等的 如果将地址空间块划分为不等的块 可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码 8 3程序存储器的扩展外部程序存储器的种类单一 常采用只读存储器 只读存储器简称ROM ReadOnlyMemory ROM中的信息一旦写入 就不能随意更改 特别是不能在程序运行过程中写入新的内容 ROM在电源关断后 仍能保存程序 我们称此特性为非易失性的 在系统上电后 CPU可取出这些指令重新执行 向ROM中写入信息称为ROM编程 根据编程方式不同 分为以下几种 1 掩模ROM 在制造过程中编程 是以掩模工艺实现的 因此称为掩模ROM 这种芯片存储结构简单 集成度高 但由于掩模工艺成本较高 因此只适合于大批量生产 2 可编程ROM PROM 芯片出厂时没有任何程序信息 用独立的编程器写入 但PROM只能写一次 写入内容后 就不能再修改 3 EPROM 用紫外线擦除 用电信号编程 在芯片外壳的中间位置有一个圆形窗口 对该窗口照射紫外线就可擦除原有的信息 使用编程器可将调试完毕的程序写入 4 E2PROM EEPROM 一种用电信号编程 也用电信号擦除的ROM芯片 对E2PROM的读写操作与RAM存储器几乎没有什么差别 只是写入的速度慢一些 但断电后仍能保存信息 5 FlashROM 又称闪速存储器 简称闪存 是在EPROM E2PROM的基础上发展起来的一种电擦除型只读存储器 特点是可快速在线修改其存储单元中的数据 改写次数可达1万次 其读写速度很快 存取时间可达70ns 而成本比E2PROM低得多 大有取代E2PROM的趋势 由于超大规模集成电路制造工艺的发展 芯片集成度愈来愈高 扩展程序存储器时使用的ROM芯片数量越来越少 因此芯片的选择多采用线选法 而地址译码法用的渐少 并且目前许多单片机生产厂家生产的8051内核的单片机 在芯片内部集成了数量不等的FlashROM 如STC89C51RC RD 系列单片机内部集成了8KB 64KB的FlashROM 能满足绝大多数用户的需要 性价比高 在片内集成的FlashROM满足要求的情况下 用户没有必要再扩展外部程序存储器 8 3 1外扩程序存储器的操作时序STC89C52单片机访问片外扩展的程序存储器时 所用的控制信号有以下3种 1 ALE 用于低8位地址锁存控制 2 片外程序存储器 读选通 控制信号 它接外扩EPROM的引脚 3 片内 片外程序存储器访问的控制信号 当 1时 在单片机发出的地址小于片内程序存储器最大地址时 访问片内程序存储器 当 0时 只访问片外程序存储器 扩展的片外RAM的最大容量也为64KB 地址为0000H FFFFH 但由于STC89C52采用不同的控制信号和指令 CPU对ROM的读操作由控制 指令用MOVC类 CPU对RAM读 写操作分别用和控制 指令用MOVX 所以 尽管ROM与RAM的地址是重叠的 也不会发生混乱 STC89C52对片外ROM的操作时序分两种 即执行非MOVX指令的时序和执行MOVX指令的时序 1 应用系统无片外RAM P0口作为地址 数据复用的双向总线 用于输入指令或输出程序存储器的低8位地址PCL P2口专门用于输出程序存储器的高8位地址PCH P0口分时复用 故首先要将P0口输出的低8位地址PCL锁存在锁存器中 然后P0口再作为数据口 在每个机器周期中 允许地址锁存两次有效 ALE在下降沿时 将P0口的低8位地址PCL锁存在锁存器中 1001H M0VA R0 E8H1002H MOVR1 A F9H 不执行MOVX类指令时 地址 E8H F9H 10 01H 10 02H 代码 程序存储器 不执行MOVX类指令时 地址 代码 程序存储器 PSEN 1001H M0VA R0 E8H1002H MOVR1 A F9H 不执行MOVX指令 P2口专门用于输出PCH中的内容 它可直接与外部存储器的地址线相连 P0口除了输出PCL中的内容外 还要输入指令 所以 必须用ALE信号锁存PCL 同时 PSEN也是每个机器周期中两次有效 用于选通片外程序存储器 将指令读入片内 2 应用系统扩展了片外RAM在执行访问片外RAM 或I O 的MOVX指令时 16位地址应转而指向数据存储器 在指令输入以前 P2口输出的地址PCH PCL指向程序存储器 在指令输入并判定是MOVX指令后 ALE在该机器周期S5状态锁存的是P0口发出的片外RAM 或I O 低8位地址 若执行的是 MOVXA DPTR 或 MOVX DPTR A 指令 则此地址就是DPL 数据指针低8位 同时 在P2口上出现的是DPH 数据指针的高8位 若执行的是 MOVXA Ri 或 MOVX Ri A 指令 则Ri的内容为低8位地址 而P2口线上将是P2口锁存器的内容 ORG1000HMOVDPTR 6001HMOVXA DPTR2个机器周期ROM片外RAM指令地址代码地址数据1000H90H6001H09H1001H60H1002H01H1003HE0H ROM 10 03 E0 地址 代码 片外RAM 地址 数据 60 01 09 M0VXA DPTR 机器周期S5状态锁存的是P0口发出的片外RAM 或I O 低8位地址 若执行的是 MOVXA DPTR 或 MOVX DPTR A 指令 则此地址就是DPL 数据指针低8位 同时 在P2口上出现的是DPH 数据指针的高8位 若执行的是 MOVXA Ri 或 MOVX Ri A 指令 则Ri的内容为低8位地址 而P2口线上将是P2口锁存器的内容 在同一机器周期中将不再出现有效取指信号 下一个机器周期中ALE的有效锁存信号也不再出现 当 有效时 P0口将读 写数据存储器中的数据 36 8 3 2程序存储器的扩展方法1 常用的EPROM芯片程序存储器的扩展使用比较多的是与单片机的连接为并行接口的EPROM EPROM的典型芯片是27系列产品 型号 27 后面的数字表示其位存储容量 如果换算成字节容量 只需将该数字除以8即可 例如 27128 中的 27 后的数字 128 对应16KB的字节容量 随着大规模集成电路技术的发展 大容量存储器芯片产量剧增 售价不断下降 性价比明显增高 且由于小容量芯片停止生产 使市场某些小容量芯片价格反而比大容量芯片还贵 所以 应尽量采用大容量芯片 目前常用的EPROM芯片有2764 8KB 27128 16KB 27256 32KB 27512 64KB 常用EPROM芯片引脚定义 芯片引脚功能 A0 A15 地址线引脚 其数目由芯片的存储容量决定 用于进行单元选择 D7 D0 数据线引脚 片选控制端 输出允许控制端 编程时 编程脉冲的输入端 VPP 编程时 编程电压 12V或 25V 输入端 VCC 5V 芯片的工作电压 GND 数字地 NC 无用端 2764 27128的差别仅在26引脚 2764的26脚是空脚 27128的26脚是地址线A13 在设计外扩存储器电路时 应选用27128芯片设计电路 在实际应用时 可将27128换成2764 系统仍能正常运行 EPROM芯片一般有读出 未选中 编程 程序校验 编程禁止等5种工作方式 这5种工作方式 由 信号的组合确定 1 读出方式 工作在该方式的条件是使片选控制线为低电平 同时让输出允许控制线为低电平 VPP为 5V 就可把指定地址单元的内容从D7 D0上读出 2 未选中方式 当片选控制线为高电平时 芯片未选中方式 数据输出为高阻抗悬浮状态 不占用数据总线 EPROM处于低功耗的维持状态 3 编程方式 在VPP端加上规定好的高压 和端加上合适的电平 不同芯片要求不同 能将数据写入到指定地址单元 编程地址和编程数据分别由系统的A15 A0和D7 D0提供 4 编程校验方式 VPP端保持相应的编程电压 高压 再按读出方式操作 读出固化好的内容 校验写入内容是否正确 5 编程禁止方式 2 STC89C52单片机与EPROM的接口电路设计由于STC89C51RC RD 系列单片机内部集成了8KB 64KB的FlashROM 所以在设计中 可根据实际需要来决定是否外部扩展EPROM 当系统的应用程序不大于单片机片内的FlashROM容量时 扩展外部程序存储器的工作可省略 但是作为扩展外部程序存储器的基本方法 读者还是应该掌握 由于外扩的EPROM在正常使用中只读不写 故EPROM芯片只有读出控制引脚 该引脚与STC89C52单片机的相连 单片EPROM扩展 可不需要考虑片选问题 27128的片选端直接接地 当然也可接到某一高位地址线上 A15或A14 进行线选或接某一地址译码器的输出端 例 采用译码法扩展4片27128EPROM 1 27128的容量为16KB 214 片内地址线有14条 2 将高位剩余的2条地址线P2 7 P2 6接到74LS139译码器的输入端A B 译码器使能端直接接地 输出端 分别接到4片27128的片选端 片选信号由译码器产生 若此时P2 7 0 P2 6 0 选中IC1 地址线A15 A0与P2 P0对应关系如下 STC89C52单片机与4片27128EPROM的接口电路 3 单片机片外程序区读指令的过程单片机上电复位后 CPU就从系统启动地址0000H开始取指令 执行程序 取指令期间 低8位地址送P0口 经锁存器A0 A7输出 高8位地址送往P2口 直接由P2 0 P2 5锁存到A8 A13地址线上 P2 7 P2 6作为74LS139译码输入产生片选控制信号 这样 根据P2口 P0口状态则选中第一个程序存储器芯片IC1 27128 的第一个单元地址0000H 然后当变为低时 把0000H中指令代码经P0口读入内部RAM中进行译码 从而决定进行何种操作 在取出一个指令字节后 PC自动加1 然后取第二个字节 依次类推 当PC 3FFFH时 从IC1最后一个单元取指令 然后PC 4000H CPU向P2口 P0口送出4000H地址时 则选中第二个程序存储器IC2 IC2的地址范围为4000H 7FFFH 读指令过程同IC1 8 4数据存储器的扩展STC89C52单片机内部仅有512B的数据存储器 可用于存放程序执行的中间结果和过程数据 这512B的内部数据存储器包含256B的内部RAM和256B的内部扩展RAM 内部扩展的256BRAM在物理上属内部 而在逻辑上属外部 在系统需要大量数据缓冲的场合 如语言系统 商场收费POS 中 可以通过在外部扩展较大容量的静态随机存储器 SRAM 或FlashROM扩充系统的数据储存能力 扩展的最大容量为64KB 地址为0000H FFFFH 当设置特殊功能寄存器AUXR 地址为8EH 的EXTRAM位为0时 在00H到FFH单元 256B 使用MOVX DPTR指令访问的是内部扩展的RAM 超过0FFH的地址空间将访问外部扩展的RAM 而采用MOVX Ri只能访问片内扩展的00H到FFH单元 有些应用系统在外部扩展了I O或者使用片选去选择多个RAM区时 与内部扩展的RAM逻辑地址上有时会冲突 这时可以将EXTRAM设置为 1 禁止访问此内部扩展的EXTRAM 此时MOVX DPTR MOVX Ri的使用和普通8052单片机相同 8 4 1外扩数据存储器的读写操作时序扩展RAM和扩展ROM类似 由P2口提供高8位地址 P0口分时地作为低8位地址线和8位双向数据总线 片外RAM的读和写由STC89C52的 P3 7 和 P3 6 信号控制 尽管与EPROM的地址重叠 但由于控制信号不同 片外程序存储器EPROM的输出端允许由单片机的读选通信号控制 而不会发生总线冲突 STC89C52单片机对片外RAM的读和写两种操作时序的基本过程是相同的 1 读片外扩展RAM操作时序 在第一个机器周期的S1状态 ALE信号由低变高 见 处 读RAM周期开始 在S2状态 CPU把低8位地址 DPL内容 送到P0口总线上 把高8位地址 DPH内容 送上P2口ALE下降沿 见 处 用来把低8位地址信息锁存到外部锁存器74LS373内 而高8位地址信息一直锁存在P2口锁存器中 见 处 在S3状态 P0口总线变成高阻悬浮状态 在S4状态 执行指令 MOVXA DPTR 后使信号变有效 见 处 信号使被寻址的片外RAM把数据送上P0口总线 见 处 当回到高电平后 处 P0总线变为悬浮状态 ORG1000H1000H MOVDPTR 3003H1003H MOVR0 60H1005H MOVXA DPTRROM片外RAM地址指令代码地址数据1005HE0H3003H07H 30 03 07 1 读周期开始 2 4 5 读有效 7 8 地址 数据 ACC 片外RAM 2 写片外扩展RAM操作时序单片机执行 MOVX DPTR A MOVX Ri A 指令 向片外RAM写数据 在单片机执行这条指令后 STC89C52的信号为低有效 此信号使RAM的端被选通 写片外RAM的时序如图所示 开始的过程与读过程类似 但写的过程是CPU主动把数据送上P0口总线 故在时序上 CPU先向P0口总线上送完8位地址后 在S3状态就将数据送到P0口总线 处 此间 P0总线上不会出现高阻悬浮现象 在S4状态 写信号有效 处 选通片外RAM 之后 P0口上的数据就写到RAM内了 然后写信号变为无效 处 MOVDPTR 3004HMOVA 45HMOVX DPTR AROM片外RAM指令地址代码地址数据1004HE0H3004H00H 片外RAM的写时序 MOVX DPTR A 片外RAM 地址 数据 30 04H 1 2 3 A 45 4 5 00 DPH DPL 30 04 6 8 4 2数据存储器扩展方法1 常用的静态RAM SRAM 芯片在单片机应用系统中 外部扩展的数据存储器多采用SRAM 但SRAM不具备数据掉电保护的特性 目前 常用的SRAM芯片有6116 2KB 6264 8KB 62128 16KB 62256 32KB 等 它们都采用单一 5V电源供电 双列直插封装 除6116为24脚封装外 6264 62128 62256均为28脚封装 各引脚功能 A0 A14 地址输入线 D0 D7 双向三态数据线 片选信号输入线 对6264芯片 当24脚 CS 为高电平且片选信号为低电平时才选中该片 读选通信号输入线 低电平有效 写允许信号输入线 低电平有效 VCC 工作电源 5V GND 地 RAM存储器有读出 写入 维持3种工作方式 工作方式的控制如下 2 STC89C52单片机与SRAM的接口电路设计STC89C52对片外RAM的读和写由 P3 7 和 P3 6 控制 片选端由地址译码器译码的译码输出控制 因此设计时 主要解决地址分配 数据线和控制信号线的连接问题 在与高速单片机连接时 还要根据时序解决读 写速度匹配问题 例 用线选法扩展STC89C52外部数据存储器电路 由于数据存储器选用6264 8K 8 该芯片地址线为A0 A12 故STC89C52剩余地址线为3条 用线选法可扩展3片6264 3片6264对应的存储器空间 例 用译码法扩展外部数据存储器的接口电路 若数据存储器采用4片62128 16K 8 芯片地址线为A0 A13 高位剩余2条地址线 若采用2 4线译码器可扩展4片62128 4片62128芯片的地址空间分配表 3 单片机片外数据区读 写数据过程例如 把片外4000H单元的数据送到片内RAM50H单元中 程序如下 AUXRDATA8EHMOVAUXR 000000010 第四章PPT40页MOVDPTR 4000HMOVXA DPTRMOV50H A 先把寻址地址4000H送到DPTR中 当执行 MOVXA DPTR 时 DPTR的低8位 00H 经P0口输出并锁存 高8位 40H 经P2口直接输出 根据P0口 P2口状态选中IC2的4000H单元 当单片机读选通信号为低电平时 片外4000H单元的数据经P0口送往累加器A 当执行指令 MOV50H A 写入片内RAM50H单元 例如 把片内60H单元的数据送到片外8000H单元中 程序如下 AUXRDATA8EHMOVAUXR 000000010MOVA 60HMOVDPTR 8000HMOVX DPTR A 先把片内RAM60H单元的数据送到A中 第2条指令把寻址地址8000H送到数据指针寄存器DPTR中 当执行 MOVX DPTR A 时 DPTR的低8位 00H 由P0口输出并锁存 高8位 80H 由P2口直接输出 根据P0口 P2口状态选中IC3 6264 的8000H单元 当写选通信号有效时 A中的内容送往片外RAM8000H单元 单片机读写片外数据存储器中内容 除了用 MOVXA DPTR 和 MOVX DPTR A 外 还可用指令 MOVXA Ri 和 MOVX Ri A 这时P0口装入Ri中内容 低8位地址 而把P2口原有的内容作为高8位地址输出 8 5EPROM和RAM的综合扩展 例8 1 采用线选法扩展2片SRAM6264的和2片EPROM2764 要求 1 给出硬件接口电路 2 确定各芯片的地址范围 3 编写程序将片外数据存储器中C000H C0FFH单元设置为01H FFH 并读取这些数据送P1口显示 分析 在具体应用系统设计时 应按照系统扩展结构三总线的构建方法 其中 最关键的是片选信号和控制信号的确定 由于2764和6264的容量均为8K 8 因此片内地址线都为13条 若采用线选法进行存储器扩展 则将高位剩余的3条地址线中的P2 5接到第一组IC1和IC3的片选端 P2 6接到第二组IC2和IC4的片选端后 当P2 6 1 P2 5 0时 选中第一组IC1和IC3 当P2 6 0 P2 5 1时 选中第二组IC2和IC4 线选法扩展电路图 高位剩余了一条地址线P2 7未接 设无用位P2 7 1 若此时P2 6 1 P2 5 0 选中IC1 IC3 地址线A15 A0与P2 P0对应关系如下 设无用位P2 7 1 若此时P2 6 0 P2 5 1 选中IC2 IC4 地址线A15 A0与P2 P0对应关系如下 因此 IC1 IC3的地址空间为C000H DFFFH 因此 IC2 IC4的地址空间为A000H BFFFH 从表中可以看出 第一组两片芯片地址空间完全重叠 第二组两片芯片地址空间也完全重叠 三个信号只能一个有效 所以即使地址空间重叠 也不会发生数据冲突 方法1 C51 include include include defineuintunsignedint defineucharunsignedcharucharxdataxADDR 256 at 0 xc000voiddelay uintz uinti for i 0 i z i 编写程序将片外数据存储器中C000H C0FFH单元设置为01H FFH 并读取这些数据送P1口显示 voidmovcd ucharlenth uinti for i 0 i lenth 1 i xADDR i i voidDisplay ucharlenth uinti for i 0 i lenth i P1 xADDR i delay 20000 voidmain movcd 0 xff while 1 Display 0 xff KeilC51 方法2 用DPTR作为数据区地址指针 通过字节计数器控制循环 参考程序如下 MOVDPTR 0C000H 设置数据块指针的初值MOVR2 00H 设置块长度计数器初值为256次 MOVA 00HLOOP MOVX DPTR A 写数到片外存储单元INCDPTR 地址指针加1INCADJNZR2 LOOP 数据块长度减1 若不为0则跳LOOP继续置数HERE SJMPHERE 执行完毕 原地踏步 方法3 用DPTR作为数据区地址指针 通过比较特征地址控制循环 参考程序如下 MOVDPTR 0C000H 设置数据块指针的初值MOVA 00HLOOP MOVX DPTR A 给片外单元送数INCDPTR 数据块地址指针加1INCAMOVR7 DPL 数据块末地址加1送R7CJNER7 0 LOOP 与末地址 1比较HERE SJMPHERE 例8 2 采用译码法扩展2片SRAM6264的和2片EPROM2764 要求 1 给出硬件接口电路 2 确定各芯片的地址范围 3 编写程序将片外程序存储器中以TAB为首地址的64个单元的内容依次传送到其中一片6264中 分析 2764和6264的容量均为8KB 片内地址线有13条 可将高位剩余的3条地址线接到74LS139译码器的3个输入端 A B 输出端 分别连接4片芯片IC1 IC2 IC3 IC4的片选端 译码法扩展电路图 1 扩展接口电路如图所示 2 74LS139译码器要工作 使能端必须为0 因此P2 7 0 若此时P2 6 0 P2 5 0 选中IC1 地址线A15 A0与P2 P0对应关系如下 当P2 7 P2 6 P2 5全为0 P2 4 P2 0与P0 7 P0 0这13条地址线的任意状态都能选中IC1的某一单元 当 全为 0 时 则为最小地址0000H 当 全为 1 时 则为最大地址1FFFH 因此 IC1的地址空间为0000H 1FFFH 同理 可得其他芯片的地址范围 采用译码法4片芯片地址空间分布如下 3 要实现片外程序存储器中以TAB为首地址的64个单元的内容依次传送到片外RAM 可以采用循环程序 设置DPTR指向待传送的数据块的首地址 TAB 循环次数为64 设数据块传送到IC3中 参考程序如下 方法一 MOVDPTR TAB 要传数据的首地址 TAB送入数据指针DPTRMOVR0 0 R0的初始值为0 也是RAM地址低字节MOVP2 20H 片外存储单元地址高字节AGIN MOVA R0MOVCA A DPTR 把以TAB为首址32个单元内容送入APUSHDPHPUSHDPL MOVX R0 A 程序存储器中表的内容送入外部RAM单元POPDPLPOPDPHINCR0 循环次数加1 也即外部RAM单元的地址指针加1CJNER0 64 AGIN 判64个单元的数据是否已经传送完毕 未完则继续HERE SJMPHERE 原地跳转 模拟一段实际要TAB DB 外部程序存储器中要传送的64个单元的内容 KeilC51 方法二 MOVDPTR TAB 要传数据的首地址 TAB送入数据指针DPTRMOVR0 0 R0的初始值为0MOVR3 20HMOVR2 00HAGIN MOVA R0MOVCA A DPTR 把以TAB为首址32个单元内容送入APUSHDPHPUSHDPLMOVDPL R2MOVDPH R3 MOVX DPTR A 程序存储器中表的内容送入外部RAM单元INCDPTRMOVR2 DPLMOVR3 DPHPOPDPLPOPDPHINCR0 循环次数加1 也即外部RAM单元的地址指针加1CJNER0 64 AGIN 判64个单元的数据是否已经传送完毕 未完则继续HERE SJMPHERE 原地跳转 模拟一段实际要TAB DB 外部程序存储器中要传送的64个单元的内容 KeilC51
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!