第2章单片机结构及原理内容摘要:

H。 在片外。 读写 ROM用 MOVC指令,控制信号是 PSEN和 EA。 读 ROM是以程序计数器 PC作为 16位地址指针,依次读相应地址 ROM中的指令和数据,每读一个字节, PC+1→PC ,这是 CPU自动形成的。 但是有些指令有修改 PC的功能,例如转移类指令和 MOVC指令, CPU将按修改后 PC的 16位地址读 ROM。 读 外 ROM的过程: CPU从 PC(程序计数器 )中取出当前 ROM的 16位地址,分别由 P0口(低 8位) 和 P2口(高 8位) 同时输出, ALE信号有效时由地址锁存器锁存低 8位地址信号,地址锁存器输出的低 8位地址信号和 P2口输出的高 8位地址信号同时加到外 ROM 16位地址输入端, 当PSEN信号有效时 ,外 ROM将相应地址存储单元中数据送至数据总线( P0口), CPU读入后存入指定单元。 需要指出的是 : 64KB中有一小段范围是 80C51系统专用单元, 0003H~ 0023H是 5个中断源中断服务程序入口地址 (详见第 5章 ),用户不能安排其他内容。 80C51复位后, PC=0000H, CPU从地址为 0000H的ROM单元中读取指令和数据。 从 0000H到 0003H只有3B,根本不可能安排一个完整的系统程序,而80C51又是依次读 ROM字节的。 因此 ,这 3B只能用来安排 一条跳转指令 ,跳转到其他合适的地址范围去执行真正的主程序。 4. 外部数据存储器(外 RAM)  地址范围 : 0000H~ FFFFH 共 64KB。  读写外 RAM用 MOVX指令, 控制信号是 P3口中的 RD和 WR。 一般情况下,只有在内 RAM不能满足 应用要求时,才外接 RAM。 外 RAM 16位地址分别 由 P0口(低 8位)和 P2口(高 8位)同时输出, ALE信号 有效时由地址锁存器锁存低 8位地址信号,地址锁存器输出的低 8位地址信号和 P2口输出的高 8位地址信号同时加到外 RAM 16位地址输入端,当 RD信号 有效时,外 RAM将相应地址存储单元中的 数据 送至数据总线( P0口), CPU读入后存入指定单元。 读外 RAM的过程 增加 写 外 RAM的过程 : 写外 RAM的过程与读外 RAM的过程相同。 只是控制 信号不同,信号换成 WR信号。 当 WR信号有效时, 外 RAM将数据总线( P0口分时传送)上的数据写入相 应地址存储单元中。 P0口 一、 特点 ( 1)在作为通用数据 I/O端口时 ,具有较强的驱动能力 (8个 TTL负载 ),与 MOS负载连接时 ,需要外接一个上拉电阻。 ( 2)作为“ 地址 、 数据复用总线 ”使用时 ,P0口首先输出外部存储器的低八位地址 ,然后再变为数据总线进行数据的输入或输出 .此时, P0口不能再作为通用 I/O口。 167。 并行的 I/O端口 P0口的位结构图 返回 返回前一次 D Q 锁存器 CL /Q 引脚 Vcc 地址 /数据 1/0 控制 (=0时 ) 读锁存器 读引脚 内部总线 写锁存器 MUX (控制 =0时 ) Vcc 上拉电阻 读引脚 与外电路连接 2 1 D Q CK /Q 读引脚 读锁存器 写锁存器 内部总线 地址 /数据 控制 引脚 3 4 0 0 1 0 0 截止 截止 =0 Vcc P0用作通用 I/O时,控制 =0 : • 此脚作输出口时, 当 P0口用作输出口时,因 输出级处于开漏状态,必须外接上拉电阻。 V2 V1 2 1 D Q CK /Q 读引脚 =0 读锁存器 写锁存器 内部总线 地址 /数据 控制 =1 引脚 3 4 1 0 1 1 =0 导通 截止 =0 Vcc P0口用作地址 /数据复用口,控制 =1 •作地址 /数据输出:输出地址 /数据 =0 时 V1 V2 2 1 D Q CK /Q 读引脚 =1 读锁存器 写锁存器 内部总线 地址 /数据 控制 =0 引脚 3 4 Vcc P0口用作地址 /数据复用口 • 作 /数据输入: 与 P0用作通用 I/O时输入时情况相同, CPU使 V V2均截止,从引脚上输入的外部数据经缓冲器 U2进入内部数据总线。 V1 V2 2 1 D Q CK /Q 读引脚 =1 读锁存器 写锁存器 内部总线 地址 /数据 控制 引脚 3 4 0 0 1 0 0 截止 截止 =0 Vcc 二 . 使用 P0口应注意的问题 1. 在输入操作前 ,为了保证输入正确,必须 先向端口写 1; V2 V1 2. 做通用数据 I/O端口时 ,输出级上端的 FET处于截止状态 ,所以与 MOS器件连接时 ,必须 接“上拉电阻” ,否则不能正确的输出高电平; 3. “读引脚”与“读锁存器”是不同的两个数据通道。 凡是“读 —修改 —写” 的操作 ,CPU读的都是端口锁存器中的数据; 4. 为提高电路可靠性 ,端口引脚不要直接与三极管一类的器件直接连接 ,应加 隔离电路或与三极管之间加一个电阻; 5 负载的接法( 增加的内容 ) • “拉电流 ” 还是 “ 灌电流 ” 与大电流负载连接 (我们以美国 ATMEL公司生产的 AT8951为例 ) ( 1) 使用灌电流的方式 与电流较大的负载直接连接时 , 端口可以吸收约 20mA的电流而保证端口电平不高于 (见右上图)。 ( 2) 采用拉电流方式 连接负载时, AT89C51所能提供 “ 拉电流 ” 仅仅为 80μ A,否则输出的高电平会急剧下降 .如果我们采用右下图的方式,向端口输出一个高电平去点亮 LED,会发现,端口输出的电平不是 “ 1”而是 “ 0”。 Vdd Vdd Vdd 灌电流方式 输出” 0”点 亮 LED 拉电流方式 输出高电平 点亮 LED 返回 单片机与继电器等大电流负载的接口 • AT89C51的端口可以吸收约20mA的电流 .对于继电器等大于 20mA的负载 ,单片机可以采用右图的接法 ,用一个三极管来承担负载所需的大电流 . • 若于 负载电流易造成干扰单片机的环境 ,应采用右下图”光电隔离”的方式 .其中 : A 、 B两处没有 任何电的联系 . J Vcc Vdd A B 返回 负载 Vcc P1口 D Q 锁存器 CL /Q 引脚 Vcc 读锁存器 读引脚 内部总线 写锁存器 内部上拉电阻 上拉电阻 三态门 P2口 返回上一次 D Q 锁存器 CL /Q 引脚 Vcc 地址 /数据 1/0 控制 读锁存器 读引脚 内部总线 写锁存器 MUX (地址 /数据 =0)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。