1、08300720452 张阳 实验1 地址译码 一、 实验目的 通过本实验掌握MCS-51系列单片机的存储器系统,并掌握外部存储器的扩展技术,明白外部程序存储器和外部数据存储器的工作周期。 二、 实验内容 利用A2区的A0-A15,B_RD,B_WR和A3区的74LS138设计译码电路,并用示波器观测选通脉冲并测量宽度。 1.利用MOVX指令,产生地址为2003H的外部数据空间地址选通信号(需要读写控制信号参与)。 2.利用MOVC指令,产生地址为2003H的外部程序空间地址选通信号,并用示波器观测。(无需读写控制信号参与)。 1. 使用MOVX指令访问外部数据存储器,
2、读控制信号参与。 执行程序如下: 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指令, 写控制信号参与 执行程序如
3、下: 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 00
4、00H ;伪指令,指定程序从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指令, 无需读写控制信
5、号参与。使用对外部程序存储器进行选通。 三、 实验记录 指令 选通脉冲宽度(ns) 周期宽度(us) MOVX(read) 536 8.700 MOVX(write) 540 8.700 MOVC 540 9.800 晶振周期为12MHz 四、 实验数据分析 1) 在分析实验所得数据之前,我们应该先了解一下指令操作及硬件执行的计数方法,比如在MOVX读操作时序图中(下图),P、S的含义是什么。 所谓时序,是指在执行指令过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的相互关系。 1.拍节:振荡脉冲的周期(晶振周期)定
6、义为拍节(用“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读操作 由于读信
7、号和地址选通信号同时参与,要选择持续时间最短及重叠,考虑: 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写操作 外部数据存储器的写周期时序图如下,
8、分析与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并不改变,所以实际上有
9、效选通脉冲宽度为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) 示波器的误差和人为读数产生的误差。






