第8章思考题及习题8参考答案一、填空1.单片机存储器的主要功能是存储和。答:程序、数据。2.假设外部数据存储器2000H单元的内容为80H,执行下列指令后累加器A中的内容为。MOVP2,#20HMOVR0,#00HMOVXA,@R0答:80H。3.在存储器扩展中,无论是线选法还是译码法最终都是为扩展芯片的端提供控制信号。答:片选。4.起止范围为0000H~3FFFH的数据存储器的容量是KB。答:16KB。5.在AT89S52单片机中,PC和DPTR都用于提供地址,但PC是为访问存储器提供地址,而DPTR是为访问存储器提供地址。答:程序、数据。6.11条地址线可选个存储单元,16KB存储单元需要条地址线。答:2K,14。7.4KBRAM存储器的首地址若为0000H,则末地址为H。答:0FFF。8.若单片机外扩32KB数据存储器的首地址若为4000H,则末地址为H。答:BFFF9.设计一个以AT89S52单片机为核心的系统,如果不外扩程序存储器,使其内部8KB闪烁程序存储器有效,则其引脚应该接。答:EA*,+5V10.74LS138是具有3个输入的译码器芯片,其输出常作片选信号,可选中片芯片中的任一芯片,并且只有1路输出为电平,其它输出均为电平。答:8,低,高;二、单选1.区分AT89S51单片机片外程序存储器和片外数据存储器的最可靠方法是。A.看其位于地址范围的低端还是高端B.看其离AT89S51单片机芯片的远近C.看其芯片的型号是ROM还是RAMD.看其是与RD信号连接还是与PSEN信号连接答:D2.访问片外数据存储器的寻址方式是。A.立即寻址B.寄存器寻址C.寄存器间接寻址D.直接寻址答:C3.若要同时扩展4片2KB的RAM和4片4KB的ROM,则最少需要根地址线。A、12B、13C、14D、154.当EA=1时,AT89S52单片机可以扩展的外部程序存储器的最大容量为。A.64KBB.60KBC.58KBD.56KB答:D5.若某数据存储器芯片地址线为12根,那么它的存储容量为。A、1KBB.4KBC.2KBD.8KB答:B三、编程1.试编写一个程序(如将05H和06H拼为56H),设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H。答:本题主要考察对外部存储器的读、写操作,只要记住正确使用MOVX指令就可以了。编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。ORG0000HMAIN:MOVDPTR,#2001H;设置数据指针的初值MOVXA,@DPTR;读取2001H的值SWAPAANLA,#0F0H;屏蔽掉低四位MOV30H,A;保存AINCDPTR;指针指向下一个MOVXA,@DPTR;读取2002H的值ANLA,#0FH;屏蔽掉高四位ORLA,30H;进行拼装MOVX@DPTR,A;保存到2002HEND2.编写程序,将外部数据存储器中的4000H~40FFH单元全部清“0”。答:本题主要考察对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了。ORG0000HMAIN:MOVA,#0;送预置数给AMOVR0,#0FFH;设置循环次数MOVDPTR,#4000H;设置数据指针的初值LOOP:MOVX@DPTR,A;当前单元清零INCDPTR;指向下一个单元DJNZR0,LOOP;是否结束END四、简答1.在AT89S52单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,为何不会发生冲突?答:因为控制信号线的不同:外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为OE*和WE*。外扩RAM的读、写控制引脚分别与AT89S51的RD*和WR*引脚相连。外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE*,该引脚与AT89S52单片机的PSEN*相连。2.题图8-1(a)所示为AT89S51单片机中存储器的地址空间分布图。题图8-1(b)题图8-1为存储器的地址译码电路,为使地址译码电路按题图8-1(a)所示的要求进行正确寻址,要求画出:(1)A组跨接端子的内部正确连线图。(2)B组跨接端子的内部正确连线图。答:(1)A组跨接端子的内部正确连线图(2)B组跨接端子的内部正确连线图注意:答案不唯一,还有其他连接方法,也可满足题目要求。