2017-1微机原理与接口技术试卷A(答案) (2) 下载本文

内容发布更新时间 : 2024/11/17 7:32:32星期一 下面是文章的全部内容请认真阅读。

(说明:考试内容以89C51单片机为基础)班级 姓名 学号 一、 填空题(每空1分,共24 分) 1. MCS89C51单片机系统汇编程序中,程序计数器指针是 PC ,数据指针是 DPTR 。

2. 已知一系统中MCS89C51单片机的机器周期为2us,则在该系统中,单片机外接晶振为 6 MHz,

其指令最长周期为 8 us。

3. MCS89C51单片机的片内与片外数据存储器最大容量为 64KB+256B(128B) 。

4. 程序中“LOOP :SJMP rel”的相对转移以转移指令所在地址为基点向前最大可偏移 -128 单元地

址,向后最大可偏移 +127 单元地址。(正负号可不写)

5. MOVC A,@A+DPTR 这条指令的寻址方式为 变址 寻址方式。

6. MCS89C51单片机片内数据存储器中20H的第6位,它的位地址为 06H 。

7. 对于MCS89C51单片机串行口的方式1,每分钟要求传送14400字节数据,那么波特率应该设置为

2400 bit/s。

8. 目前单片机系统的扩展方式主要分为 并行扩展 和 串行扩展 两种。

9. MCS89C51单片机系统采用管脚直接扩展按键的方式可以分为 独立式 和 矩阵式(或行列式) 。 10. MCS89C51单片机的P0、P2作为外部扩展数据存储器的地址总线,P0作为数据总线,在读取过程中,

执行“MOVX A,@DPTR”(DPTR指针地址为EFFFH)指令时,单片机管脚 P3.7(/RD) 和 P2.4 输出为低电平。

11. MCS89C51单片机有四个工作寄存器区,由 PSW 状态字中的某些位进行控制,在单片机复位后,若

需要使用2区工作寄存器,且不能改变PSW状态字中其余位的值,需要执行哪一条语句 SETB RS1(SET B 0D4H。 ORL PSW,#10H) 。

12. 在共阳极LED数码管的接法中,P1.0口到P1.7分别连接数码管的a到h,如需要显示数字7,则在

P1口中需要执行MOV P1, #0F8H 。

13. MCS89C51单片机用计数器T1模式1计数,要求每次满10次产生溢出标志,则TH1和TL1的初始

值应该为 FFH , F6H 。

14. 单片机CPU允许响应定时器1中断请求时,IE中的 EA(AFH) 和 ET1(ABH) 必须设为1。 15. ADC0809有8个输入通道,要选择通道IN4,ADDC、ADDB、ADDA应为 100 。 16. MCS89C51串行口的发送与接收都是以 SBUF 特殊功能寄存器的名义进行读或写的。 二、 选择题(每小题2分, 共26分)

1. 下面哪一项是汇编语言指令格式中必不可少的 A 。

A 操作码 B 操作数 C 注释 D 标号 2. 下列指令中有错误的是 B 。

A CLR A B MOVC @DPTR,A C MOV P0,A D JBC TF0,LOOP 3. 程序计数器PC 是用于存放和指示 C 。

A 当前正在执行指令的前一条指令的地址

1

B 当前正在执行指令的地址

C 当前正在执行指令的下一条指令的地址 D 控制器中指令寄存器的地址

4. MCS89C51单片机中,指令DA A应该在哪种指令后面 B 。

A 加法指令 B BCD码加法指令 C 减法指令 D BCD码减法指令 5. RS232串行电气总线中,其电气特性规定逻辑0的电平是 D 。

A 0.3V以下 B 0.7V 以下 C -3V以下 D 3V以上

6. 键盘与单片机之间通过外部中断模式1接口,中断服务程序的入口地址为3000H,只有 D 才能正

常工作

A 把3000H存入03H B 把3000H存入13H

C 把LJMP 3000H的机器码存入03H D 把LJMP 3000H的机器码存入13H

7. 要使MCS89C51单片机仅能响应定时器1中断请求、串行中断请求,中断允许寄存器IE的值应该是

A 。

A 98H B 84H C 42H D 22H

8. MCS89C51上电复位后, B 描述是正确的。

A. PC=0000H,P0=11H B. PC=0000H,SP=07H C. PSW=00H,P0=11H D. PC=0000H,SP=00H

9. 从使用的逻辑角度,关于MCS89C51程序存储器或数据存储器地址空间范围描述正确的是 A 。

A. 片内RAM 00~FFH和 片外RAM 0000H~FFFFH B. 片内RAM 00~FFH和 片外RAM0100H~FFFFH C. 片内ROM 0000~1000H和 片外ROM 0000H~FFFFH D. 片内ROM 0000~FFFFH 和 片外ROM F000H~FFFFH

10. 定时计数器0设置为计数方式时,外部P3.4引脚计数脉冲的最高频率应该是晶振频率的 B 。

A 1/12 B 1/24 C 1/48 D 1/2

11. 设堆栈指针SP=60H,执行下面的一条 B 类型指令后,SP=5FH。

A. PUSH B.POP C. AJMP D. LCALL

12. 使用89C51时,当/EA=1时,可以扩展的外部ROM大小为 B 。

A 64KB B 60KB C 58KB D 32KB

13. 如果要确定8255A的工作方式,应当将适当的命令字写入 D 。

A. 8255A的A 口 B. 8255A的状态寄存器 C. 8255A的B 口 D. 8255A的控制寄存器 三、指令类型题(每空1分,共10分)

1. 设(A)= 00H,(R1)= 20H,内存20H单元的内容是22H,执行下面指令:

MOV R7,#05H MOV 24H,#00H 2

LOOP: SETB 09H INC A DJNZ R7,LOOP MOV @R1,A 执行完上述指令后:

A中的内容(A)= 5 ;

内存24H字节单元中的内容为 0 ; 内存20H字节单元中的内容为 5 ; 指令MOV 24H,#00H 的字节数是 3 ;

指令DJNZ R7,LOOP 的十六进制代码是DFH和 FDH ; 2. 现有延时子程序,将程序补充完整 Tms1: ___________________ PUSH 06H MOV 07H,#200 PUSH 07H $ Tms2 06H RET Tms2: MOV 06H,#100 DJNZ 06H,_______ DJNZ 07H,_______ POP POP _______ 07H ___________________ 四、指令判读(共10分 找出错误指令1分,改正1分)

下面的程序片段(非中断程序)的功能为:找出片外RAM2000H-200FH数据区域中的最小值,结果存于R2中。找出错误的指令并画×,在后面的横线上写出正确的指令 SECH: MOV DTRR,#2000H MOV R7,#0F MOV A,@DPTR MOV A,B DPTR ( × ) MOV DPTR,#2000H ( × ) MOV R7,#0FH ( × ) MOVX A,@DPTR ( × ) MOV B,A ( × ) MOVX A,@DPTR ( × ) DJNZ R7,SLOP ( × ) MOV R2,B SLOP: INC SLP1: SLP2: MOV A,@DPTR CJNE A,B,SLP1 JNC SLP2 MOV B,A JNZ R7,SLOP MOV R7,B

3

RET 五、接口电路(10分)

指令不惟一,逻辑关系和指令对即可。

ORG 0100H MOV P0, #0FFH NOP

WAIT: MOV A, P0 ;读取P0的开关的状态,即P0.0、P0.1

;以下为按键判断的几条指令

;键K2按下,跳转到LOOP2。键K1按下,顺序执行 ;无键按下,重新读P0口判断。键的去抖不考虑。 ;横线数不代表指令条数,请根据需要编写指令。

JNB P1.0 LOOP2 JB P0.0 WAIT (4分) SETB P3.3 ;TLC1549的片选无效 CLR P3.1 ;TLC5615的片选有效

…….. (此处省略的为TLC5615转换数据输出的相关指令) SJMP LOOP1

LOOP2: SETB P3.1 ;只选中TLC1549的相关指令

CLR P3.3 (3分) MOV R0, #02H

LCALL READDA ;READDA 为读转换结果的子程序

MOV R1, A MOV R0, #08H

LCALL READDA

MOV R2, A

SETB P3.3 ;TLC1549的片选端无效 CLR P3.0 ;时钟线输出低电平 (3分)

LOOP1: RET

六、编程题(本题共2小题,每小题10分,共20分)

1. 编程统计片内RAM 30H-50H单元中FFH的个数,并将统计结果存入51H中

4

编程方法并不唯一。 建议分值:

首地址(1分),循环次数(1分),统计初值(1分),循环结构(2分), FFH的判断(2分),存数(1分),程序结构(2分) ORG 0000 SJMP MAIN ORG 0030H MAIN: MOV 51H,#00H ;计数器单元清零 MOV R0,#30H ;设置数据区域首地址 MOV R7,#21H ;设置循环变量为21H LOOP1: MOV A,@R0 ;读取数据 CPL A ;数据取反 JNZ LOOP2 ;判断A是否为0,若不为0,则跳转到LOOP2 INC 51H ;若A=0,则计数器单元+1 LOOP2: INC R0 ;指向下一计数单元 DJNZ R7,LOOP1 ;循环单元-1,若不为0,继续 RET ;返回 END

2. 已知AD转换器转换后的温度值存在4000H,蜂鸣器连接在P1.0引脚,低电平驱动蜂鸣器。设定温度

值存在片内RAM的40H中,当测量的温度值大于设定温度值时,蜂鸣器报警;当测量值小于设定值时,撤销报警;当测量值等于设定值时,蜂鸣器状态保持不变。试编写程序。

编程方法并不唯一,例如下面的两种写法都可以 建议分值:

取数初始化(2分),大于判断 (2分),等于判断 (2分),小于判断 (2分), 程序结构(2分)

MAIN: LOWER: HIGH: ORG SJMP ORG MOV MOV MOVX CLR SUBB JNC MOV MOVX CLR SUBB JC SJMP CLR SJMP SETB SJMP 0000 MAIN 0030H DPTR,#4000H B,40H A,@DPTR C A,B LOWER B,40H A,@DPTR C A,B HIGH MAIN P1.0 MAIN P1.0 MAIN ; ;设定温度值送B ;取测量的温度值 ;测量值大于设定值 ;测量值小于设定值 ;测量值等于设定值 5