第8章 AT89S51单片机外部 存储器的扩展 成都理工大学工程技术学院 自动化工程系 1.

Slides:



Advertisements
Similar presentations
实验四 利用中规模芯片设计时序电路(二).
Advertisements

第6章 存储系统 计算机教学实验中心.
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
第10章 FPGA硬件设计 <EDA技术与应用> 课程讲义
第六章 MCS-51单片机总线系统与I/O口扩展
在PHP和MYSQL中实现完美的中文显示
第8章 AT89S51单片机 外部存储器的扩展 1.
第七章 单片机存储器的扩展.
单片机系统的三总线的构造 半导体存储器 程序存储器和数据存储器的扩展方法 E2PROM的使用 程序存储器和数据存储器的同时扩展
第8章 AT89S52单片机外部 存储器的扩展 1.
第六章 存贮器 6.1 存储器概述 6.2 随机存取存储器(RAM) 6.3 只读存储器(ROM) 6.4 CPU与存储器的连接.
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
第三章 微机基本系统的设计 第一章 8086程序设计 第二章 MCS-51程序设计 第四章 存贮器与接口 第五章 并行接口
第七章 MCS-51并行口的扩展 MCS51单片机内部有4个并行口,当内部并行口不够用时可以外扩并行口芯片。可外扩的并行口芯片很多,分成2类:不可编程的并行口芯片(74LS3734和74LS245)和可编程的并行口芯片(8255)。 7.1 不可编程并行口芯片的扩展 7.2 可编程并行口芯片的扩展.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
微机原理与接口技术 第5章 存储器 朱华贵 2015年11月05日.
第2章 单片机的结构原理与 简单应用 (课时:10学时).
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
逆向工程-汇编语言
CPU结构和功能.
第5章 单片机应用系统的扩展 5.1 单片机扩展的基本概念 5.2 存储器的扩展 5.2 I/O接口扩展电路设计.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第12章 半导体存储器 孙卫强.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
C语言程序设计 主讲教师:陆幼利.
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
8.4 ADC0809接口电路及程序设计.
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
51单片机及最小系统板 MCU起航 QQ:
第6章 存储器接口 6.1 存储器概述 6.2 半导体存储器 6.3 MCS-51单片机存储器扩展.
计算机组成原理 课程设计.
(Random Access Memory)
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
第三章 MCS 51的硬件结构.
第二章 补充知识 2.1 总线和三态门 一、总线(BUS) 三总线结构 数据总线DB(Data Bus)
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第四讲: AT89C51单片机的结构及引脚功能 一、 AT89C51单片机的结构 二、 AT89C51单片机的引脚功能.
组合逻辑电路 ——中规模组合逻辑集成电路.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第五讲:AT89C51单片机存储器结构 一、半导体存储器 二、存储器空间划分方法 三、数据存储器(RAM) 四、程序存储器(ROM)
iSIGHT 基本培训 使用 Excel的栅栏问题
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
《数字电子技术基础》(第五版)教学课件 清华大学 阎石 王红
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
实验五 MSI组合逻辑功 能部件的应用与测试
HSC高速输出例程 HORNER APG.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
7.1 AT89C51最小应用系统 从本质上讲,单片机本身就是一个最小应用系统。由于晶振、开关等器件无法集成到芯片内部,这些器件又是单片机工作所必需的器件,因此,由单片机与晶振电路及由开关、电阻、电容等构成的复位电路就是单片机的最小应用系统。如图7-1所示,AT89C51片内有Flash程序存储器,由它构成的最小应用系统简单可靠。
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
循环程序设计 在程序中包含重复执行的程序段称为循环程序设计。循环程序可以使程序结构性强、可读性好,从而大大提高了程序质量。
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第九章 存储器和可编程逻辑器件 本章主要内容 半导体存储器 只读存储器 随机存取存储器 存储器容量的扩展 可编程逻辑器件
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
DSP技术与应用 电子与信息技术系.
四路视频编码器 快速安装手册 1、接口说明 2、安装连接 3、软件下载 4、注意事项 编码器软件下载地址
第1章 微型计算机基础.
Presentation transcript:

第8章 AT89S51单片机外部 存储器的扩展 成都理工大学工程技术学院 自动化工程系 1

8.3.1 常用的EPROM芯片 8.3.2 程序存储器的操作时序 8.3.3 AT89S51单片机与EPROM的接口电路设计 第8章 目录 8.1 系统扩展结构 8.2 地址空间分配和外部地址锁存器 8.2.1 存储器地址空间分配 8.2.2 外部地址锁存器 8.3 程序存储器EPROM的扩展 8.3.1 常用的EPROM芯片 8.3.2 程序存储器的操作时序 8.3.3 AT89S51单片机与EPROM的接口电路设计 8.4 静态数据存储器RAM的扩展 8.4.1 常用的静态RAM(SRAM)芯片 8.4.2 外扩数据存储器的读写操作时序 2

8.4.3 AT89S51单片机与RAM的接口电路设计 8.5 EPROM和RAM的综合扩展 8.5.1 综合扩展的硬件接口电路 8.5.2 外扩存储器电路的工作原理及软件设计 8.6 E2PROM的扩展 8.6.1 并行E2PROM芯片简介 8.6.2 E2PROM的工作方式 8.6.3 AT89S51单片机扩展E2PROM AT2864的设计 8.7 片内Flash存储器的编程 8.7.1 通用编程器编程 8.7.2 ISP编程

内容概要 许多情况,片内的存储器资源还不能满足需要,为此需AT89S51单片机进行外部程序存储器和外部数据存储器的扩展。 由于有时需要扩展多片芯片,首先介绍AT89S51单片机的两个外部存储器空间的地址分配的两种方法,即线选法和译码法。最后介绍扩展外部程序存储器和外部数据存储器的具体设计。

AT89S51单片机采用总线结构,使扩展易于实现,AT89S51单片机系统扩展结构如图8-1所示。 8.1 系统扩展结构 AT89S51单片机采用总线结构,使扩展易于实现,AT89S51单片机系统扩展结构如图8-1所示。 图8-1 AT89S51单片机的系统扩展结构 5

由图8-1可以看出,系统扩展主要包括存储器扩展和I/O接口部件扩展。 AT89S51单片机的存储器扩展即包括程序存储器扩展又包括数据存储器扩展。AT89S51单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构。扩展后,系统形成了两个并行的外部存储器空间。 系统扩展是以AT89S51为核心,通过总线把单片机与各扩展部件连接起来。因此,要进行系统扩展首先要构造系统总线。 系统总线按功能通常分为3组,如图8-1所示。 6

(1)地址总线(Address Bus,AB):用于传送单片机发出的地址信号,以便进行存储单元和I/O接口芯片中的寄存器单元的选择。 (2)数据总线(Data Bus,DB):用于单片机与外部存储器之间或与I/O接口之间传送数据,数据总线是双向的。 (3)控制总线(Control Bus,CB):控制总线是单片机发出的各种控制信号线。

如何来构造系统的三总线。 1.P0口作为低8位地址/数据总线 AT89S51受引脚数目限制,P0口既用作低8位地址总线,又用作数据总线(分时复用),因此需增加一个8位地址锁存器。AT89S51访问外部扩展的存储器单元或I/O接口寄存器时,先发出低8位地址送地址锁存器锁存,锁存器输出作为系统的低8位地址(A7~ A0)。随后,P0口又作为数据总线口(D7~ D0),如图8-2所示。 2.P2口的口线作为高位地址线 P2口用作系统的高8位地址线,再加上地址锁存器提供的低8位地址,便形成了系统完整的16位地址总线。 8

使单片机系统的寻址范围达到64KB。 图8-2 AT89C51单片机扩展的片外三总线 9

3.控制信号线 除地址线和数据线外,还要有系统的控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是P3口第二功能信号。包括: (1) 作为外扩程序存储器的读选通控制信号。 (2) 和 为外扩数据存储器和I/O的读、写选通控制信号。 (3)ALE作为P0口发出的低8位地址锁存控制信号。 (4) 为片内、片外程序存储器的选择控制信号。 可见,AT89S51的4个并行I/O口,由于系统扩展的需要,真正作为数字I/O用,就剩下P1和P3的部分口线了。 10

8. 2 地址空间分配和外部地址锁存器 本节讨论如何进行存储器空间的地址分配,并介绍用于输出低8位地址的常用的地址锁存器。 8. 2 8.2 地址空间分配和外部地址锁存器 本节讨论如何进行存储器空间的地址分配,并介绍用于输出低8位地址的常用的地址锁存器。 8.2.1 存储器地址空间分配 实际系统设计中,既需要扩展程序存储器,又需要扩展数据存储器,如何把片外的两个64KB地址空间分配给各个程序存储器、数据存储器芯片,使一个存储单元只对应一个地址,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就是存储器地址空间分配问题。 11

AT89S51单片机发出的地址码用于选择某个存储器单元,外扩多片存储器芯片中,单片机必须进行两种选择:一是选中该存储器芯片,这称为“片选”,未被选中的芯片不能被访问。二是在“片选”的基础上再根据单片机发出的地址码来对“选中” 芯片的某一单元进行访问,即“单元选择”。 为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”和“单元选择”都是单片机通过地址线一次发出的地址信号来完成选择。 通常把单片机系统的地址线笼统地分为低位地址线和高 12

位地址线,“片选”都是使用高位地址线。实际上,16条地址线中的高、低位地址线的数目并不是固定的,只是习惯上把用于 “单元选择”的地址线,都称为低位地址线,其余的为高位地址线。 常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法),下面介绍。 1.线选法 是直接利用系统的某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。

线选法优点是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址的芯片数目受到限制。另外,地址空间不连续,每个存储单元的地址不唯一,这会给程序设计带来不便,只适用于外扩芯片数目不多的单片机系统的存储器扩展。 2.译码法 使用译码器对AT89S51单片机的高位地址进行译码,译码输出作为存储器芯片的片选信号。这种方法能够有效地利用存储器空间,适用于多芯片的存储器扩展。常用的译码器芯片有74LS138(3线-8线译码器)、74LS139(双2线-4线译码器)和74LS154(4线-16线译码器)。 14

若全部高位地址线都参加译码,称为全译码;若仅部分高位地址线参加译码,称为部分译码。部分译码存在着部分存储器地址空间相重叠的情况。 下面介绍常用的译码器芯片。 (1)74LS138 3线-8线译码器,有3个数据输入端,经译码产生8种状态。引脚如图8-3所示,真值表见表8-1。由表8-1可见,当译码器的输入为某一固定编码时,其输出仅有一个固定的引脚输出为低电平,其余的为高电平。输出为低电平的引脚就作为某一存储器芯片的片选信号。 15

16

(2)74LS139 双2线-4线译码器。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端,其引脚如图8-4所示,真值表见表8-2(只给出其中一组)。 图8-3 74LS138引脚图 图8-4 74LS139引脚图 17

以74LS138为例,如何进行地址分配。 例如,要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片? 由74LS138真值表可知,把G1接到+5V, 、 接地,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芯片中的各个存储单元的“单元选择”。这样就把64KB存储器空间分成8个8KB空间了。 19

64KB地址空间分配如图8-5所示。 图8-5 64KB地址空间划分成8个8KB空间 这里采用全地址译码方式。因此,AT89S51发出16位地址时,每次只能选中某一芯片及该芯片的一个存储单元 20

如何用74LS138把64KB空间全部划分为4KB的块呢?4KB空间需12条地址线,而译码器输入只有3条地址线(P2.6~P2.4),P2.7没有参加译码,P2.7发出的0或1决定选择64KB存储器空间的前32KB还是后32KB,由于P2.7没有参加译码,就不是全译码方式,前后两个32KB空间就重叠了。那么,这32KB空间利用74LS138译码器可划分为8个4KB空间。 如果把P2.7通过一个非门与74LS138译码器G1端连接起来,如图8-6所示,就不会发生两个32KB空间重叠的问题了。这时,选中的是64KB空间的前32KB空间,地址范 21

围为0000H~7FFFH。如果去掉图8-6中的非门,地址范围为8000H~FFFFH。把译码器的输出连到各个4KB存储器的片选端,这样就把32KB空间划分为8个4KB空间。P2.3~P2.0,P0.7~P0.0实现“单元选择”,P2.6~P2.4通过74LS138译码实现对各存储器芯片的片选。 采用译码器划分的地址空间块都是相等的,如果将地址空间块划分为不等的块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。

图8-6 存储器空间被划分成每块4KB 23

8.2.2 外部地址锁存器 受引脚数的限制,P0口兼用数据线和低8位地址线,为了将它们分离出来,需在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有74LS373、74LS573等。 1.锁存器74LS373 是一种带三态门的8D锁存器,其引脚如图8-7所示,内部结构如图8-8所示。AT89S51与74LS373锁存器的连接如图8-9所示。 24

图8-7 锁存器74LS373的引脚 25

图8-8 74LS373的内部结构 26

图8-9 AT89S51单片机P0口与74LS373的连接 27

G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。 引脚说明: D7~D0:8位数据输入线, Q7~Q0:8位数据输出线。 G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。 :数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。 74LS373锁存器功能如表8-3。 28

图8-10 锁存器74LS573的引脚 29

由图8-10,与74LS373相比,74LS573的输入D端和输出Q端依次排列在芯片两侧,为绘制印制电路板提供方便 也是一种带有三态门的8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚排列与74LS373不同,图8-10为74LS573引脚图。 由图8-10,与74LS373相比,74LS573的输入D端和输出Q端依次排列在芯片两侧,为绘制印制电路板提供方便 引脚说明: D7~D0:8位数据输入线。 Q7~Q0:8位数据输出线。 G :数据输入锁存选通信号,该引脚与74LS373的G端功能相同。 30

:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。 8.3 程序存储器EPROM的扩展 程序存储器采用只读存储器,因为这种存储器在电源关断后,仍能保存程序(我们称此特性为非易失性的),在系统上电后,CPU可取出这些指令重新执行。

只读存储器简称ROM(Read Only Memory)。ROM中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称为只读存储器。 向ROM中写入信息称为ROM编程。根据编程方式不同,分为以下几种。 (1)掩模ROM。在制造过程中编程,是以掩模工艺实现的,因此称为掩模ROM。这种芯片存储结构简单,集成度高,但由于掩模工艺成本较高,因此只适合于大批量生产。 32

(2)可编程ROM(PROM)。芯片出厂时没有任何程序信息,用独立的编程器写入。但PROM只能写一次,写入内容后,就不能再修改。 (3)EPROM。用紫外线擦除,用电信号编程。在芯片外壳的中间位置有一个圆形窗口,对该窗口照射紫外线就可擦除原有的信息。使用编程器可将调试完毕的程序写入。 (4)E2PROM(EEPROM)。一种用电信号编程,也用电信号擦除的ROM芯片。对E2PROM的读写操作与RAM存储器几乎没有什么差别,只是写入的速度慢一些,但断电后仍能保存信息。 33

(5)Flash ROM。 又称闪速存储器(简称闪存),是在EPROM、E2PROM的基础上发展起来的一种电擦除型只读存储器。特点是可快速在线修改其存储单元中的数据,改写次数可达1万次,其读写速度很快,存取时间可达70ns,而成本比E2PROM低得多,大有取代E2PROM的趋势。 目前许多公司生产的8051内核的单片机,在芯片内部大多集成了数量不等的Flash ROM。 例如,美国ATMEL公司产品AT89C5x/AT89S5x,片内有不同容量的Flash ROM。在片内的Flash ROM满足要求下,扩展外部程序存储器可省去。 34

8.3.1 常用的EPROM芯片 使用较多的是并行EPROM,首先介绍常用EPROM芯片。 EPROM的典型芯片是27系列产品,例如,2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。型号 “27”后面的数字表示其位存储容量。如果换算成字节容量,只需将该数字除以8即可。 例如,“27128”中的“27”后的数字 “128”,128/8 =16KB 随着大规模集成电路技术的发展,大容量存储器芯片产量剧增,售价不断下降,性价比明显增高,且由于小容量芯片停止生产,使市场某些小容量芯片价格反而比大容量芯片还贵。所以,应尽量采用大容量芯片。 35

A0~A15:地址线引脚。它的数目由芯片的存储容量决定,用于进行单元选择。 1.常用EPROM芯片引脚 27系列EPROM芯片的引脚如图8-11。 芯片引脚功能: A0~A15:地址线引脚。它的数目由芯片的存储容量决定,用于进行单元选择。 D7~D0:数据线引脚。 :片选控制端。 :输出允许控制端。 :编程时,编程脉冲的输入端。 36

图8-11 常用EPROM芯片引脚

VPP:编程时,编程电压(+12V或+25V)输入端。 VCC:+5V,芯片的工作电压。 GND :数字地。 NC:无用端。 表8-4为27系列EPROM芯片的技术参数,其中VCC是芯片供电电压,VPP是编程电压,Im为最大静态电流,Is为维持电流,TRM为最大读出时间。 38

39

2.EPROM芯片的工作方式 5种工作方式,由 、 、 信号的组合确定。5种工作方式如表8-5。 40

(1)读出方式。工作在该方式的条件是使片选控制线 为低电平,同时让输出允许控制线 为低电平,VPP为+5V,就可把指定地址单元的内容从D7~D0上读出。 (2)未选中方式。当片选控制线 为高电平时,芯片未选中方式,数据输出为高阻抗悬浮状态,不占用数据总线。EPROM处于低功耗的维持状态。 (3)编程方式。在VPP端加上规定好的高压, 和 端加上合适的电平(不同芯片要求不同),能将数据写入到指定地址单元。编程地址和编程数据分别由系统的A15~A0和D7~D0提供。 41

(4)编程校验方式。VPP端保持相应的编程电压(高压),再按读出方式操作,读出固化好的内容,校验写入内容是否正确。 (5)编程禁止方式。 8.3.2 程序存储器的操作时序 1.访问程序存储器的控制信号 AT89S51单片机访问片外扩展的程序存储器时,所用的控制信号有以下3种。 (1)ALE:用于低8位地址锁存控制。 (2) :片外程序存储器“读选通”控制信号。它接外扩EPROM的 引脚。

(3) :片内、片外程序存储器访问的控制信号。当 =1时,在单片机发出的地址小于片内程序存储器最大地址时,访问片内程序存储器; 当 =0时,只访问片外程序存储器。 如果指令是从片外EPROM中读取的,除了ALE用于低8位地址锁存信号之外,控制信号还有 , 接外扩EPROM的 脚。此外,P0口分时用作低8位地址总线和数据总线,P2口用作高8位地址线。 2.操作时序 AT89S51对片外ROM的操作时序分两种,即执行非MOVX指令的时序和执行MOVX指令的时序,如图8-12所示。 43

(1)应用系统中无片外RAM 系统无片外RAM(或I/O)时,不用执行MOVX指令。 在执行非MOVX指令时,时序如图8-12(a)所示。 P0口作为地址/数据复用的双向总线,用于输入指令或输出程序存储器的低8位地址PCL。 P2口专门用于输出程序存储器的高8位地址PCH。P0口分时复用,故首先要将P0口输出的低8位地址PCL锁存在锁存器中,然后P0口再作为数据口。在每个机器周期中,允许地址锁存两次有效,ALE在下降沿时,将P0口的低8位地址PCL锁存在锁存器中。 44

图8-12 执行非MOVX指令的时序

同时, 也是每个机器周期中两次有效,用于选通片外程序存储器,将指令读入片内。 系统无片外RAM(或I/O)时,此ALE信号以振荡器频率的1/6出现在引脚上,它可用作外部时钟或定时脉冲信号。 (2)应用系统中接有片外RAM 在执行访问片外RAM(或I/O)的MOVX指令时,16位地址应转而指向数据存储器,时序如图8-12(b)。 在指令输入以前,P2口输出的地址PCH、PCL指向程序存储器;在指令输入并判定是MOVX指令后, ALE在该 46

图8-12 执行MOVX指令的时序

机器周期S5状态锁存的是P0口发出的片外RAM(或I/O)低8位地址。 若执行的是“MOVX A,@DPTR”或 “MOVX @DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。 若执行的是“MOVX A,@Ri”或“MOVX @Ri,A”指令,则Ri的内容为低8位地址,而P2口线上将是P2口锁存器的内容。在同一机器周期中将不再出现 有效取指信号,下一个机器周期中ALE的有效锁存信号也不再出现;当 / 有效时,P0口将读/写数据存储器中的数据。 48

判定是MOVX指令后,ALE在该机器周期S5状态锁存的是P0口发出的片外RAM(或I/O)低8位地址。 若执行的是“MOVX A,@DPTR”或是“MOVX @DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。 若执行的是“MOVX A,@Ri”或“MOVX @Ri,A”指令,则Ri内容为低8位地址,而P2口线将是P2口锁存器内容。在同一机器周期中将不再出现 有效取指信号,下一个机器周期中ALE的有效锁存信号也不再出现;而当 / 有效时,P0口将读/写数据存储器中的数据。 49

由图8-12(b)可以看出: (1)将ALE用作定时脉冲输出时,执行一次MOVX指令就会丢失一个ALE脉冲; (2)只有在执行MOVX指令时的第二个机器周期中,才对数据存储器(或I/O)读/写,地址总线才由数据存储器使用。 8.3.3 AT89S51单片机与EPROM的接口电路设计 由于AT89S5x单片机片内集成不同容量的Flash ROM,可根据实际需要来决定是否外部扩展EPROM。当应用程序不大于单片机片内的Flash ROM容量时,扩展外部程序存储器的工作可省略。

但作为扩展外部程序存储器的基本方法,还是应掌握。 1.AT89S51与单片EPROM的硬件接口电路 在设计接口电路时,由于外扩的EPROM在正常使用中只读不写,故EPROM芯片只有读出控制引脚,记为 ,该引脚与AT89S51单片机的 相连,地址线、数据线分别与AT89S51单片机的地址线、数据线相连,片选端控制可采用线选法或译码法。 介绍2764、27128芯片与AT89S51的接口。更大容量的27256、27512与AT89S51的连接,差别只是连接的地址线数目不同。 51

由于2764与27128引脚的差别仅在26脚,2764的26脚是空脚,27128的26脚是地址线A13,因此在设计外扩存储器电路时,应选用27128芯片设计电路。在实际应用时,可将27128换成2764,系统仍能正常运行。 图8-13所示为AT89S51外扩16KB的EPROM 27128的电路。 由于只扩展一片EPROM,所以片选端 直接接地,也可接到某一高位地址线上(A15或A14)进行线选,也可接某一地址译码器的输出端。 52

图8-13 AT89S51单片机与27128的接口电路

2.使用多片EPROM的扩展电路 图8-14所示为利用4片27128 EPROM扩展成64KB程序存储器的方法。片选信号由译码器产生。4片27128各自所占的地址空间,读者自己分析。 8.4 静态数据存储器RAM的扩展 在单片机应用系统中,外部扩展的数据存储器都采用静态数据存储器(SRAM)。 对外部扩展的数据存储器空间访问,P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据总线。片外数据存储器RAM的读和写由AT89S51的 (P3.7)和 (P3.6)信号控制。 54

图8-14 AT89S51与4片27128 EPROM的接口电路

而片外程序存储器EPROM的输出端允许( )由单片机的读选通 信号控制。 尽管与EPROM的地址空间范围相同,但由于控制信号不同,不会发生总线冲突。 8.4.1 常用的静态RAM(SRAM)芯片 单片机系统中常用的RAM芯片的典型型号有6116(2KB ),6264(8KB),62128(16KB),62256(32KB)。 6116为24脚封装,6264、62128、62256为28脚封装。这些RAM芯片的引脚如图8-15所示。 56

图8-15 常用的RAM引脚图 57

各引脚功能: A0~A14:地址输入线。 D0~D7:双向三态数据线。 :片选信号输入线。对6264芯片,当24脚(CS)为高电平且 为低电平时才选中该片。 :读选通信号输入线,低电平有效。 :写允许信号输入线,低电平有效。 VCC —工作电源+5V。 GND —地。 RAM存储器有读出、写入、维持3种工作方式,工作方式的控制见表8-6。 58

8.4.2 外扩数据存储器的读写操作时序 对片外RAM读和写两种操作时序的基本过程相同。 1.读片外RAM操作时序 若外扩一片RAM,应将 脚与RAM的 脚连接, 脚与芯片 脚连接。

单片机读片外RAM操作时序如图8-16所示。 在第一个机器周期的S1状态,ALE信号由低变高(①处),读RAM周期开始。在S2状态,CPU把低8位地址送到P0口总线上,把高8位地址送上P2口(在执行“MOVX A,@DPTR”指令阶段才送高8位;若执行“MOVX A,@Ri”则不送高8位)。 ALE下降沿(②处)用来把低8位地址信息锁存到外部锁存器74LS373内。而高8位地址信息一直锁存在P2口锁存器中(③处)。 在S3状态,P0口总线变成高阻悬浮状态④。在S4状态,执行指令“MOVX A,@DPTR”后使 信号变有效 60

图8-16 AT89S51单片机读片外RAM操作时序图 61

(⑤处), 信号使被寻址的片外RAM过片刻后把数据送上P0口总线(⑥处),当 回到高电平后(⑦处),P0总线变悬浮状态(⑧处)。 向片外RAM写数据,单片机执行“MOVX @DPTR,A”指令。 指令执行后,AT89S51的 信号为低有效,此信号使RAM的 端被选通。 写片外RAM的时序如图8-17所示。开始的过程与读过程类似,但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(③处)。此间,P0总线上不会出现高阻悬浮现象。

图8-17 AT89S51单片机写片外RAM操作时序图 63

在S4状态,写信号 有效(⑤处),选通片外RAM,稍过片刻,P0口上的数据就写到RAM内了,然后写信号 变为无效(⑥处)。 8. 4 在S4状态,写信号 有效(⑤处),选通片外RAM,稍过片刻,P0口上的数据就写到RAM内了,然后写信号 变为无效(⑥处)。 8.4.3 AT89S51单片机与RAM的接口电路设计 AT89S51对片外RAM的读和写由AT89S51单片机的 (P3.7)和 (P3.6)控制,片选端由译码器译码输出控制。因此设计时,主要解决地址分配、数据线和控制信号线的连接问题。在与高速单片机连接时,还要根据时序解决读/写速度匹配问题。 图8-18为用线选法扩展AT89S51外部数据存储器电路。图中数据存储器选用6264,该芯片地址线为A0~A12,故AT89S51剩余地址线为3条。 64

图8-18 线选法扩展外部数据存储器电路图 65

用线选可扩展3片6264,对应的存储器空间见表8-7。 用译码法扩展外部数据存储器的接口电路如图8-19所示。数据存储器62128,芯片地址线为A0~A13,剩余地址线为两条,若采用2线-4线译码器可扩展4片62128。各片62128芯片地址分配如表8-8所示。 66

图8-19 译码法扩展外部数据存储器电路图 67

【例8-1】编写程序将片外数据存储器中5000H~50FFH单 元全部清“0”。 方法1 用DPTR作为数据区地址指针,同时使用字节计数 器。参考程序如下: 68

MOV DPTR,#5000H ;设置数据块指针的初值 MOV R7,#00H ;设置块长度计数器初值(00H是 ;循环256次) CLR A LOOP: MOVX @DPTR,A ;给一单元送“00H” INC DPTR ;地址指针加1 DJNZ R7,LOOP ;数据块长度减1, 若不为0则跳 ;LOOP继续清“0” HERE: SJMP HERE ;执行完毕, 原地踏步 69

方法2 用DPTR作为数据区地址指针,但不使用字节计数器,而是比较特征地址。参考程序如下: MOV DPTR,#5000H;设置数据块指针的初值 CLR A ;A清0 LOOP: MOVX @DPTR,A ;给一单元送“00H” INC DPTR ;数据块地址指针加1 MOV R7,DPL ;数据块末地址加1送R7 CJNE R7,#0,LOOP ;与末地址+1比较 HERE: SJMP HERE 70

8.5 EPROM和RAM的综合扩展 在系统设计中,经常是既要扩展程序存储器,也要扩展数据存储器(RAM)或I/O,即进行存储器的综合扩展。下面介绍如何进行综合扩展。 8.5.1 综合扩展的硬件接口电路 【例8-2】 采用线选法扩展2片8KB的RAM和2片8KB的EPROM。RAM芯片选用2片6264。扩展2片EPROM芯片,选用2764。硬件接口电路如图8-20所示。 71

图8-20 采用线选法的综合扩展电路图示例 72

(1)控制信号及片选信号 地址线P2. 5直接接到IC1(2764)和IC3(6264)的片选 端,P2 (1)控制信号及片选信号 地址线P2.5直接接到IC1(2764)和IC3(6264)的片选 端,P2.6直接接到IC2(2764)和IC4(6264)的片选 端。 当P2.6=0,P2.5=1时,IC2和IC4的片选端为低电平,IC1和IC3的 端全为高电平。 当P2.6=1,P2.5=0时,IC1和IC3的 端都是低电平,每次同时选中两个芯片,具体对哪个芯片进行读/写操作还要通过 、 、 控制线来控制。 当 为低电平时,到片外程序存储区EPROM中读程序;当读/写信号 或 为低电平时,则对片外 73

RAM读数据或写数据 、 、 3个信号是在执行指令时产生的,任意时刻只能执行一条指令,所以只能有一个信号有效,不可能同时有效,所以不会发生数据冲突。 (2)各芯片地址空间分配 硬件电路一旦确定,各芯片的地址范围实际上就已经确定,编程时只要给出所选择芯片的地址,就能对该芯片进行访问。结合图8-20,介绍IC1、IC2、IC3、IC4芯片地址范围的确定方法。 存储器地址均用16位,P0口确定低8位,P2口确定高8位。 如果P2.6=0、P2.5=1,选中IC2、IC4。地址线A15~A0与P2、P0对应关系如下:

同理IC1、IC3的地址范围为C000H~DFFFH。 除P2.6、P2.5固定外,其他“×”位均可变。设无用位P2.7 = 1,当“×”各位全为“0”时,则为最小地址A000H;当“×”均为“1”时,则为最大地址BFFFH。IC2、IC4的地址空间为A000H~BFFFH共8KB。 同理IC1、IC3的地址范围为C000H~DFFFH。 4片存储器各自所占的地址空间如表8-9所示。 即使地址空间重叠,也不会发生数据冲突。IC1与IC3也同样如此。 75

下面介绍采用译码器法进行地址空间分配的例子。 76

【例8-3】采用译码法扩展2片8KB EPROM和2片8KB RAM。EPROM选用2764,RAM选用6264。 扩展接口电路如图8-21所示。图中,74LS139的4个输出端, ~ 分别连接4个芯片IC1、IC2、IC3、IC4的片选端。 74LS139在对输入端译码时, ~ 每次只能有一位输出为“0”,其他三位全为“1”,输出为“0”的一端所连接的芯片被选中。 译码法地址分配,首先要根据译码芯片真值表确定译码芯片的输入状态,由此再判断其输出端选中芯片的地址。 77

图8-21 采用译码法的综合扩展电路图示例 78

如图8-21,74LS139的输入端A、B、 分别接P2口的P2. 5、P2. 6、P2 如图8-21,74LS139的输入端A、B、 分别接P2口的P2.5、P2.6、P2.7三端, 为使能端,低电平有效。 由表8-2 74LS139的真值表可见,当 =0、A=0、B=0时,输出端只有 为“0”, ~ 全为“1”,选中IC1。这样,P2.7、P2.6、P2.5全为0,P2.4~P2.0与P0.7~P0.0这13条地址线的任意状态都能选中IC1的某一单元。 当13条地址线全为“0”时,为最小地址0000H; 当13条地址线全为“1”时,为最大地址1FFFH。 所以IC1的地址范围为0000H~1FFFH。同理可确定电路中各个存储器地址范围见表8-10。 79

为使读者弄清楚单片机与扩展的存储器软、硬件之间的关系,结合图8-21所示的译码电路,说明片外读指令和从片外读/写数据的过程。 8.5.2 外扩存储器电路的工作原理及软件设计 为使读者弄清楚单片机与扩展的存储器软、硬件之间的关系,结合图8-21所示的译码电路,说明片外读指令和从片外读/写数据的过程。 80

1.单片机片外程序区读指令过程 单片机复位后,CPU就从0000H地址开始取指令,执行程序。 取指令期间,低8位地址送P0口,经锁存器A0~A7输出。高8位地址送往P2口,直接由P2.0~P2.4锁存到A8~A12地址线上,P2.5~P2.7输入给74LS139进行译码输出片选。这样,根据P2口、P0口状态则选中第一个程序存储器芯片IC1(2764)的第一个单元地址0000H。然后当PSEN*变为低时,把0000H中指令代码经P0口读入内部RAM中进行译码,从而决定进行何种操作。 81

取出一个指令字节后PC自动加1,然后取第二个字节,依次类推。当PC=1FFFH时,从IC1最后一个单元取指令,然后PC = 2000H,CPU向P2口、P0口送出2000H地址时,则选中第二个程序存储器IC2,IC2的地址范围为2000H~3FFFH,读指令过程同IC1,不再赘述。 2.单片机片外数据区读/写数据过程 当程序运行中,执行“MOV”类指令时,表示与片内RAM交换数据;当遇到“MOVX”类指令时,表示对片外数据存储器区寻址。片外数据存储器区只能间接寻址。 例如,把片外6000H单元的数据送到片内RAM 50H单元中,程序如下: 82

向片外数据区写数据的过程与读数据的过程类似。 例如,把片内50H单元的数据送到片外4000H单元中,程序如下: MOV DPTR,#6000H MOVX A,@DPTR MOV 50H,A 向片外数据区写数据的过程与读数据的过程类似。 例如,把片内50H单元的数据送到片外4000H单元中,程序如下: MOV A,50H MOV DPTR,#4000H MOVX @DPTR,A 执行第1条指令,先把片内RAM 50H单元的数据送到A中,第2条指令把寻址地址4000H送到数据指针寄存器DPTR

中,当执行“MOVX @DPTR,A”时,DPTR的低8位(00H)由P0口输出并锁存,高8位(40H)由P2口直接输出,根据P0口、P2口状态选中IC3(6264)的4000H单元。当写选通信号 有效时,A中的内容送往片外4000H单元。 单片机读写片外数据存储器中内容,除了用“MOVX A,@DPTR”和“MOVX @DPTR,A”外,还可用指令“MOVX A,@Ri”和“MOVX @Ri,A”。这时P0口装入Ri中内容(低8位地址),而把P2口原有的内容作为高8位地址输出。例8-4是采用“MOVX @Ri,A”指令的例子。 84

【例8-4】编程,将程序存储器中以TAB为首址的32个单元内容依次传送到外部RAM以4000H为首址的区域。 DPTR指向标号TAB首地址。R0既指示外部RAM的地址,又表示数据标号TAB的位移量。程序为一循环程序,循环次数为32,R0的值达到32就结束循环。参考程序: MOV P2,#40H ; MOV DPTR,#TAB ;要传送数据的首地址#TAB送 ;入数据指针DPTR MOV R0,#0 ;R0的初始值为0 AGIN: MOV A,R0 85

MOVC A,@A+DPTR ;把以TAB为首址32个单元内 ;容送入A MOVX @R0,A ;程序存储器中表的内容送入 ;外部RAM单元 INC R0 ;循环次数加1,也即外部 ;RAM单元的地址指针加1 CJNE R0,#32,AGIN;判32个单元的数据是否已经 ;传送完毕,未完则继续 HERE: SJMP HERE ;原地跳转,模拟一段实际要 ;执行的其他程序段 TAB: DB ……,…… ;外部程序存储器中要传送的 ;32个单元的内容 86

8.6 E2PROM的扩展 在应用中,某些状态参数,不仅要求能够在线修改,而且断电后能保持,以备上电后恢复系统的状态。可选用具有断电保护功能的RAM和E2PROM。 断电保护功能的RAM容量大、速度快,但占用口线多,成本高。 E2PROM突出优点是能够在线擦除和改写,无须像用紫外线照射才能擦除,不存在在日光下信息缓慢丢失的问题。 E2PROM在写入时能自动完成擦除,且不再需要专用的编程电源,可直接使用单片机系统的+5V电源。 87

此外, E2PROM使单片机系统的设计,特别是调试实验更为方便、灵活。在调试程序时,用E2PROM代替仿真EPROM,既可方便地修改程序,又能保存调试好的程序。 当然,与RAM芯片相比, E2PROM的写入速度是比较慢,写入一个字节需要ms量级的时间。因此, E2PROM适合于数据交换量较少,对传送速度要求不高的场合。 另外,它的擦除/写入是有寿命限制的,虽有1万次之多,但也不宜用在数据频繁更新的场合。因此,应注意平均的使用各单元,不然有些单元可能会提前结束寿命。

与单片机的连接,有并行和串行之分。 并行的速度比串行快,容量大。并行的E2PROM 2864的容量为8k×8位,有时需要与单片机的接口连线少,这时可选用串行I2C接口的E2PROM 。 目前比较流行的是24系列的E2PROM ,主要由ATMEL、MICROCHIP等几家公司提供。典型芯片有AT24C02,AT24C08,AT24C16。 串行I2C接口扩展将在第12章中介绍。本节只介绍单片机与并行E2PROM芯片的接口设计与编程。 89

8.6.1 并行E2PROM芯片简介 常见的并行芯片有2816/2816A,2817/2817A,2864A等。引脚如图8-22所示,其主要性能见表8-11 (表中芯片均为Intel公司产品)。 在引脚设计上,2KB的E2PROM 2816与相同容量的EPROM 2716和静态RAM 6116是兼容的,8KB的E2PROM 2864A与同容量的EPROM 2764和静态RAM 6264也是兼容的。 2816、2817和2864A的读出数据时间均为250ns,写入时间10ms。 90

图8-22 常见的并行E2PROM引脚图 91

92

8.6.2 E2PROM的工作方式 下面对E2PROM 2864A的4种工作方式作以说明。 1.维持方式 当 为高电平时,2864A进入低耗维持方式。此时,输出线呈高阻态,芯片的电流从140mA降至维持电流60mA。 2.读方式 当 和 均为低而 为高时,内部的数据缓冲器被打开,数据送上总线,此时可进行读操作。 3.写方式 2864A提供两种数据写入方式:页写入和字节写入。 93

(1)页写入 为提高写速度,2864A片内设置16字节的“页缓冲器”,将整个存储器阵列划分成512页,每页16字节。高9位(A12~A4) 确定页,低4位(A3~A0) 选择页缓冲器中的16个地址单元之一。 写操作分两步来实现: 第一步,在软件控制下把数据写入页缓冲器,这步称为页装载,与一般的静态RAM写操作是一样的。 第二步,在最后一个字节(即第16个字节)写入到页缓冲器后20ns自动开始,把页缓冲器的内容写到E2PROM阵列中对应地址的单元中,这一步称为页存储。 94

写方式时, 为低,在 下降沿,地址码A12~A0被片内锁存器锁存,在 上升沿数据被锁存。 片内有一个字节装载限时定时器,只要时间未到,数据可随机地写入页缓冲器。在连续向页缓冲器写数据过程中,不用担心限时定时器会溢出,因为每当 下降沿时,限时定时器自动被复位并重新启动计时。限时定时器要求写一个字节数据时间TBLW须满足:3s<TBLW<20s,这是正确对2864A页面写操作的关键。当一页装载完毕,不再有 信号时,限时定时器将溢出,页存储操作随即自动开始。首先把选中页的内容擦除,然后写入的数据由页缓冲器传递到E2PROM阵列中。 95

(2)字节写入 与页写入类似,写入一个字节,限时定时器就溢出。 4 (2)字节写入 与页写入类似,写入一个字节,限时定时器就溢出。 4. 数据查询方式 用软件来检测写操作中页存储周期是否完成。在页存储期间,如对2864A执行读操作,那么读出的是最后写入的字节,若芯片的转储工作未完成,则读出数据的最高位是原来写入字节最高位的反码。据此,单片机可判断芯片的编程是否结束。如果读出的数据与写入的数据相同,表示芯片已完成编程,可继续向2864A装载下一页数据。 上面介绍的E2PROM都是针对Intel公司的产品,其它公司的产品不一定相同。 96

接口电路如图8-23所示。2864A的片选端 与P2.7连接,8K字节存储器可作为数据存储器用,但掉电后数据不丢失。 8.6.3 AT89S51扩展E2PROM AT2864设计 接口电路如图8-23所示。2864A的片选端 与P2.7连接,8K字节存储器可作为数据存储器用,但掉电后数据不丢失。 AT89S51对2864A进行写操作时所用指令包括: MOVX @DPTR,A MOVX @Ri,A AT89S51对2864A进行读操作时所用指令包括: MOVX A,@DPTR MOVX A,@Ri 97

图8-23 2864A与AT89S51单片机的接口电路 98

下面介绍对2864A装载一个页面数据(16个字节)的子程序WR2的编写。 被写入的数据取自源数据区,子程序入口参数为: R1=写入2864A的字节数(16B) R2=2864A的低位地址 P2=2864A的高位地址 DPTR=源数据区首地址 99

WR2: MOVX A,@DPTR ;取写入的数据 MOV R2,A ;数据暂存R2,备查询 MOVX @R0,A ;写入2864A INC DPTR ;源地址指针加1 INC R0 ;目的地址指针加1 CJNE R0,#00H,NEXT;低位地址指针未满跳NEXT处 INC R2 ;否则高位指针加1 NEXT: DJNZ R1,WR2 ;页面未装载完转移 DEC R0 ;页装载完,恢复最后写入数据的地址 LOOP: MOVX A,@R0 ;读2864A XRL A, R2 ;与写入的最后一个数据相异或 JB ACC.7,LOOP ;最高位不等,再查 RET ;最高位相同,一页写完 100

上述写入程序中,完成页面装载的循环部分共8条指令,当采用12MHz晶振时,进行时间约为13s,完全符合2864A的TBLW的宽度要求。 8 上述写入程序中,完成页面装载的循环部分共8条指令,当采用12MHz晶振时,进行时间约为13s,完全符合2864A的TBLW的宽度要求。 8.7 片内Flash存储器的编程 讨论如何把调试完毕的程序写入AT89S51的片内Flash存储器,即Flash存储器编程问题。 AT89S51片内4K字节Flash存储器的基本性能如下: (1)可循环写入/擦除1 000次。 (2)存储器数据保存时间为10年。 (3)程序存储器具有3级加密保护。 101

AT89S51出厂时,Flash存储器处于全部空白状态(各单元均为FFH),可直接进行编程。若不全为空白状态(即单元中有不是FFH的),应首先将芯片擦除后,方可写入程序。 AT89S51片内的Flash存储器有3个可编程的加密位,定义了3个加密级别,只要对3个加密位:LB1、LB2、LB3进行编程即可实现3个不同级别的加密。3个加密位的状态可以是编程(P)或不编程(U),3个加密位的状态所提供的3个级别的加密功能见表8-12。 对3个加密位的编程可参照表8-13所列控制信号来进行,也可按照所购买的编程器的菜单,选择加密功能 102

选项(如果有的话)即可。 经过上述加密处理,使解密难度加大,但还可解密。 现在有一种非恢复性加密(OTP加密)方法,就是将AT89S51的第31脚( 脚)烧断或某些数据线烧断,经过上述处理的芯片仍正常工作,但不再具有读取、擦除、重复烧写等功能。是一种较强的加密手段。国内某些厂家编程器直接具有此功能(例如RF-1800编程器)。 如何将调试好的程序写入到片内的Flash存储器中?片内Flash存储器有低电压编程(VPP=5V)和高电压编程(VPP=12V)两类芯片。 104

低电压编程可用于在线编程,高电压编程与一般常用的EPROM编程器兼容。在AT89S51芯片的封装面上标有低电压编程还是高电压编程的编程电压标志。 应用程序在PC机中与在线仿真器以及用户目标板一起调试通过后,PC机中调试完毕的程序代码文件(.Hex目标文件),必须写入到AT89S51片内的闪速存储器中。 目前常用的编程方法主要有两种:一种是使用通用编程器编程,另一种是使用下载型编程器进行编程。下面介绍如何对AT89S51片内的Flash存储器进行编程。 105

8.7.1 通用编程器编程 下载程序时,编程器只是将AT89S51看作一个待写入程序的外部程序存储器芯片。PC机中的程序代码一般通过串行口或USB口与PC机连接,并有相应的服务程序。 在编程器与PC机连接好以后,运行服务程序,在服务程序中先选择所要编程的单片机型号,再调入.Hex目标文件,编程器就将目标文件烧录到单片机片内的Flash存储器中。开发者只需在市场购买现成的编程器。下面以市场上常见RF-810编程器为例,介绍基本功能。 RF-810编程器的性能特点如下: 106

(1)可对100余厂家的1000多种常用器件进行编程与测试。 (2)采用40脚锁紧插座,与PC机并行口(打印机口)连机 工作。 (3)可自行调整烧录电压的参数,具有芯片损坏、插反检测 功能,可有效地保护芯片。 (4)对各种单片机内Flash存储器、EPROM、E2PROM、 PLD进行编程。 RF-810编程器配备全中文的Windows环境下运行的驱动软件。对芯片的编程不需要人工干预,软件用户界面易学,使用方便。

RF-810编程器套件包括:RF-810编程器主机,并口电缆及匹配器插座以及AC/DC电源适配器等。使用编程器前应先进行硬件安装和软件安装。 硬件安装时,首先把编程器的电缆与PC机并行口连接好后,再接通PC机电源,打开编程器的电源开关,编程器主机上的电源灯亮。此时,再进行编程器软件安装。PC机电源接通后,进入Windows环境。编程器的软件安装与普通软件的安装方法相同。软件安装完毕后,自动在桌面上形成RF-810编程器的图标。 点击RF-810编程器的图标,进入主菜单。主菜单下有如下功能的快捷方式图标的命令可供选择。 108

(1)选择要编程芯片的厂家、类型、型号、容量等。 (2)编程的内容调入缓冲区,进行浏览、修改操作。 (3)检查器件是否处于空白状态。 (4)可按照擦除、编程、校验等操作顺序自动完成对器件的全部操作过程。 (5)把缓冲区的内容写入到芯片内并进行校验。 (6)把器件的内容读入到缓冲区。 (7)校对器件内容和缓冲区内容是否一致,并列出有差异的第一个单元的地址。 (8)逐单元比较器件内容和缓冲区内容有无差异,并将有差异的单元列表显示。 109

(9)将器件的内容在屏幕上显示。 具体使用,可详细阅读所购买的编程器的使用说明书。 8. 7 (9)将器件的内容在屏幕上显示。 具体使用,可详细阅读所购买的编程器的使用说明书。 8.7.2 ISP编程 AT89S5x系列单片机支持ISP。是指在电路板上的被编程的空白器件可以直接写入程序代码,而不需要从电路板上取下器件,已编程的器件也可用ISP方式擦除或再编程。 ISP下载编程器可以自行制作,也可电子市场购买。 ISP下载编程器与单片机一端连接的端口通常采用ATMEL公司提供的接口标准,即10引脚的IDC端口。图8-24为IDC端口的实物图以及端口的定义。 110

图8-24 IDC端口的实物图以及端口的定义 111

采用ISP下载程序时,用户板上必须装有上述IDC端口,端口信号线必须与目标板上AT89S51的对应引脚连接。注意,图中的8脚P1 采用ISP下载程序时,用户板上必须装有上述IDC端口,端口信号线必须与目标板上AT89S51的对应引脚连接。注意,图中的8脚P1.4( )端只对AT89LP系列单片机有效,对AT89S5x系列单片机无效,不用连接。 常见市售的ISP下载型编程器为ISPro下载型编程器。用户将安装光盘插入光驱,运行安装程序SETUP.exe即可。安装后,在桌面上建立一个“ISPro.exe下载型编程器”图标,双击该图标,即可启动编程软件。 ISPro下载型编程器软件的使用与RF-810软件的使用方法基本相同,可参照编程器使用说明书进行操作。 112

上面介绍了两种程序下载的方法,就单片机的发展方向而言,已经趋向于ISP程序下载方式,一方面由于原有不支持ISP下载的芯片逐渐被淘汰(大部分已经停产),另一方面ISP使用起来十分方便,不增加太多的成本就可以实现程序的下载,所以ISP下载方式已经逐步成为主流。 113