资源描述
08300720452 张阳
实验1 地址译码
一、 实验目的
通过本实验掌握MCS-51系列单片机的存储器系统,并掌握外部存储器的扩展技术,明白外部程序存储器和外部数据存储器的工作周期。
二、 实验内容
利用A2区的A0-A15,B_RD,B_WR和A3区的74LS138设计译码电路,并用示波器观测选通脉冲并测量宽度。
1.利用MOVX指令,产生地址为2003H的外部数据空间地址选通信号(需要读写控制信号参与)。
2.利用MOVC指令,产生地址为2003H的外部程序空间地址选通信号,并用示波器观测。(无需读写控制信号参与)。
1. 使用MOVX指令访问外部数据存储器,读控制信号参与。
执行程序如下:
ORG 0000H ;伪指令,指定程序从0000H开始存放
AJMP MAIN ;跳转指令,程序跳转到MAIN处
ORG 0100H ;伪指令,指定以下程序从0100H开始存放
MAIN:
MOV DPTR,#2003H ;DPTR提供16位地址
LOOP:
MOVX A,@DPTR ;2003H单元内容送入A中
NOP ;Delay
NOP
NOP
NOP
AJMP LOOP ;继续循环
END
2. 利用MOVX指令, 写控制信号参与
执行程序如下:
ORG 0000H ;伪指令,指定程序从0000H开始存放
AJMP MAIN ;跳转指令,程序跳转到MAIN处
ORG 0100H ;伪指令,指定以下程序从0100H开始存放
MAIN:
MOV DPTR,#2003H ;DPTR提供16位地址
LOOP:
MOVX @DPTR,A ;A中内容送入2003H单元
NOP ;Delay
NOP
NOP
NOP
AJMP LOOP ;继续循环
END
3. 利用MOVC指令, 无需读写控制信号参与
执行程序如下:
ORG 0000H ;伪指令,指定程序从0000H开始存放
LJMP MAIN ;跳转指令,程序跳转到MAIN处
ORG 0100H ;伪指令,指定以下程序从0100H开始存放
MAIN:
MOV DPTR,#2003H ;DPTR提供16位地址
LOOP:
MOV A,#0000H ;给A赋值0
MOVC A,@A+DPTR ;2003H单元内容送入A中
NOP ;Delay
NOP
NOP
NOP
AJMP MAIN ;继续循环
END
利用MOVC指令, 无需读写控制信号参与。使用对外部程序存储器进行选通。
三、 实验记录
指令
选通脉冲宽度(ns)
周期宽度(us)
MOVX(read)
536
8.700
MOVX(write)
540
8.700
MOVC
540
9.800
晶振周期为12MHz
四、 实验数据分析
1) 在分析实验所得数据之前,我们应该先了解一下指令操作及硬件执行的计数方法,比如在MOVX读操作时序图中(下图),P、S的含义是什么。
所谓时序,是指在执行指令过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的相互关系。
1.拍节:振荡脉冲的周期(晶振周期)定义为拍节(用“P”表示)。
2.状态:振荡脉冲经过两分频后,就是单片机的时钟信号,把时钟信号的周期定义为状态(用“S”来表示)。这样,一个状态包含两个拍节,前半周期为拍节1(P1),后半周期为拍节2(P2)。
3.机器周期:规定一个机器周期为6个状态,相当于12个拍节,即12个振荡脉冲的周期,可分别用S1~S6来表示状态,S1P1、S1P2、S2P1、S2P2……S6P2来表示拍节。
4.指令周期:执行一条指令所需要的时间称之为指令周期,指令周期以机器周期的数目来表示。
(以上摘自课件)
因此,P的频率为12M,S的频率为6M,工作周期频率为1M。
2) MOVX读操作
由于读信号和地址选通信号同时参与,要选择持续时间最短及重叠,考虑:
1.DPL持续时间:就是锁存器的持续时间为ALE两个下降沿的间隔,即第一个工作周期的S5P2到第二个工作周期的S5P1,共12个拍节;
2.DPH持续时间:与DPL一致;
3.RD信号持续时间:低电平有效,故为第二个工作周期的S1P1到S3P2,共6个拍节。
所以脉冲宽度应为6个拍节,6÷12MHz=500ns,与实验测得536ns接近。
查书附表得,指令MOVX占2个机器周期,NOP为1个,AJMP为2个,共计8个机器周期,一个循环需要8÷1MHz=8us。
3) MOVX写操作
外部数据存储器的写周期时序图如下,
分析与MOVX读操作一样,脉冲宽度应为写信号的6个拍节,500ns,而总周期为8个机器周期,8us。
4) MOVC操作
外部程序存储器访问时序图如下,
执行MOVC时除了地址信号没有读写信号参与,于是只需要考虑PCL和PCH的持续时间即可得到脉冲宽度:
1.PCL持续时间:两个ALE下降沿间隔,S2P2到S5P1,6个拍节;
2.PCH持续时间:S2P1到S4P2,6个拍节。
这里有个值得注意的地方,PCL和PCH重叠的部分只有S2P2到S4P2,即5个拍节,但是从时序图中看,P2端口是持续输出PCH的,只不过地址改变,而PCH是高8位,当PC+1时,PCH并不改变,所以实际上有效选通脉冲宽度为6个拍节,即500ns。
在程序循环中,加了一条MOV指令,确保累加器A值不变,立即数MOV为1个机器周期,MOVC为2个,故共计9个机器周期,即9us。
五、 误差分析与总结
1) 振荡频率可能不为严格12MHz,下面将6个数据一一计算:
根据公式f=nT ,n为拍节数,T为时间,
时间(us)
0.536
8.700
0.540
8.700
0.540
9.800
拍节数
6
96
6
96
6
108
频率(MHz)
11.194
11.034
11.111
11.034
11.111
11.020
综上结果,振荡频率应该在11.1MHz左右。
2) 地址信号,控制信号波形不理想,上升下降沿有斜度,信号有延迟,早消现象等等。
3) 示波器的误差和人为读数产生的误差。
展开阅读全文