《单片微型计算机与接口技术》思考题与习题解答01.docx
- 文档编号:23684497
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:76
- 大小:315.31KB
《单片微型计算机与接口技术》思考题与习题解答01.docx
《《单片微型计算机与接口技术》思考题与习题解答01.docx》由会员分享,可在线阅读,更多相关《《单片微型计算机与接口技术》思考题与习题解答01.docx(76页珍藏版)》请在冰豆网上搜索。
《单片微型计算机与接口技术》思考题与习题解答01
《单片微型计算机与接口技术》思考题与习题解答
第0章基础知识
0.1将下列十进制数转换为十六进制数:
64,98,80,100,125,255。
0.140H,62H,50H,64H,7DH,FFH
0.2将下列十六进制无符号数转换为十进制数:
32CH,68H,I)5H,100H,B78H,3ADH。
O.2812,104,213,256,2936,941
0.3写出下列十进制数的原码和补码,用8位或16位数填人表1中(要求用十六进制数表示)。
表1
十进制数
原码
补码
十进制数
原码
补码
28
250
-28
-347
l00
928
-130
-928
0.3
十进制数
原码
补码
十进制数
原码
补码
28
1CH
1CH
250
FAH
FAH
-28
9CH
E4H
-347
815BH
FEA5H
100
64H
64H
928
03AOH
03AOH
-130
8082H
FF7EH
-928
83AOH
FC60H
0.4用十进制数写出下列补码表示的机器数的真值:
1BH,97H,80H,F8H,397DH,7AEBH,9350H,CF42H。
O.4机器数的真值分别为:
27,233,-128,-8,14717,31467,-27824,-12478
0.5用补码运算完成下列算式,并指出溢出OV和进位CY:
(1)33H+5AH
(2)-29H-5DH(3)65H-3EH(4)4CH-68H
O.5
(1)33H+5AH=8DH,OV=1,CY=O
(2)-29H-5DH=7AH,OV=0,CY=1
(3)65H-3EH=27H,OV=0,CY=1(4)4CH-68H=E4H,0V=O,CY=O
0.6将表2中的十进制数按要求转换,用十六进制数填入。
表2
十进制数
压缩BCD数
非压缩BCD数
ASCII码
38
255
483
764
1000
1025
O.6
十进制数
压缩BCD数
非压缩BCD数
ASCII码
38
38H
0308H
3338H
255
255H
020505H
323535H
483
483H
040803H
343833H
764
764H
070604H
373634H
1000
1000H
01000000H
31303030H
1025
1025H
01000205H
31303235H
0.7写出下列ASCII码表示的十六进制数(如313035H为105H):
374341H,32303030H,3841353DH。
0.7ASCIl码表示的十六进制数分别为:
105H,7CAH,200¨。
H,8A50H
第1章MCS-51单片机
1.1什么是嵌入式系统?
其控制核心有哪几种类型?
1.1见绪论
1.2单片微型计算机与微处理器在结构上和使用中有什么差异?
单片机和DSP在使用上有什么差别?
1.2单片微型计算机是包含CPU、存储器和I/O接口的大规模集成芯片,即它本身包含了除外部设备以外构成微机系统的各个部分,只需接外设即可构成独立的微机应用系统。
微机处理器仅为CPU,CPU是构不成独立的微机系统的。
DSP是数据处理的专用芯片,单片机主要用做控制,也具有简单的数据处理能力。
1.351系列单片机内部有哪些功能部件?
1.3见1.1.1节
1.451系列单片机有哪些品种?
结构有什么不同?
各适用于什么场合?
1.4见绪论
1.551系列单片机的存储器可划为几个空间?
各自的地址范围和容量是多少?
在使用上有什么不同?
1.5见表1-5
1.6在单片机内部RAM中,哪些字节有位地址,哪些没有位地址?
特殊功能寄存器SFR中哪些可以位寻址?
有什么好处?
1.6见表1-1和表1-2
1.7已知PSW=10H,通用寄存器R0~R7的地址分别是多少?
1.7当PSw=10H,表明选中的为第二组通用寄器RO~R7的地址为10H~17H
1.8程序存储器和数据存储器可以有相同的地址,而单片机在对这两个存储区的数据进行操作时,不会发生错误,为什么?
1.8序存储器和数据存储器尽管地址相同,但在数据操作时,所使用的指令不同,选通信号也不同,因此不会发生错误。
1.9填空:
堆栈设在存储区,程序存放在存储区,I/0接口设置在存储区,中断服务程序存放在存储区。
1.9内部数据程序外部数据程序
1.10若单片机使用频率为6MHz的晶振,那么状态周期、机器周期和指令周期分别是多少?
1.10振荡周期=0.1667us,机器周期=2us,指令周期=2~8us
1.11复位时,A=,PSW=,SP=,P0~P3=
1.11A=0,PSW=0,SP=07,P0~P3=FFH
第2章指令系统
2.1MCS-51单片机有哪几种寻址方式,适用于什么地址空间?
用表格表示。
2.1见2.1节
2.2MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某内部数据存储单元的内容是否为O?
2.2因为累加器A自带零标志,因此,若判断某内部RAM单元的内容是否为零,必须将其内容送到A,通过JZ指令即可进行判断。
2.3设A=0,执行下列两条指令后,A的内容是否相同,说明道理。
(1)MOVCA,@A+DPTR
(2)MOVXA,@DPTR
2.3当A=O时,两条指令的地址虽然相同,但操作码不同,MOVC是寻址程序存储器,MOVX是寻址外部数据存储器,送入A的是两个不同存储空间的内容。
2.4指出下列各指令中操作数的寻址方式
指令
目的操作数寻址方式
源操作数寻址方式
ADDA,40H
PUSHACC
MOVB,20H
ANLP1,#35H
MOV@R1,PSW
MOVCA,@A+DPTR
MOVX@DPTR,A
2.4目的操作数源操作数
寄存器直接
SP间接寻址直接
直接直接
直接立即
寄存器问址直接
寄存器变址
寄存器间址寄存器
2.5执行下列程序段
MOVA,#56H
ADDA,#74H
ADDA,ACC
后,CY=,OV=,A=。
2.5CY=1,OV=0,A=94H
2.6在错误的指令后面括号中打×。
MOV@R1,#80H()MOVR7,@R1()√×
MOV20H,@R0()MOVR1,#0100H()√×
CPLR4()SETBR7,0()××
MOV20H,21H()ORLA,R5()√√
ANLR1,#OFH()XRLP1,#31H()×√
MOVXA,2000H()MOV20H,@DPTR()××
MOVA,DPTR()MOVR1,R7()××
PUSHDPTR()POP30H()×√
MOVCA,@R1()MOVCA,@DPTR()××
MOVX@DPTR,#50H()RLCB()××
ADDCA,C()MOVC@R1,A()××
2.6√×
√×
××
√√
×√
××
××
×√
××
××
××
2.7设内部RAM中(59H)=50H,执行下列程序段:
MOVA,59H
MOVR0,A
MOVA,#0
MOV@R0,A
MOVA,#25H
MOV51H,A
MOV52H,#70H
问A=,(50H)=,(51H)=,(52H)=。
2.7A=25H,(50H)=O,(51H)=25H,(52H)=70H
2.8设SP=60H,内部RAM的(30H)=24H,(31H)=10H,在下列程序段注释的括号中填执行结果。
PUSH30H;SP=(),(SP)=()
PUSH3lH;SP=(),(SP)=()
POPDPL;SP=(),DPL=()
POPDPH;SP=(),DPH=()
MOVA,#00H
MOVX@DPTR,A
最后执行结果是()。
2.8SP=(61H),(SP)=(24H)
SP=(62H),(SP)=(10H)
SP=(61H),DPL=(10H)
SP=(60H),DPH=(24H)执行结果将0送外部数据存储器的2410单元。
2.9对下列程序中各条指令作出注释,并分析程序运行的最后结果。
MUV20H,#0A4H
MOVA,#017)6H
MOVR0,#20H
MOVR2,#57H
ANLA,R2
0RLA,@R0
SWAPA
CPLA
ORL20H,A
SJMP$
2.9程序运行后内部RAM(20H)=B4H,A=90H
2.10将下列程序译为机器码。
机器码源程序
LA:
MOVA,#01H
LB:
MOVP1,A
RLA
CJNEA,#10,LB
SJMPLA
2.10机器码源程序
7401LA:
M()VA,#01H
F590LB:
M()VP1,A
23RLA
B40AFACJNEA,#10,LB
80F6SJMPLA
2.11将累加器A的低4位数据送P。
口的高4位,P。
口的低4位保持不变。
2.11ANLA,#0FH
SWAPA
ANLP1.#OFH
ORLP1,A
SJMP$
2.12编程将R0(R2)的内容和R1(R3)的内容相交换。
2.12MOVA,RO
XCHA,R1
MOVR0,A
SJMP$
2.12MOVA,R2
XCHA,R3
MOVR2,A
SJMP$
2.13试用3种方法将A累加器中的无符号数乘4,积存放于B和A寄存器中。
2.13
(1)利用乘法指令
MOVB,#04H
MULABSJMP$
(2)利用位移指令
RLA
RLA
MOV20H。
A
ANLA,#03H
MOVB,A
MOVA,20H
ANLA,#OFCH
SJMP$
(3)用加法指令完成
ADDA,ACC
MOVRO,A:
RO=2A
MOVA,#0
ADDCA。
#0
MOVB,A;B存2A的进位
MOVA,RO
ADDA,ACC
MOVR1,A;R1=4A
MOVA,B
ADDCA,B;进位x2
MOVB,A;存积高位
MOVA,R1;存积低位
SJMP$
2.14编程将内部RAM40H单元的中间4位变反,其余位不变放回原单元。
2.14方法1:
XRL40H,#3CH
SJMP$
方法2:
MOVA,40H
CPLA
ANLA,#3CH
ANL40H,#OC3H
ORL40H,A
SJMP$
2.15有两个BCD码数存放在(20H)和(21H)单元,完成(21H)+(20H)=>(23H)(22H)。
(24H)+(25H)=>(23H)(22H)
2.15MOVA,20H
ADDA,21H
DAA
MOV22H,A;存和低字节
MOVA,#O
ADDCA,#0
MOV23H,A;存进位
SJMP$
2.15MOVA,24H
ADDA,25H
DAA
MOV22H,A;存和低字节
MOVA,#O
ADDCA,#0
MOV23H,A;存进位
SJMP$
2.16如果R0的内容为0,将R1置为0,如R0内容非0,置R1为FFH,试进行编程。
2.16MOVA.R0
JZZE
MOVR1.#OFFH
SJMP$
ZE:
MOVR1,#O
SJMP$
2.17完成(51H)×(50H)=>(53H)(52H)的编程(式中均为内部RAM)。
2.17MOVA,50H
MOVB,51H
MULAB
MOV53H。
B
MOV52H,A
SJMP$
2.18将P1.1和P1.0同时取反10次。
(将P1.2和P1.0同时取反10次)
2.18MOVR7,#0AH
WOP:
XRLP1,#03H
DJNZR7,WOP
SJMP$
2.18MOVR7。
#0AH
WOP:
XRLP1,#05H
DJNZR7,WOP
SJMP$
2.19将内部RAM单元3字节数(22H)(21H)(20H)×2送(23H)(22H)(21H)(20H)单元。
2.19单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进下一单元的最低位,必须用大循环移位指令移位4次。
ORGO
CLRC
MOVA,20H
RLCA
MOV20H,A
MOVA,21H
RLCA
MOV21H,A
MOVA,22H
RLCA
MOV22H.A
MOVA,#O
RLCA
MOV23H,A
SLMP$
第3章程序设计
3.1编写程序,把片外数据存储器0000H~0050H中的内容传送到片内数据存储器20H~70H中。
3.1因为是多个单元操作,为方便修改地址,使用问址操作。
片外地址用DPTR指示.只能用M()Vx指令取数到A,片内地址用RO或R1指示,只能用MOV指令操作,因此,循环操作外部数据存储器一A一内部数据存储器。
ORGOOOOH
MOVDPTR,#0000H
MOVR0,#20H
LOOP:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
CJNER0,#71H,
LOOPSJMP$
3.2编写程序,实现双字节加法运算,要求RIR0+R7R6=>(52H)(51H)(50H)(内部RAM)。
3.2要注意两高字节相加应加低字节相加时产生的进位,同时要考虑最高位的进位。
ORG0
MOVA,RO
ADDA,R6
MOV50H,A
MOVA,R7
ADDCA,R1
MOV51H,A
MOVA,#0
ADDCA,#O
MOV52H,A
SJMP$
3.3设X在累加器A中(0≤X≤20),求X2并将平方数高位存放在R7中,低位存放在R6中。
试用查表法编出子程序。
3.3A中放X(小于14H)的数,平方表的一个数据占2个字节,可用BCD码或二进制数存放(如A中放的是BCD码,则要先化成二进制数再查表)。
ORG0
MOVDPTR,#TAB
ADDA,ACC;A*2
PUSHACC
MOVCA,@A+DPTR
MOVR7,A
POPACC
INCA
MOVCA,@A+DPTR
MOVR6,A
SJMP$
TAB:
DB00,00,00,01,OO,04,OO,09,OO,16H,…
DB…04H,00
3.4设内部RAM的20H和21H单元中有两个带符号数,将其中的大数存放在22H单元中,编出程序。
3.4先用异或指令判两数是否同号,在同号中判大小,异号中正数为大。
ORG0
MOVA,20H
XRLA.21H
ANLA,#80H
JZCMP
JB20H.7,BG
AG:
MOV22H,20H
SJMP$
BG:
MOV22H,21H
SJMP$
CMP:
MOVA,20H
CJNEA,21H,GR
GR:
JNCAG
MOV22H,21H
SJMP$
3.5若单片机的晶振频率为6MHz,求下列延时子程序的延时时间。
DELAY:
MOVR1,#0F8H
LOOP:
MOVR3,#0FBH
DJNZR3,$
DJNZR1,LOOP
RET
3.5fosc=6MHz,MC=2us
机器周期数
DELAY:
MOVR1,#OF8H1
LOOP:
MOVR3,#0FBH1
DJNZR3,$2
DJNZR1,LOOP2
RET2(1+2+(1+2×251+2)×248)×2us=250.48ms
3.6编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCII码存放在25H开始的单元内。
3.6将待转换的数分离出高半字节并移到低4位加30H;再将待转换的数分离出低半字节并加30H,安排好源地址和转换后数的地址指针,置好循环次数。
ORG0000H
MOVR7,#05H
MOVRO,#20H
MOVR1,#25H
NET:
MOVA,@RO
ANLA,#OFOH
SWAP
ADDA,#30H
MOV@R1,A
INCR1
MOVA,@RO
ANLA,#OFH
ADDA,#30H
MOV@R1,A
INCR0
INCR1
DJNZR7,NE
SJMP$END
3.7从内部存储器30H单元开始,有16个数据,试编一个程序,把其中的正数、负数分别送40H和50H开始的存储单元,并分别将正数、负数和零的个数送R4,R5,R6。
3.7片内RAM间址寄存器只有Ro和R1,而正数、负数和零共需3个寄存器指示地址,这时可用堆栈指针指示第3个地址,POP和PUSH指令可自动修改地址。
RO指正数存放地址,Rl指负数存放地址,SP指源数据存放的末地址,POP指令取源数据,每取一个数地址减1。
ORG0000H
MOVR7,#10H
MOVA,#0
MOVR4,A
MOVR5,A
MOVR6,A
MOVR0,#40H
MOVR1,#50H
MOVSP,#2FH
NEXT:
POPACC
JZZER0
JBACC.7,NE
INCR4
MOV@RO,A
INCR0
AJMPDJ
NE:
INCR5
MOV@R1,A
INCR1
AJMPDJ
ZER0:
INCR6
DJ:
DJNZR7,NEXT
SJMP$
END
3.8内部存储单元40H中有一个ASCII字符,试编一个程序给该数的最高位加上奇校验。
3.8可直接用P标志判断(JBP,ret)
ORG0000H
MOVA。
40H
JBP,EN;奇数个1转移
0RLA,#80H;偶数个1最高位加“1”
EN:
SJMP$
3.9编写一段程序,将存放在自DATA单元开始的一个四字节数(高位在高地址)取补后送回原单元。
3.9取补不同于求补码,求补码应区别正、负数分别处理,而取补不分正、负,因正、负数均有相对于模的补数。
可用取反加l求补,也可用模(00H)减该数的方法求补。
ORG0000H
MOVR7,#03H
MOVR0,#DATA
MOVA,@RO
CPLA
ADDA,#01
MOV@RO,A
AB:
INCRO
MOVA,@RO
CPLA
ADDCA,#O
DJNZR7,AB
SJMP$
3.10以BUFl为起始地址的外存储区中,存放有16个单字节无符号二进制数,试编一个程序,求其平均值并送BUF2单元,余数存在BUF2—1单元。
3.1016个单字节累加应用ADD指令而不能用ADDC指令,和的低位存A,当和超过一个字节时,和的高字节存于B,并要加低位相加时产生的进位,16个单字节加完后,采用右移4次进行除16求平均值的运算,商在BUF2单元,余数在BuF2-1单元。
0RG0000H
MoVR7,#0FH
MOVR0,#BUFl
MOVB,#0
MOVA,@R0
MOVR2,A
NEXT:
MOVA,R2
INCR0
ADDA,@R0
MOVR2,A
MOVA,B
ADDCA,#0
MOVB,A
DJNZR7,NEXT
;以上完成求和
MOVR6,#04H
MOVBUF2,A
MOVBUF2-1,#O
NEX:
CLRC
MOVA,B
RRCA
MOVB,A
MOVA,BUF2
RRCA
MOVBUF2,A
MOVA,BUF2-1
RRCA
MOVBUF2-l,A
DJNZR6,NEX
SJMP$
;以上完成除16运算
3.11将内部RAM的20H单元中的十六进制数变换成ASCII存入22H,21H单元,高位存入22H单元,要求用子程序编写转换部分。
3.11将20H单元的内容分解为高4位和低4位,根据是否大于9分别进行加37H和30H处理。
0RG0000H
MOVA,20H
ANLA,#0F0H
SWAPA
ACALLASCII
MOV22H,A
MOVA.20H
ANLA,#0FH
ACALLASCII
MOV21H,A
SJMP$END
ASCII:
CJNEA,#0AH,NE
NE:
JCA30
ADDA,#37H
RET
A30:
ADDA,30H
RET
3.12编写一段程序,以实现图中硬件的逻辑运算功能。
3.12要注意,位的逻辑运算其中一个操作数必须在C。
ORG0000H
MOVC,20H
ANLC,2FH
CPLC
ORLC,/2FH
CPLC
ANLC,53H
MOVP1.0,C
SJMP$
END
3.13用位操作指令实现下面的逻辑方程(×表示逻辑乘,+表示逻辑加):
P1.2=(ACC.3×P1.4×-ACC.5)+(-B.4×-P1.5)
3.13ORG0000H
MOVC,ACC.3
ANLC。
P1.4
ANLC,/ACC.5
MOV20H,C
MOVC,B.4
CPLC
ANLC,/P1.5
ORLC,20H
MOVP1.2,C
SJMP$
END
3.14试编写一个三字节无符号数乘一字节的乘法程序。
3.14设一字节乘数存放在R1,三字节的被乘数存放在data开
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片微型计算机与接口技术 单片 微型计算机 接口 技术 思考题 习题 解答 01