哈尔滨工业大学《单片机原理与应用技术》期末试题及答案.docx
《哈尔滨工业大学《单片机原理与应用技术》期末试题及答案.docx》由会员分享,可在线阅读,更多相关《哈尔滨工业大学《单片机原理与应用技术》期末试题及答案.docx(12页珍藏版)》请在冰点文库上搜索。
哈尔滨工业大学《单片机原理与应用技术》期末试题及答案
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.LCALLaddr16B.DJNZdirect,rel
C.SJMPrelD.ACALLaddr11
5.在编程中使用伪指令的目的是C。
A.指示和引导如何进行手工汇编B.指示和引导编译程序如何汇编
C.指示和引导汇编程序进行汇编D.指示和引导程序员进行汇编
6.LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)
A.2000HB.2001HC.2002HD.2003H
7.下面指令将MCS-51的工作寄存器置成3区(B)
A.MOVPSW,#13HB.MOVPSW,#18H
C.SETBPSW.4CLRPSW.3D.SETBPSW.3CLRPSW.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.程序存储器ROMD.数据存储器256字节范围
10.是最简单的程序结构,它既无分支,又无循环,在执行时单片机是按程序中指令的顺序逐条进行的。
(A)
A.顺序结构
B.分支结构
C.循环结构
D.子程序
2判断题。
(×)1.MCS-51的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。
(√)2.已知:
A=11HB=04H,执行指令DIVAB后,其结果:
A=04H,B=1CY=OV=0。
(√)3.指令LCALLaddr16能在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单元。
解:
ORG0100H
START:
MOVR0,#22H;数据块首地址送R0
MOVR7,20H;比较次数送R7
DECR7
MOVA,@R0;取数送A
LOOP:
INCR0
MOV60H,@R0;取数送60H
CJNEA,60H,NEHT;(A)与(60H)相比
NEXT:
JNCBIE1(A)≥(60H)转BIR1
MOVA,60H;(A)<(60H),大数送A
BIE1:
DJNZR7,LOOP;比较次数减1,不为0,继续比较
MOV21H,A;比较结束,大数送21H
SJMP$
END
2.从内部RAM22h单元开始存有一个无符号数数据块,长度n存于20h中。
求出数据块中的最小数,存于21h中。
ORG0030H
MOVR0,#22H;数据块起始地址
MOVR1,20H;数据个数n
MOV21H,#0FFH;最大数
LOOP:
MOVA,@R0;取新数
INCR0;为取下一个新数作准备
CJNEA,21H,LOOP1;与原最大数比较
LOOP1:
JNCNEXT;大,原最小数保留C=0,跳
MOV21H,A;小,改变最小数
NEXT:
DJNZR1,LOOP;循环
END
3.单片机集成的定时器可以产生定时中断,利用定时器T0,编写程序,使P1.0控制的发光二极管L0每隔1秒交替点亮或熄灭。
;P1.0----发光二极管显示L0
LEDEQUP1.0
ORG0000H;复位地址
AJMPMAIN;开始时跳转转到主程序
ORG000BH;T0入口地址
AJMPINT_T0
ORG0100H
MAIN:
SETBLED
MOVTMOD,#00000001B;设置定时器T0工作在方式1(16位)
MOVTH0,#0D8H;设置初值
MOVTL0,#0F0H
CLRTF0;先把溢出标志位清零
SETBTR0;开始计时
SETBEA;全局中断打开
SETBET0;定时器/计数器T0溢出中断打开
MOVR7,#00H;作为定时器累加器使用
SJMP$;循环,等待中断
;中断服务子程序中断服务子程序控制R7的值定时10ms*100=1S
INT_T0:
INCR7;计数增量
CLRTF0;重新置中断标志位为0
MOVTH0,#0D8H;重新符初值
MOVTL0,#0F0H
CJNER7,#100,RETURN;让灯明暗相间1s
MOVR7,#00H
CPLLED;让灯明暗交替变化
RETURN:
RETI
END
4如下系统中AT89C51单片机外接晶振频率为12MHz。
编制一个循环闪烁灯的程序:
有8个发光二极管,顺序循环点亮LED1—LED8,每次其中1个灯每隔2秒闪烁1次,共闪烁10次,闪烁点亮10次后,转到下一个闪烁10次,循环不止。
解:
根据硬件连接图所示,当P1.0输出高电平时,LED灯亮,否则不亮。
其程序如下:
MOVA,#01H;灯亮初值
SHIFT:
LCAILFLASH;调闪亮10次子程序
RRA;右移一位
SJMPSHIFT;循环
FLASH:
MOVR2,#0AH闪烁10次计数
FLASH1;MOVP1,A;点亮
LCALLDELAY;延时
MOVP1,#00H;熄灭
LCALLDELAY;延时
DJNZR2,FLASH1;循环
RET
5AT89C51单片机外接晶振频率为12MHz。
编程完成功能:
发光二极管循环显示二进制数00H至0FH。
本程序高电平有效
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVA,#00H
L1:
MOVP1,A
LCALLDELAY
INCA
SJMPL1
ORG0200H
DELAY:
MOVR5,#04H
F3:
MOVR6,#0FFH
F2:
MOVR7,#0FFH
F1:
DJNZR7,F1
DJNZR6,F2
DJNZR5,F3
RET
END
法一:
本程序低电平有效显示的是00H到FFH
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOV40H,#00H
L1:
MOVA,40H
CPLA
MOVP1,A
LCALLDELAY
INC40H
SJMPL1
ORG0200H
DELAY:
MOVR5,#04H
F3:
MOVR6,#0FFH
F2:
MOVR7,#0FFH
F1:
DJNZR7,F1
DJNZR6,F2
DJNZR5,F3
RET
END
法二:
本程序低电平有效显示的是00H到FFH
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVA,#00H
L1:
CPLA
MOVP1,A
LCALLDELAY
CPLA
INCA
SJMPL1
ORG0200H
DELAY:
MOVR5,#04H
F3:
MOVR6,#0FFH
F2:
MOVR7,#0FFH
F1:
DJNZR7,F1
DJNZR6,F2
DJNZR5,F3
RET
END
6编定一个软件延时1S的子程序,已知fosc=6MHz。
解:
(1)1S=2μs*5*100000
5*100000=250*200*10
(2)ORG1000H
DELAY1S:
MOVR7,#10
T3:
MOVR6,#200
T2:
MOVR6,#250
T1:
DJNZR5,T1
DJNZR6,T2
DJNZR7,T3
RET
7如下系统中AT89C51单片机通过P0口控制8段数码管,要求在数码管上循环显示数字0~9,要求每个数字的显示时间为1s,试编程实现。
(已知单片机的晶振频率为6MHZ))
ORG0000H
LJMPMAIN
ORG030H
MAIN:
MOVA,#3FH
CPLA
MOVP0,A
ACALLDEL
MOVA,#06H
CPLA
MOVP0,A
ACALLDEL
MOVA,#5BH
CPLA
MOVP0,A
ACALLDEL
MOVA,#4FH
CPLA
MOVP0,A
ACALLDEL