单片机练习题.docx
- 文档编号:3308093
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:14
- 大小:22.26KB
单片机练习题.docx
《单片机练习题.docx》由会员分享,可在线阅读,更多相关《单片机练习题.docx(14页珍藏版)》请在冰豆网上搜索。
单片机练习题
第1章微型计算机基础
一.填空题
1.十进制整数转换为二进制数的方法是除2取余法,十进制整数转换为十六进制数的方法是除16取余法,十进制小数转换为二进制小数的方法是乘2取整法,十进制小数转换为十六进制小数的方法是乘16取整法。
2.在补码运算中,正数的原码、反码和补码是同一种形式,负数的补码是它的反码加1,负数的反码是它的原码数值位的按位取反。
3.BCD码加法是一种十进制的加法,其低四位向高四位进位是逢十进一的,但单片机加法器是一种二进制的加法器,其低四位向高四位进位是按逢16进一原则进位的,故BCD加法程序设计中必须在加法指令后跟一条BCD调整指令。
4.0-9的ASCII码和它的值之间相差30H。
2.选择题
1.如下列数值中的数,D的值最大,A的值最小。
A.568HB.2555HC.11010101101BD.ABCH
2.设X=ABH,Y=0FH,现欲从X中取出低四位(高四位变为0),则X和Y两数应采用B运算。
A.逻辑加B.逻辑乘C.异或D.取反
3.设X=ABH,Y=F0H,现欲从X的高四位取反而低四位不变,则X和Y应采用C运算。
A.逻辑加B.逻辑乘C.异或D.取反
4.[-0]反是C,[-0]补是A。
A.00000000BB.10000000BC.11111111B
5.如下B不是BCD码。
A.23HB.A8HC.123HD.95H
6.MCS-51是属于B单片机。
A.4位B.8位C.16位D.32位
第二章MCS-51单片机结构与时序
1.填空题
1.MCS-51的CPU有三部分电路组成:
一是ALU;二是定时控制部件;三是专用寄存器组。
2.MCS-51内部有一个程序寄存器PC,它实际上是一个有16个触发器组成的计数器,能自动加“1”,用来存放将要执行的指令的地址。
3.MCS-51内部有一个寄存器,该寄存器在除法指令执行前用来存放被除数,在除法指令执行后用来存放两数之商,该寄存器通常称为累加器A。
4.堆栈指示器(又称堆栈指针)SP是一个有二进制8位的计数器,用来存放堆栈的栈底或栈顶地址。
若堆栈中无数,则SP的地址必然是栈底;若堆栈中压入数据,则SP中的地址称为栈顶。
5.DPTR称为数据指针,由DPH和DPL拼装而成,可以用来存放程序存储器ROM或外部RAM中的数据地址。
6.当MCS-51欲寻址内部ROM工作时,EA引脚应接+5V电平。
7.MCS-51内部有一称为Rn(n为1—7)的工作寄存器组,其物理地址范围是000H—FFFH。
8.MCS-51和外部存储器进行硬件连接时,CPU送给外部存储器的16位地址码,其高8由P2口输出,低8位由P0口输出。
9.MCS-51执行MOVXA,@DPTR指令需要两次访问存储器,第一次是根据PC中的内容寻址的,目的是取指令,第二次是根据DPTR中的内容寻址的,目的是执行指令。
2.选择题
1.MCS-51的下列指针寄存器中,C是堆栈指针寄存器。
A.PCB.DPTRC.SPD.R0
2.MCS-51的堆栈区在A中。
A.内部RAMB.外部RAMC.内部ROMD.外部ROM
3.MCS-51有4个三种不同的寄存器。
其中B的寻址范围是00H—7FH/FFH。
A.内部ROMB.内部RAMC.外部ROMD.外部RAM
4.对8751编程时,其片内所需12位地址码是由C端口输入的。
A.P1.3-P1.0和P0B.P2.3-P2.0和P0
C.P2.3-P2.0和P1D.P3.3-P3.0和P2
5.对8751校验时,其读出数据由A端口输出。
A.P0B.P1C.P2D.P3
6.在8031的CPU中,驱动力最大的端口是A。
A.P0B.P1C.P2D.P3
7.8031执行MOVXA,@DPTR指令时,需要两次访问内存,访问次序为B。
A.外部RAM和外部RAMB.外部ROM和外部RAM
C.外部RAM和外部ROMD.外部ROM和外部ROM
8.8031在执行MOVCA,@A+PC指令时,需要两次访问内存,其次序是D。
A.外部RAM和外部RAMB.外部ROM和外部RAM
C.外部RAM和外部ROMD.外部ROM和外部ROM
9.如下引脚中,C是外部ROM存储器的选通线。
A.RD和WRB.EAC.PSEND.ALE
10.如下两条指令执行后,累加器A和PSW中的内容是A。
MOVA,#19H
ADDA,#66H
A.7FH和01HB.85H和01HC.85H和03HD.7FH和03H
第三章MCS-51单片机指令系统
1.填空题
1.MCS-51指令系统中的指令采用单地址指令格式,每条指令均由操作码和操作数/操作数地址等字段组成。
其中,操作码字段是必选段,下地址字段隐含在程序计数器PC中。
2.指令码中含有操作数本身的指令,其寻址方式比为立即型寻址。
3.指令码中含有操作数所在寄存器号的指令,其源操作数的寻址方式一定是寄存器间接寻址。
4.在SJMPrel指令中,以其在只读存储器中始址为参考点可以在-126—+129范围内寻址。
5.MCS-51有两条查表指令,指令的通式是MOVCA,@A+DPTR和MOVCA,@A+PC。
6.只能读外部RAM零页单元中的内容的指令时MOVXA,@Ri。
7.除INCSP指令外,还有PUSHdirect和调用指令执行时可以使SP中内容加1。
8.除DECSP指令外,还有POPdirect和RET/RETI(或返回)指令可以使SP中内容加1。
9.不带Cy的移位指令有两条,一条是RLA,另一条是RRA。
10.能对PC中内容运算处理为目的的指令,必然属于控制转移类指令。
11.MCS-51有两条可以根据累加器A中的内容为判断条件的转移指令,这两条指令时JZrel和JNZrel。
12.MCS-51有两条减1条件转移指令,通常在循环程序设计中使用。
该指令通式是:
DJNZRn,rel和DJNZdirect,rel。
13.调用指令的作用有两个:
一个是断点地址入栈;另一个是子程序始址送PC。
14.返回指令的作用是:
断点地址(栈内)恢复到PC。
15.MCS-51有两条可以根据Cy中内容为条件的转换指令,它们是JCrel和JNCrel。
16.MCS-51有三条可以根据位地址中内容为判断条件的转移指令,它们是:
JBbit,rel、JNBbit,rel和JBCbit,rel。
2.选择题
1.MCS-51中无D指令。
A.单字节B.双字节C.三字节D.四字节
2.MCS-51中无C指令。
A.单机器周期B.双机器周期C.三机器周期D.四机器周期
3.如下指令中的源操作数,B是直接寻址。
A.MOVA,#20HB.MOVA,20HC.MOVA,R0D.MOVA,@R0
4.如指令中的源操作数,A是位寻址。
A.SETB20HB.MOVA,20HC.MOVA,#20HD.DJNZ20H,rel
5.如下指令中,C指令的源操作数寻址方式不属于变址寻址。
A.MOVCA,@A+PCB.MOVCA,@A+DPTR
C.MOVXA,@DPTRD.JMP@A+DPTR
6.如下指令中,D是合法指令。
A.MOVR1,R0B.MOV@R0,R5
C.MOV#20H,AD.MOV20H,#20H
7.C指令的转移范围最小。
A.LJMPaddr16B.AJMPaddr11
C.SJMPrelD.JMP@A+DPTR
8.如下指令中,B指令是以判断Cy中内容为条件的转移指令。
A.JZrelB.JCrelC.JBbit,relD.JBCbit,rel
9.A是字节型指令。
A.CLRAB.CLRCC.CLR20HD.SETBC
10.如下指令中,C指令执行后均能使bit中内容始终为零。
A.JBbit,relB.JNBbit,relC.JBCbit,rel
11.如下指令中,D指令的寻址方式是变址寻址。
A.LJMPaddr16B.AJMPaddr11
C.SJMPrelD.JMP@A+DPTR
12.如下指令中,B类指令执行时均能使SP内容加1.
A.XCHA,R2B.PUSHACC
RLALCALLSQR
C.DJNZR2,LOOPD.ADDA,#20H
CJNEA,R2,NEXTSUBBA,R2
第四章汇编语言程序设计
一.填空题
1.机器语言有两种形式,一种是二进制形式;另一种是16进制形式,二进制形式的机器语言可以为CPU直接执行。
2.汇编语言是一种符号语言,因机器而异,所编程序需汇编成机器语言才能直接为CPU执行。
其优点是可直接操作到机器内部的寄存器和RAM单元。
3.MCS-51的汇编语句采用典型的四分段格式:
标号段、操作码段、操作数段和注释段。
其中,操作码段是必选段,用来指示CPU执行何种操作。
4.注释段以分号开头,指示指令段或程序段的作用;标号段是以大写字母开头的字母数字串(最多8个),标号段中禁止使用保留字和寄存器号作标号。
5.MCS-51宏汇编中,有两条可以为变量赋值的伪指令,他们是EQU和DATA/XDATA。
6.如下程序为汇编程序识别和执行后,(1500H)=00H,(1501H)=45和(1502H)=41H。
ORG1500H
TAB:
DW45
DB'A'
7.可以定义存储空间的伪指令是DS。
8.可以定义位地址的伪指令是BIT。
9.用户程序编写好后,必须汇编成机器码才能为机器执行。
MCS-51源程序的汇编有人工汇编和机器汇编两种,但原理相同。
机器汇编需要汇编程序对用户程序进行两次扫描才能完成。
第一次扫描主要是确定每条指令的指令码,第二次扫描是计算机指令码的标号值和地址偏移量。
10.在机器汇编的第二次扫描中,标号值或地址偏移量的计算公式是地址偏移量=目的地址-转移指令始址-转移指令字节数。
11.简单程序又称顺序程序或直线程序,有时又称为无分支程序,其特点是程序中不含有转移指令。
12.分支程序有时也称为散转程序,其特点是程序中含有无条件转移指令。
13.MCS-51循环程序有循环初始化、循环体和循环结束处理等三部分组成。
其中循环初始化程序段中通常要给循环变量(地址指针)和循环计数器赋初值;循环体中必定含有一条减一条件判断指令。
14.循环程序有两种类型:
一是先判断后处理,二是先处理后判断。
15.查表指令有两条:
一条是用PC作为基址来查表,另一条是用DPTR作为基址来查表,但查表原理相同。
后者在查表前DPTR中应放有被查表的始址,前者在查表时PC中的基址不等于被查表始址,故它在查表指令前必须有一条ADDA,#date指令,以便使PC+date=被查表始址。
16.子程序设计时应注意四点:
一是子程序前要冠以标号,标号应以子程序任务定名;二是主程序中要有一条调用指令才能转入子程序执行;三是子程序中必须安排一条返回指令才能使CPU回到主程序主程序执行;四是CPU转入子程序或从子程序返回主程序前都需要有参数传递。
17.带符号补码数/或减运算的算法:
一是先对两数进行符号数扩展;二是对符号数扩展后的两数进行加/减运算。
18.带符号补码数的乘除法算法:
一是符号位单独处理;二是把参加运算的两数变成绝对值;三是对绝对值进行乘除运算;四是把运算结果变成补码。
2.指出下列程序的运行结果
1.已知:
(20H)=X(X≤50)和A=00H,如下程序为CPU执行后的DA中的内容是什么?
ORG0100H
MOVDPTR,#1000H
JMP@A+DPTR
DONE:
MOVDA,A
SJMP$
ORG1000H
MOVA,20H答案:
(DA)=2X
RLA
SJMPDONE
ORG1080H
MOVA,20H
RLA
RLA
SJMPDONE
END
2.上例中,若累加器A中内容为80H,则重新执行上述程序后DA中内容是什么?
ORG0100H
MOVDPTR,#1000H
JMP@A+DPTR
DONE:
MOVDA,A
SJMP$
ORG1000H
MOVA,20H
RLA
SJMPDONE
ORG1080H
MOVA,20H
RLA
RLA答案:
(DA)=4X
SJMPDONE
END
3.已知:
(71H)=X,SP=71H和外部RAM的(2000H)=Y。
试问如下程序执行后外部RAM的2500H单元中内容是什么?
(X和Y均不超过63)。
ORG0300H
MOVDPTR,#2000H
MOVXA,@DPTR
MOVR2,A
POPACC
ADDA,R2答案:
(2500H)=2(X+Y)
RLA
MOVDPTR,#2500H
MOVX@DPTR,A
SJMP$
END
4.已知:
a和b是两个小于8的二进制数,分别放在DA和DB单元。
试问如下程序执行后DC单元中的内容是什么?
ORG0400H
MOVA,DA
ACALLSQR
MOVR1,A
MOVA,DB
ACALLAQR
ADDA,R1
MOVR1,A
MOVB,DB
MULAB
RLA
ADDA,R1
MOVDC,A
SJMP$
SQR:
INCA
MOVCA,@A+PC
RET
SQRTAB:
DB0,1,4,9,16,25,36,49,64,81
END答案:
(DC)=a2+2ab+b2
5.如下程序执行后累加器A和70H单元中内容是什么?
ORG0500H
MOVA,#0AAH
MOVDPTR,#0070H
MOVX@DPTR,A
MOVR0,#70H答案:
A=BAH(70H)=ABH
MOV@R0,A
MOVA,#0BBH
XCHDA,@R0
SJMP$
END
6.已知:
外部RAM(1000H)=X,如下程序执行后20H和SP中的内容是什么?
(X≤85)
ORG0600H
MOVSP,#60H
MOVXA,@DPTR
MOVB,A
RLA答案:
(20H)=3XSP=60H
ADDA,B
MOV61H,A
INCSP
POP20H
SJMP$
END
7.已知:
内部RAM(20H)=FFH(-1),如下程序执行后30H单元中内容是什么?
(X≤127)
ORG0700H
MOVA,20H
JNBACC.7,NEXT
MOV30H,#X答案:
(30H)=X
SJMPDONE
NEXT:
MOV30H,#2X
DONE:
SJMP$
END
8.已知:
内部RAM(20H)=90H,如下程序执行后30H单元中的内容是什么?
(X≤127)
ORG0800H
MOVA,20H
ADDA,#80H
JNBACC.7,NEXT
MOV30H,#X答案:
(30H)=2X
SJMP$
NEXT:
MOV30H,#2X
DONE:
SJMP$
END
9.如下程序执行到MOV30H,#X时,71H、72H和SP中的内容是什么?
ORG0900H
MOVSP,#70H
LCALLSQR答案:
(71H)=断点地址高8位
SJMP$(72H)=断点地址低8位
SQR:
MOV30H,#XSP=72H
RET
END
10.如下程序执行后会产生什么效果?
为什么?
ORG0A00H
MOVDPTR,#2000H
MOVRO,#20H
LOOP:
MOVR2,#0AH
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
DJNZR2,LOOP
SJMP$
END
答案:
该程序执行后会进入死循环。
因为R2中内容始终都不会为0.
3.编程题
1.从外部RAM的SOUCE(二进制8位)开始有一数据块,该数据块以字符$结尾。
请编写程序,把他们传送到以内部RAM的DIST为起始地址的区域($字符也要传送,它的ASCII码为24H)。
ORG0500H
SOUCEDATA30H
DISTDATA20H
MOVR0,#SOUCE;R0←源地址
MOVR1,#DIST;R0←目标地址
LOOP:
MOVXA,@R0;A←源数
CJNEA,#24H,NEXT;若A<>$,则NEXT
MOV@R1,A;传送$符
SJMP$
NEXT:
MOV@R1,A;传送数据
INCR0;源指针加1
INCR1;目的指针加1
SJMPLOOP
END
2.外部RAM从2000H到2100H有一数据块,请编写将他们传送到从3000H到3100H区域的程序。
ORG0500H
MOVDPTR,#3000H;目标地址送3000H
PUSHDPL;目标地址送栈
PUSHDPH
MOVDPTR,#2000H;源地址送DOTR
MOVR2,#01H;块长送R3R2
MOVR3,#01H
LOOP:
MOVXA,@DPTR;源数送A
INCDPTR
MOVR5,DPH;源针加1送R5R4
MOVR4,DPL
POPDPH;目标地址送DPTR
POPDPL
MOVX@DPTR,A;送数
INCDPTR;目标地址加1
PUSHDPL;送栈
PUSHDPH
MOVDPH,R5;源针送DPTR
MOVDPL,R4
CLRC;Cy清零
MOVA,R2;R2-1送R2
SUBBA,#01H
MOVR2,A
MOVA,R3;R3-Cy送R3
SUBBA,#00H
MOVR3,A
ORLA,R2;R3VR2送A
JNZLOOP;R2VR3<>0,则LOOP
SJMP$;否则,停机
END
3.设在片内RAM的20H单元中有一数,其值范围是0—100,要求利用查表法求此数的平方值并把结果存入片外RAM的20H和21H中(20H中为低字节),试编写相应的程序。
ORG0A00H
MOVR0,#20H;R0←外20H
MOVA,20H;A←源数
RLA
MOVB,A
ADDA,#0BH;修改A
MOVCA,@A+PC;A←平方值L
MOVX@R0,A;送存
INCR0;目标地址加1
MOVA,B
ADDA,#03H;修改A
INCA;指向结果H地址偏移量
MOVCA,@A+PC;查表得平方值H
MOVX@R0,A;送存
SJMP$
SQRTAB:
DW0,1,4,9,……,10000
END
附:
课本重要知识点及重要例题
第1章1.1计算机中数制及数的转换
1.3.1机器数的原码、反码和补码
1.4.1BCD码和ASCII码
第2章2.1.1CPU结构
2.1.2存储器的结构(P53的表2-2和P57表2-5
2.1.3I/O端口非常重要,老师说肯定会
2.2.1引脚及其功能出一个题目)
2.4.1机器周期和指令周期
第3章全部
重要例题:
P100例3.14P112例3.29
P114例3.31P121例3.38、例3.39
第4章全部
重要例题:
P138例4.2P139例4.3P140例4.5
P142例4.7P146例4.9P147例4.10
P152例4.13P156例4.16P157例4.17
注:
P143例4.8、P148例4.12不用看!
!
第6章6.1概述
6.2MCS-51的中断系统
6.4.2采用查询法扩展外部中断源
预祝大家取得好成绩!
!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 练习题
![提示](https://static.bdocx.com/images/bang_tan.gif)