您的位置: 网站首页 > 电子与嵌入式 > 单片机原理与应用 > 附录A 练习题参考答案 > 【第5章 半导体存储器】

第5章 半导体存储器

 

1)程序、数据。

2)试编写一个程序(例如将05H06H拼为56H),设原始数据放在片外数据区2001H2002H单元中,按顺序拼装后的单字节数放入2002H单元。

解:本题主要考察了对外部存储器的读、写操作,读者只要记住正确使用MOVX指令就可以了。编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高4位和低4位互换,再屏蔽掉低4位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高4位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。

       ORG 0000H

MAIN:  MOV DPTR,#2001H      ;设置数据指针的初值

       MOVX A,@DPTR         ;读取2001H的值

       SWAP A              

       ANL A,#0F0H          ;屏蔽掉低4

       MOV 30H,A             ;保存A

       INC DPTR              ;指针指向下一个

       MOVX A,@DPTR         ;读取2002H的值

       ANL A,#0FH           ;屏蔽掉高4

       ORL A,30H             ;进行拼装

       MOVX @DPTR,A         ;保存到2002H

       END

380H

4)编写程序,将外部数据存储器中的4000H40FFH单元全部清零。

解:本题主要考察了对外部数据块的写操作,编程时只要注意循环次数和MOVX指令的使用就可以了。

       ORG 0000H

MAIN:  MOV A,#0              ;送预置数给A

       MOV R0,#0FFH          ;设置循环次数

       MOV DPTR,#4000H      ;设置数据指针的初值

LOOP:  MOVX @DPTR,A         ;当前单元清零

       INC DPTR              ;指向下一个单元

       DJNZ R0,LOOP         ;是否结束   

       END

5)在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?

解:因为控制信号线的不同。

外扩的RAM芯片既能读出又能写入,所以通常都有读/写控制引脚,记为 。外扩RAM的读、写控制引脚分别与MCS-51引脚相连。

外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为,该引脚与MCS-51单片机的相连。

6解:本题的答案是34

7)片选。

816

9)程序,数据。

102KB14

分析:通过总结所学知识,我们得到以下几个信息,2KB的存储器需要11根地址线,地址为0000H07FFH4KB的存储器需要12根地址线,地址为0000H0FFFH8KB的存储器需要13根地址线,地址为0000H1FFFH16KB的存储器需要14根地址线,地址为0000H3FFFH32KB的存储器需要15根地址线,地址为0000H7FFFH64KB的存储器需要16根地址线,地址为0000HFFFFH(以上存储器的首地址均默认为0000H)。

119FFF

分析:由上题总结得出,32KB RAM存储器的大小为0000H7FFFH,所以只要在后面加上2000H即得到正确答案。

12)现有8031单片机、74LS373锁存器、一片2764EPROM和两片6116RAM,请使用它们组成一个单片机系统,要求:

画出硬件电路连线图,并标注主要引脚。

指出该应用系统程序存储器空间和数据存储器空间各自的地址范围。

解:电路图如图A-1所示。

2764的地址为C000HDFFFH

第一个6116的地址为A000HA7FFH

第二个6116的地址为6000H67FFH

事实上,由于采用的是线选法,导致了地址不连续,地址空间利用不充分。建议在实际工作中要具体情况具体分析,在两种地址分配中选一种较好的来应用。

文本框: 图A-1  硬件电路连线图

6 

1)编写出外部中断1为跳沿触发的中断初始化程序。

答:

        SETB    IT1

        SETB    EX1

        SETB    EA

2D

3ACD

4)中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?

答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断。

5)某系统有3个外部中断源123,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到低依次为321,中断处理程序的入口地址分别为1000H1100H1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。

答:若仅在/INT0引脚接3个外部中断源,则编写程序如下:

            ORG0000H

            LJMP MAIN

            ORG0003H

            LJMP INT_EX0

            ORG0030H

MAIN:   CLR IT0                  ;采用低电平有效中断

            SETB EX0                ;允许外部中断0

            SETB EA            

            ; 插入用户程序   

WAIT:   MOVPCON,#01H           ;单片机进入休眠方式等待中断

            NOP

            LJMP WAIT

;以下为外部中断0服务子程序

INT_EX0:JNB P1.0,NEXT1          ;判断是不是1号中断

            LJMP INT_IR1            ;跳转到1号中断处理程序

NEXT1:  JNB P1.1,NEXT2           ;判断是不是2号中断

            LJMP INT_IR2            ;跳转到2号中断处理程序

NEXT2:  LJMP INT_IR3            ;跳转到3号中断处理程序

            ORG1000H

INT_IR1:       

            ;插入相应中断处理程序

            RETI                    ;中断返回

            ORG1100H

INT_IR2:       

            ;插入相应中断处理程序

            RETI                    ;中断返回

            ORG1200H

INT_IR3:       

            ;插入相应中断处理程序

             RETI                     ;中断返回