您的当前位置:首页正文

哈尔滨工业大学2021年《单片机原理与应用技术》期末试题及答案

来源:画鸵萌宠网
1选择题

1.MCS-51汇编语言指令格式中,唯一不可缺少的部分是 B 。 A.标号 B.操作码 C.操作数 D.注释 2.单片机中PUSH和POP指令常用来 C 。 A.保护断点 B.保护现场

C.保护现场,恢复现场 D.保护断点,恢复断点

3.MCS-51寻址方式中,操作数Ri加前缀“@”号的寻址方式是 A 。 A.寄存器间接寻址 B.寄存器寻址 C.基址加变址寻址 D.立即寻址

4.在MCS-51指令中,下列指令中 C 是无条件转移指令。 A.LCALL addr16 B.DJNZ direct, rel C.SJMP rel D.ACALL addr11 5.在编程中使用伪指令的目的是 C 。

A.指示和引导如何进行手工汇编 B.指示和引导编译程序如何汇编 C.指示和引导汇编程序进行汇编 D.指示和引导程序员进行汇编 6. LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D) A.2000H B.2001H C.2002H D.2003H 7. 下面指令将MCS-51的工作寄存器置成3区(B) A.MOV PSW,#13H B.MOV PSW,#18H

C.SETB PSW.4 CLR PSW.3 D. SETB PSW.3 CLR PSW.4 8.MCS-51寻址方式中,立即寻址的寻址空间是(C)。 A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存储器ROM

D.片内RAM的20H~2FH字节中的所有位和部分专用寄存器SFR的位 9.MCS-51寻址方式中,直接寻址的寻址空间是(D)。 A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存储器ROM D.数据存储器256字节范围

10. 是最简单的程序结构,它既无分支,又无循环,在执行时单片机

是按程序中指令的顺序逐条进行的。 (A) A.顺序结构 B.分支结构 C.循环结构 D.子程序 2判断题。

(×)1.MCS-51的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。

(√)2.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。

(√)3.指令LCALL addr16能在64K字节范围内调用子程序。 (×)4.MCS-51单片机的相对转移指令最大负跳距是127B。

(×)5.调用子程序指令(如:CALL)及返回指令(如:RET)与堆栈有关但与PC无关。( × )子序的转返与PC也有关(PC入栈与出栈) 3填空

1.MCS-51有 5 个中断源,有2 个中断优先级,优先级由软件填写特殊功能寄存器 IP 加以选择。

2. 外部中断0的中断入口地址为 0003H ;定时/计数器0的中断入口地址为 000BH ;外部中断1的中断入口地址为 0013H ;定时/计数器1的中断入口地址为 001BH ;串行口中断的中断入口地址为 0023H 。 3.MCS-51系列单片机的定时器/计数器有四种工作方式,其中方式0是 13 位定时/计数器;方式1为 16 位定时/计数器;方式2为 自动重装初值 的 8 位定时/计数器;只有定时器 T0 才能选作组合方式3,此时将形成2个 8 位的定时/计数器。

4. MCS-51单片机中断允许寄存器IE的作用是用来对各中断源进行开放或屏蔽的控制。

5.若MCS-51系列单片机中的中断设定为同一优先级,当它们同时发出中断请求时,CPU处理的顺序(由高到低)为 外部中断0 → 定时器/计数器0 → 外部中断1 → 定时器/计数器1 → 串行口中

断 。

6.MCS—51单片机外部中断请求信号有电平方式和 边沿触发方式 ,在电平方式下,当采集到INT0、INT1的有效信号为 底电平 时,激活外部中断。

7.中断处理的全过程分为以下3个段: 中断请求 、 中断响应 、 中断服务 。

8. 用户在编写中断服务程序时,可在中断入口矢量地址存放一条无条件转移指令,以防止中断服务程序容纳不下。

9.串行口数据缓冲器SBUF是可以直接寻址的专用寄存器。

10.A/D转换器转换数据的传送有定时传送方式、查询方式和中断方式 4编程题

1. 从22H单元开始有一个无符号数据块,其长度在20H单元。求出数据块中最大值,并存入21H单元。

解: ORG 0100H

START: MOV R0,#22H ;数据块首地址送R0 MOV R7,20H ;比较次数送R7 DEC R7

MOV A,@R0 ;取数送A LOOP: INC R0

MOV 60H,@R0 ;取数送60H

CJNE A,60H,NEHT ;(A)与(60H)相比 NEXT: JNC BIE1 (A)≥(60H)转BIR1 MOV A,60H ;(A)<(60H),大数送A

BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较

MOV 21H,A ;比较结束,大数送21H SJMP $ END

2.从内部RAM 22h单元开始存有一个无符号数数据块,长度n存于20h中。求

出数据块中的最小数,存于21h中。

ORG 0030H

MOV R0, #22H ;数据块起始地址 MOV R1, 20H ;数据个数n MOV 21H,#0FFH ; 最大数 LOOP: MOV A, @R0 ; 取新数 INC R0 ; 为取下一个新数作准备 CJNE A, 21H, LOOP1 ; 与原最大数比较 LOOP1: JNC NEXT ; 大,原最小数保留C=0 ,跳 MOV 21H, A ; 小,改变最小数 NEXT: DJNZ R1, LOOP ;循环 END

3. 单片机集成的定时器可以产生定时中断,利用定时器T0,编写程序,使P1.0控制的发光二极管L0每隔1秒交替点亮或熄灭。 ; P1.0 ---- 发光二极管显示 L0 LED EQU P1.0 ORG 0000H ;复位地址

AJMP MAIN ;开始时跳转转到主程序

ORG 000BH ;T0入口地址 AJMP INT_T0

ORG 0100H MAIN: SETB LED

MOV TMOD,#00000001B ;设置定时器T0工作在方式1(16位) MOV TH0,#0D8H ;设置初值 MOV TL0,#0F0H

CLR TF0 ;先把溢出标志位清零

SETB TR0 ;开始计时 SETB EA ;全局中断打开

SETB ET0 ;定时器/计数器T0溢出中断打开 MOV R7,#00H ;作为定时器累加器使用 SJMP $ ;循环,等待中断

;中断服务子程序 中断服务子程序控制R7的值 定时10ms*100=1S

INT_T0: INC R7 ;计数增量

CLR TF0 ;重新置中断标志位为0 MOV TH0,# 0D8H;重新符初值 MOV TL0,# 0F0H

CJNE R7,#100,RETURN ;让灯明暗相间1s MOV R7,#00H

CPL LED ;让灯明暗交替变化 RETURN: RETI

END

4如下系统中AT89C51单片机外接晶振频率为12MHz。编制一个循环闪烁灯的程序:有8个发光二极管,顺序循环点亮LED1—LED8,每次其中1个灯每隔2秒闪烁1次,共闪烁10次,闪烁点亮10次后,转到下一个闪烁10次,循环不止。

解:根据硬件连接图所示,当P1.0输出高电平时,LED灯亮,否则不亮。其程序如下:

MOV A,#01H ;灯亮初值

SHIFT: LCAIL FLASH ;调闪亮10次子程序 RR A ;右移一位 SJMP SHIFT ;循环 FLASH: MOV R2,#0AH 闪烁10次计数 FLASH1; MOV P1,A ;点亮 LCALL DELAY ;延时 MOV P1,#00H ;熄灭 LCALL DELAY ;延时 DJNZ R2,FLASH1 ;循环 RET

5 AT89C51单片机外接晶振频率为12MHz。编程完成功能:发光二极管循环显示二进制数00H至0FH。

本程序高电平有效 ORG 0000H

LJMP MAIN ORG 0030H

MAIN: MOV A,#00H L1: MOV P1 ,A

LCALL DELAY

INC A SJMP L1 ORG 0200H

DELAY: MOV R5,#04H F3: MOV R6,#0FFH F2: MOV R7,#0FFH F1: DJNZ R7,F1

法一:本程序 低电平有效显示的是00H到FFH

ORG 0000H

LJMP MAIN ORG 0030H DJNZ R6,F2 DJNZ R5,F3 RET END

MAIN: MOV 40H,#00H L1: MOV A,40H CPL A MOV P1 ,A

LCALL DELAY

INC 40H SJMP L1

ORG 0200H

DELAY: MOV R5,#04H F3: MOV R6,#0FFH F2: MOV R7,#0FFH F1: DJNZ R7,F1

DJNZ R6,F2 DJNZ R5,F3 RET END

法二:本程序 低电平有效显示的是00H到FFH

ORG 0000H

LJMP MAIN ORG 0030H

MAIN: MOV A,#00H L1:

CPL A

MOV P1 ,A

LCALL DELAY

CPL A

INC A

SJMP L1 ORG 0200H

DELAY: MOV R5,#04H F3: MOV R6,#0FFH F2: MOV R7,#0FFH F1: DJNZ R7,F1

DJNZ R6,F2 DJNZ R5,F3 RET

END

6编定一个软件延时1S的子程序,已知fosc=6MHz。 解:(1)1S=2μs*5*100000 5*100000=250*200*10 (2)

ORG 1000H

DELAY1S: MOV R7,#10 T3: MOV R6,#200 T2: MOV R6,#250 T1: DJNZ R5,T1 DJNZ R6,T2 DJNZ R7,T3 RET

7 如下系统中AT89C51单片机通过P0口控制8段数码管,要求在数码管上循环显示数字0~9,要求每个数字的显示时间为1s,试编程实现。(已知单片机的晶振频率为6MHZ))

ORG 0000H LJMP MAIN

ORG 030H

MOV A,#66H MOV A,#7FH MAIN: MOV A,# 3FH CPL A MOV P0,A ACALL DEL

MOV A,# 06H

CPL A MOV P0,A ACALL DEL MOV A,#5BH

CPL A

MOV P0,A ACALL DEL MOV A,#4FH

CPL A

MOV P0,A ACALL DEL

CPL A MOV P0,A ACALL DEL MOV A,#6DH

CPL A MOV P0,A ACALL DEL

MOV A,#7DH CPL A MOV P0,A ACALL DEL MOV A,#07H CPL A MOV P0,A ACALL DEL

CPL A MOV P0,A ACALL DEL MOV A,#6FH CPL A MOV P0,A ACALL DEL AJMP MAIN DEL: MOV R7,#10 T3: MOV R6,#200 T2: MOV R6,#250 T1: DJNZ R5,T1 DJNZ R6,T2 DJNZ R7,T3 RET END

因篇幅问题不能全部显示,请点此查看更多更全内容

Top