2. AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?(4分) 答:
因为访问外扩的程序存储器和数据存储器执行的指令不同,所发出的控制信号也就不同。(2分) 读外部数据存储器时,RD*信号有效。写外部数据存储器时,WR*信号有效。而读外部程序存储器时,PSEN*信号有效。由于发出的控制信号不同,且只能有一种信号有效,因此,即使MCS-51外扩的程序存储器和数据存储器有相同的地址空间,也不会发生数据冲突。(2分) 1、 MCS-51单片机片内256B的数据存储器可分为几个区?分别作什么用?(8分) 答:
(1)通用工作寄存器区,00H – 1FH,共4组,R0-R7,在程序中直接使用 (2)可位寻址区,20H-2FH,可进行位操作,也可字节寻址 (3)用户RAM区,30H-7FH,只可字节寻址,用于数据缓冲及堆栈区 (4)特殊功能寄存器区,80H-FFH,21个特殊功能寄存器离散地分布在该区内,用于实现各种控制功能
3.说明AT89S51的外部引脚EA*的作用?(3分) 答:
EA*是内外程序存储器选择控制信号。(1分) 当EA*=0时,只选择外部程序存储器。(1分) 当EA*=1时,当PC指针≤0FFFH时,只访问片内程序存储器;当PC指针>0FFFH时,则访问外部程序存储器(1分)
5.LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?(4分) 答:
静态:显示期间,锁存器输出的段码不变;亮度大,各位LED的段选分别控制;位数多硬件电路复杂 动态:所有位段码线并连一起,各位的亮灭靠片选控制端控制,亮度较低,多位控制电路简单
2.中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?(4分) 答:RETI除了将压栈的内容出栈外(即现场恢复),还清除在中断响应时被置1的AT89S51内部中断优先级寄存器的优先级状态。
五、简述行列式扫描键盘的工作原理。(10分) 答: 1)首先判断有无键按下: (3分) 将列线全部置0,读行线状态,若P1.0~P1.3全为1,则表明无键按下,若出现低电平即0,则有键按下,记录下行号 i ;
2) 其次,如有键按下,判断具体键号 (7分) 方法如下:逐列为低,其它为高,再读行线状态,如出现哪一行为低,记录此时的列号j , 则证明第i行第j列的按键被按下,至此完成键盘的行列式扫描。 五、画出AT89S51系列单片机利用串行口进行1台主机与4台从机多机串行通讯连线图,其中1台从机通讯地址号为02H,请叙述主机向02H从机发送一个字节数据的过程(10分) 答:主机发送数据过程如下:
(1)将从机00~03H的REN置1,SM2=1,并使它们工作在串行口工作方式2或3。
(2)由主机向4个从机发出一帧地址址信息02H,第9位为1。从机接到信息后均发生中断,执行中断服务程序,将02H与自身地址做比较。若相同,则清SM2=0,若不同则SM2不变仍为1。
(3)主机发送一帧数据信息,第9位为0,从机接到信息后,只有SM2=0的从机发生中断,将数据信息收取,其余SM2=1的从机不放出中断,信息丢失,从而实现主机向02H从机发送一个字节数据的功能。
四、简述AT89S51单片机主从结构多机通信原理,设有一台主机与三台从机通信,其中一台从机通信地址号为01H,请叙述主机呼叫从机并向其传送一个字节数据的过程。(请给出原理图) (10分) 答:1) 原理图 (2分)
2) 将所有从机的REN、SM2置1 (1分) 工作在方式2或3 (1分) 3)主机发送一个地址桢01H (1分) 第9位为1即TB8=1 (1分)
4) 各从机接收到后,都发生中断,进入中断服务程序,比较自己的地址与01H是否相同,若相同则将本机SM2置0,否则仍为1 (1分)
5)主机发送数据桢,TB8=0 (1分) 各从机接收该数据桢,从机中SM2为0的产生中断,而其它SM2为1的从机不产生中断将信息丢弃,从而实现主机与从机传递数据 (2分) 六、请回答:(共16分)
1.下图中外部扩展的程序存储器和数据存储器容量各是多少?(2分)
2.两片存储器芯片的地址范围分别是多少?(地址线未用到的位填1) (6分,) 3.请编写程序,要求:
1
(1)将内部RAM 30H~3FH中的内容送入1# 6264的前16个单元中;(4分) (2)将2# 6264的前4个单元的内容送入40H~43中;(4分)
解: 1. 外扩程序存储器的容量是8K,外扩数据存储器的容量是16K
2. 2764范围: C000H~DFFFH
1#范围: A000H~BFFFH 2#范围: 6000H~7FFFH
3.请编写程序 (1) MOV R1 ,#10H MOV DPTR,@0A000H MOV R0,#30H LOOP: MOV A,@R0 MOVX @DPTR,A
INC DPTR INC R0
DJNZ R1,LOOP
RET
(2) MOV R1,#04H MOV DPTR,#6000H MOV R0 ,#40H LOOP:MOVX A ,@DPTR MOV @R0 ,A INC DPTR INC R0 DJNZ R1,LOOP RET
六、请回答:(共14分)
1.下图中外部扩展的程序存储器和数据存储器容量各是多少?(2分) 2.三片存储器芯片的地址范围分别是多少?(地址线未用到的位填1) (4分,) 3.请编写程序,要求:
(1) 将内部RAM 40H-4FH中的内容送入1# 6264的前16个单元中;(4分) (2) 将2# 6264 的前4个单元的内容送入50H-53H中;(4分) 答:
1.解外部扩展的程序存储器容量为:8KB
外部扩展的数据存储器容量为:8KB×2=16kb 2. 程序存储器2764地址的高3位: A15 A14 A13 0 0 0 地址范围为:0000H-1FFFH
数据存储器1#6264地址高3位: A15 A14 A13 0 1 1 地址范围为:6000H-7FFFH 数据存储器2#6264地址范围为: A15 A14 A13 1 0 1 地址范围为:A000H-BFFFH 3.编写程序
(1) MOV RO, #40H
MOV DPTR, #6000H ;设置数据指针为6000H
LOOP:MOV A, @RO ; 将片内RAM(40-4FH)中的内容送入A中 MOVX @DPTR,A ; 将A→@DPTR中 INC RO INC DPTR
CJNE RO,#50H,LOOP ; 将此子程序循环执行16次 RET
(2) MOV RO, #50H
MOV DPTR, #0A000H ; 设置数据指针为A000H
2
LOOP: MOVX A, @DPTR MOVX @RO,A ; 将外部数据存储器内容送入到片内中 INC RO INC DPTR
CJNE RO,#54H,LOOP ; 将此子程序循环执行4次 RET
七、回答下列问题并写出简要分析过程。(本题16分)
左下图是DAC0832的应用电路,DA转换时数字量FFH与00H分别对应于模拟量+5V与0V。右下图给出了DAC0832的逻辑结构。(1)将图中空缺的电路补充完整;(2)编写程序,产生图中所示锯齿波。设有一个延时3.905ms的子程序DELAY
可以直接调用。
DAC0832的逻辑结构
答:
(1)共6根线,每根线1分。连线如图,如果WR2*与WR*或XFER*相连也给分。ILE直接接+5V也正确。 (2) ORG 1000H MOV R0, #0FEH ;(3分) 或:MOV DPTR, #FFFEH MOV A, #00H ;(1分) LOOP: MOVX @R0, A ;(1分) 或:MOVX @DPTR, A INC A ;(1分) LCALL DELAY ;(3分) SIMP LOOP ;(1分)
2.用一条什么指令可以取代下列前4条指令?(4分)
MOV DPTR,#1020H PUSH DPH PUSH DPL RET
ORG 1020H
W12: …………
ORG 2010H
W34: …………
3.位地址00H—7FH和片内字节地址00H—7FH编址相同,读写时会不会搞错?为什么?
4. 当CPU响应外部中断0后,执行了外部中断0中断服务子程序的第一条单字节指令后,PC的内容为多少? ORG 0003H LJMP 2000H ORG 000BH
LJMP 3000H
1. 如果(DPTR)=447BH,(SP)=42H,(40H)=80H,(41H)=70H,(42H)=60H,则执行下列指令后:(4分)
POP DPH POP DPL POP A 则:(DPH)= ;(DPL)= ;(A)= (SP)= ;
1. 中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?
3