复旦大学微机接口实验地址译码实验报告
地址译码实验报告
一、实验目的:
1. 熟悉MCS-51的地址空间
2. 掌握MCS-51外部程序空间的访问
3. 掌握MCS-51外部数据空间的访问
二、 实验内容:
利用A2区的A0-A15,B_RD,B_WR和A3区的74LS138
译码电路,并用示波器观测选通脉冲并测量宽度。
1.利用MOVC指令,产生地址为2003H的外部程序空间地址选通信号(无需读写控制信号参与)。
2.利用MOVX指令,产生地址为2003H的外部数据空间地址选通信号,并用示波器观测。(需要读写控制信号参与)。
三、实验原理与要求
1.原理
在51单片机中,如需进行系统扩展,所需的16条地址线分别由P2和P0口提供,8条数据信号线由P0口提供。P0口是地址/数据复用总线,分时传送低8位地址和数据,由地址锁存允许信号ALE控制地址传送,外部程序存储器读
___________
选通信号PSEN控制它的数据传送。
图1
2.要求
利用A2区的A0-A15,B_RD,B_WR和A3区的74LS138设计译码电路,并用示波器观测选通脉冲并测量宽度。
, 利用MOVX指令,产生地址为2003H的外部数据空间地址选通信号(需要
读写控制信号参与)。
, 利用MOVC指令,产生地址为2003H的外部程序空间地址选通信号,并用
示波器观测。(无需读写控制信号参与)。
四、实验流程图
开始
初始化
执行选通操作
五、 实验原理图
图2、实验原理图
六、实验代码
用MOVX命令访问外部数据存储器 用MOVC命令访问外部程序存储器 ORG 8000H ORG 8000H
LJMP MAIN LJMP MAIN
ORG 8100H ;程序数据段定义 ORG 8100H ;程序数据段定义 MAIN: MAIN:
MOV DPTR, #2003H MOV DPTR, #2000H MOVX A, @DPTR MOV A, #03H SJMP MAIN MOVC A, @A+DPTR ; SJMP MAIN
END ;
END
九、实验数据:
数据空间地址选通信号:
Y3端测得到负脉冲,频率为153.4kHz,负脉冲宽度为1050ns。
___________
RD端的负脉冲脉宽为520ns,WR端的负脉冲脉宽为520ns。
程序空间地址选通信号:
Y3口向下的负脉冲信号频率为131.6kHz,负脉冲宽度为430ns。
实验数据
:
(一)数据存储器
1.一个机器周期由6个S状态组成;1个S状态包含2个P相位;1个P相位持续一个振荡周期。也就是说,一个机器周期包含了12个振荡周期。又,晶振频率为11.0592MHz,所以可以得到机器周期的频率为:
11.0592?12=0.9216MHz,
即921.6kHz。
又,由指令可以看到,
MOV DPTR,#0003H
MOVX A,@DPTR
SJMP MAIN
这三条指令,各需要占两个机器周期,因此一段代码需要占6个机器周期,即每六个机器周期,会对外部数据存储器访问一次,因此选通信号的频率理论上应该为:
921.6?6=153.6kHz。
这与实际测得的数据153.6kHz是一致的。
2. 由时序图可知,P2口的负脉冲占的时间为12个晶振周期,即一个机器周期;P0口只有一个P周期,即1/12个机器周期。由原理图可知,实验中把地址高三位作为3-8译码器的使能信号,低三位进行译码。实验中对Y3口进行测量,测量到了1050ns宽的负脉冲。这让我很费解,因为单从时序图来看,输出应为90ns。经过分析和思考,我认为,是由于低地址信号在P0口输出后,要经过锁存器进行锁存,由于ALE信号的作用,使得在一个P周期之后,地位地址依然有效。实验板的电原理图验证了这一想法。根据时序图,ALE两个下降沿之间恰好是一个时钟周期,即:
?0.9216MHZ=1085ns。 1
这与实际测得的脉宽1050ns是符合的。
___________
3. 由时序图可知,RD和WR信号的时间占3个S状态,即半个机器周期,因此理论上的时间应为:
1?0.9216MHZ?2=543ns。
这与实际测得的脉宽520ns是相符的。
(二)程序存储器
1. 对于外部程序存储器,时序图在教材图6.1。与前面程序存储器不同的是,指令
MOV A,#2000H
MOV DPTR,#0003H
MOVC A,@A+DPTR
SJMP MAIN
所占的机器周期分别为:2个、1个、2个、2个,故程序总共占了7个机器周期,因此理论的选通信号频率为:
0.9216MHZ?7=131.7kHz。
这与实验中测得的131.6kHz是一致的。
2. 关于对Y3端选通信号的检测,由时序图,P2口的输出占5个晶振周期;P0口的输出为一个P周期,理论值为90ns,但是由于锁存的作用,使得P0口在下一个ALE下降沿到来之前都有效。值得注意的是,虽然ALE控制信号两个下降沿之间有6个振荡周期,但是由于P2口作为使能信号只占5个振荡周期,所以,Y3口测得的负脉冲宽度也应为5个震荡周期即450ns。这与实验中测得的430ns相符。
十、实验小结:
通过对外部程序存储器和外部数据存储器的访问的比较,我发现,对程序存储器的访问要比访问数据存储器速度更快。主要原因是因为在对程序存储器的访问时,在P0端只复用了PCL和指令两类数据;而对外部数据存储器访问时,在P0端还要再复用DPL,这就使指令的运行时间加长,延缓了整个功能实现的速度。
同时,也是由于对程序存储器的访问速度比对数据存储器的高这一要求所决定的。
由于第一次做接口实验,有些摸不到头绪,故预习时对实验具体要怎么做不是很清楚。在课堂上经过和老师和同学的讨论,才对这个实验有了一定的了解。下次实验时应该做好更充分的准备,认真对实验原理进行研究,以期达到更好的效果。