资源描述
试验四 用EPROM扩展单片机ROM实验
实验项目名称:用EPROM扩展单片机ROM实验
实验项目性质:普通
所属课程名称:
实验计划学时:2学时
一.实验目的
1. 用EPROM27C64扩展AT89C51单片机ROM(27C64为外ROM)。
2. 用PROTEUS设计,仿真AT89C51单片机ROM的扩展实验。
3. 借助PROTEUS VSM 的虚拟逻辑分析仪,观测单片机访问外ROM(即27C64)时地址,数据和控制总线的信号状态。
二.PROTEUS电路设计
27C64扩展ROM电路原理图如图4-1所示,(注意:本原理图中的复位电路和振荡电路均未画)。整个设计都在ISIS平台中进行。
1. 从PROTEUS库中选取元器件
① AT89C51.BUS:总线式的单片机;
② RES: 电阻;
③ 7SEG-BCD-GRN: 带BCD译码七段绿光数码管;
④ CAP,CAP-ELEC: 电容,点解电容;
⑤ CRYSTAL: 晶振;
⑥ 74LS373:八D锁存器;
⑦ 27C64:EPROM存储器。
图4-1 27C64扩展外ROM电路原理图
2. 放置元器件,放置电源和地,连线,元器件属性设置,电气检测
所有操作都是在ISIS中进行。它们都与第3.1节相似,故不详述。但要注意总线标注要匹配,标注方法参看第3.4.2节,3.6.2节,EA脚接正电源。
4.1.3源程序设计,生成目标代码文件
1. 源程序设计
经ROM扩展后的单片机系统,其程序存储器ROM分内ROM(单片机)和外ROM(27C64)两部分。本实验AT89C51内ROM为4KB,地址从0H到0FFFH;外ROM 27C64为8KB,地址从0H到1FFFH。所以程序设计也要分别设计单片机内ROM源程序和外ROM 27C64源程序;分别生成目标代码文件;分别写入单片机内ROM和外ROM 27C64中。
图4-2 源程序添加结果
通过菜单“Source→Add/Remove Source Files...”新建两个源程序文件:2764.ASM和P2764.ASM,如图4-2 所示。
通过菜单“Source→2764.ASM”,“Source→P2764.ASM”,分别打开各自的源程序文件,且分别使用编辑器SRCEDIT设计程序。现举一简单例子如下:
(1) 单片机源程序设计
ORG 0
LJMP 1000H;
END
(2)外存储器源程序设计
ORG 1000H ;数码管循环显示0,1,…F
MOV R2,#0
MOV A,R2
STAR: MOV P1,A ;1个机器周期
INC R2 ;1个机器周期
MOV A,R2 ;1个机器周期
ANL A,#0FH ;1个机器周期
SJMP STAR ;2个机器周期
END
每个源程序编好后,都单击按钮保存源程序文件。
2. 生成目标代码文件
通过菜单“Source→Build ALL”编译源程序,生成目标代码文件2764.HEX,P2764.HEX。若编译失败,对程序修改调试直至编译成功。
四.POTEUS仿真
1.加载目标代码文件
(1)加载目标代码文件
对AT89C51单片机先右后左击,打开其属性编辑窗口,在“Program File”栏中添加目标代码文件2764.HEX;在“Clock Frequency”栏中输入晶振频率为120Hz。
(2)加载27C64目标代码文件
对27C64先右后左击,打开27C64的属性编辑对话框,在映像文件“Image File”栏中输入外ROM程序的目标代码文件P2764.HEX,如图4-3所示。
图4-3 添加外ROM代码
2.加载目标代码文件
单击按钮,启动仿真,仿真运行片段如图4-4所示。从单片机源程序和外ROM27C64源程序可看出,启动仿真后,因单片机的EA脚接电源,从单片机内ROM地址0H开始执行指令LJMP1000H。因内ROM的最大地址为0FFFH,而外ROM27C64的地址从0H到1FFFH,当指令地址大于0FFFH时就自动转到外ROM中去执行程序。所以,执行LJMP1000H是跳到外ROM27C64的地址1000H处执行外ROM27C64中的程序。它是令数码管不断循环显示0,1…F的程序,都在外ROM27C64中执行,这正反应了“扩展单片机ROM实验”的意义。
图4-4 用EPROM扩展单片机ROM实验的仿真片段
若要观察外ROM27C64中程序的机器代码,可在启动仿真后单击仿真暂停按钮。再通过菜单“DEBUG→Memory Contents-U2”,则弹出显示外ROM27C64机器代码的存储器内容窗口,如图4-5所示。从中可查看地址1000H-100AH外存储器中数据为7A,00,EA,F5,90,0A,EA,54,0F,80,F8。它们正好是外ROM源程序的目标代码。
图4-5 观察外ROM 27C64中程序的机器代码
展开阅读全文