![MCS单片机原理及应用课后习题答案_第1页](http://file4.renrendoc.com/view3/M03/30/05/wKhkFmYpb42AZAduAAGm4MGW36Q616.jpg)
![MCS单片机原理及应用课后习题答案_第2页](http://file4.renrendoc.com/view3/M03/30/05/wKhkFmYpb42AZAduAAGm4MGW36Q6162.jpg)
![MCS单片机原理及应用课后习题答案_第3页](http://file4.renrendoc.com/view3/M03/30/05/wKhkFmYpb42AZAduAAGm4MGW36Q6163.jpg)
![MCS单片机原理及应用课后习题答案_第4页](http://file4.renrendoc.com/view3/M03/30/05/wKhkFmYpb42AZAduAAGm4MGW36Q6164.jpg)
![MCS单片机原理及应用课后习题答案_第5页](http://file4.renrendoc.com/view3/M03/30/05/wKhkFmYpb42AZAduAAGm4MGW36Q6165.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章思考题及习题
1-1请写出下列各十进制数在八位微型机中的原码、反码和补码形式:
(1)x=+48(2)X=+123(3)X=-34(4)X=-115
真值X原码反码补码
+4830H30H30H
+1237BH7BH7BH
-3410100010B=0A2H0DDH0DEH
-11511110011B=OF3H8CH8DH
1-2将下列数看作八位微型机中带符号数的原码、反码和补码时,写出相应的真值:
(1)10110110B(2)01000101B(3)11110010B(4)10101101B
原码10110110B01000101B11110010B1010U01B
真值X-36H=-54+45H=+69-72H=-114-2DH=-45
反码10110110B01000101B11110010B10101101B
真值X-49H=-73+45H=+69-0DH=-13-52H=-82
补码10110110B01000101BUllOOlOB10101101B
真值X-4AH=-74+45H=+69-0EH=-14-53H=-83
1-3写出下列各数的BCD码:
(1)47—47H010001UB(2)78-78H01111000B
(3)1996-1996H0001100110010110B(4)115-115H000100010101B
1-4用十六进制形式写出下列字符的ASCII码:
字符串无校验ASCII码奇校验ASCII码偶校验ASCII码
(1)ESC1BH9BH1BH
(2)STUDENT53H54H55H44H45H0D3H54H0D5H0C4H53H0D4H55H44H
4EH54H0C5H4EH0D4H
45HOCEH54H
(3)X1AB9658H31H41H42H39H58H31H0C1H0C2H0D8H0B1H41H
36H0B9H0B6H42H39H36H
(4)COMPUTER43H4FH4DH50H55H43H4FHOCDHODOH0C3HOCFH4DH
54H45H52H0D5H54H45H52H50H55H0D4H
0C5H0D2H
1-5将下列数据进行加法和减法运算,写在前面的数为被加数或被减数(写出竖式)。
(1)97H和OFH(2)OA6H和33H(3)OF3H和OF4H(4)0B6HOEDH
一、加法
(1)97H和OFH
被加数10010111B=97H
加数00001111B=0FH
+
和10100110B=A6H
C8=0,C7=0OV=0,CY=0
分析:
无符号数:CY=0,97H+0FH=0A6H=1667151+15=166
带符号数:OV=0,97H+0FH=0A6H真值=-5AH=-90V-69H+15=-105+15=-90
(2)0A6H和33H
被加数10100110B=A6H
加数00110011B=33H
+
和11011001B=F9H
C8=0,C7=00V=0,CY=0
分析:
无符号数:CY=0,A6H+33H=0D9H=2177166+51=217
带符号数:OV=0,A6H+33H=0D9H真值=-27H=-39V-5AH+51=-90+51=-39
(3)OF3H和OF4H
被加数11110011B=F3H
加数11110100B=F4H
+
和111100111B=E7H
C8=l,C7=10V=0,CY=1
分析:
无符号数:CY=1,F3H+F4H=100H+0E7H=lE7H=487;243+244=487
带符号数:OV=0,F3H+F4H=0E7H真值=-19H=-25V-13+(-12)=-25
(4)OB6H和OEDH
被加数10110110B=B6H
加数11101101B=EDH
+
和110100011B=A3H
C8=1,C7=1OV=0,CY=1
分析:
无符号数:CY=1,B6H+EDH=100H+0A3H=1A3H7182+237=419
带符号数:OV=0,B6H+EDH=0A3H真值=-5DH=-93V-4AH-13H=-74-19=-93
二、减法:
(1)97H和OFH
被减数10010111B
一减数0000111IB
求补
11110000B取反
+1力IH
+11110001B
进位111110111
差10001000B
分析:
无:CY=/C8=/l=0,V97H-0FH=88H,151-15=136
带:C8=1,C7=1OV=0,V97H-0FH=88H,真值=-78H=-120-105-15=-120
(2)0A6H和33H
被减数10100110B
一减数0011001IB
求补
11001100B取反
+1加1
+11001101B
差10110001IB
分析:
无:CY=/C8=/l=0,V0A6H-33H=73H,166-51=115
带:C8=1,C7=0,OV=1,V0A6H-33H=63H,OVER-90-51=-141<-128
(3)OF3H和OF4H
被减数11110011B
一减数11110100B
求补
0000101IB取反
+1加1
+00001100B
差11111111B
分析:
无:CY=/C8=/0=1,V0F3H-0F4H=-100H+0FFH=-l
带:C8=0,C7=0,OV=0,V0F3H-0F4H=0FFH,真值=-(OOH-OFFH)=-l
(4)0B6H和OEDH
被减数10110110B
-减数11101101B
求补
0001001OB取反
+1加1
+0001001IB
差11001001B
分析:
无:CY=/C8=/0=l,V0B6H-0EDH=-l00H+0C9H=-37H=-55
带:C8=0,C7=0,OV=0,V0B6H-0EDH=0C9H,真值=-(00H-0C9H)=-37H=-55
1-6完成下列数据的乘除运算,写在前面的数为被乘数或被除数(写出竖式)。
(1)1100B和1101B
被乘数1100B
乘数X1101B
1100
0000
1100
+1100
乘积10011100B
(2)U011011B和10010101B
被乘数11011011B
乘数X10010101B
11011011
00000000
11011011
00000000
11011011
00000000
00000000
+11011011
乘积
(1)1100B和1101B
0.101
11011100
1101
01100
1100
0
(2)11011011B和10010101B
1.01111
1001010111011011
10010101
100011000
10010101
100000110
10010101
11100010
10010101
10011010
10010101
00101
1-7将下列数据分别进行逻辑乘、逻辑加和逻辑异或运算(写出竖式)。
(1)33H和OBBH
00110011B=33H
10111011B=BBH
A
00110011B=33H
00110011B=33H
10111011B=BBH
V
10111011B=BBH
00110011B=33H
10111011B=BBH
V
10001000B=88H
(2)OABH和7FH
10101011B=ABH
01111111B=7FH
A
00101011B=2BH
10101011B=ABH
01111111B=7FH
V
11111111B=FFH
10101011B=ABH
01111111B=7FH
V
11010100B=D4H
(3)OCDH和80H
11001101B=CDH
10000000B=80H
A
10000000B=80H
11001101B
10000000B=80H
V
11001101B=CDH
11001101B=CDH
V100000
00B=80H01001101B=4DH
(4)78H和OFH
01111000B=78H
00001111B=0FH
A
00001000B=08H
01111000B=78H
00001111B=0FH
V
01111111B=7FH
01111000B=78H
00001111B=0FH
V
01110111B=77H
1-8把下列各数按补码运算规则求出X+Y的补码及其真值:
(1)X=+48丫=十38
被加数00110000B[X]fr=30H
加数00100110B[Y],|-26H
+
和01010110B=56H
C8=0,C7=00V=0
;[X卜卜+[YL=[X+Y]产56H真值=+56H=+86
(2)X=+123Y=79
被加数01111011B[X]fr=7DH
加数11001111B[Y];|.=CFH
+
和101001010B=4AH
C8=l,C7=l,0V=0
,.,[X]»h+[Y]>h=[X+Y]n.=4AH真值=+4AH=+74
(3)X=—34Y=+87
被加数11011110B[X]fr=DEH
加数01010111B[Y]»|-57H
+
和100110101B=35H
C8=1,C7=1OV=0
;[X]朴+[Y]产[X+Y]*卜=35H真值=+35H=+53
(4)X=-115Y=-15
被加数10001101B[X]«.=8DH
加数11110001B[Y]»,.=F1H
+
和101111110B=7EH
C8=l,C7=0OV=1
V[X]tt+[Y]>h=7EH/[X+Y]fr负溢出
第二章习题答案
2-28051单片机内部包含哪些主要逻辑部件?各自的功能是什么?
答:8051单片机内部包含:
1、中央处理器CPU:它是单片机内部的核心部件,决定了单片机的主要功能特性,由
运算器和控制器两大部分组成。
2、存储器:8051单片机在系统结构上采用了哈佛型,将程序和数据分别存放在两个存
储器内,一个称为程序存储器,另一个为数据存储器。在物理结构上分程序存储器和数据存
储器,有四个物理上相互独立的存储空间,即片内ROM和片外ROM,片内RAM和片外
RAM。
3、定时器/计数器(T/C):8051单片机内有两个16位的定时器/计数器,每个T/C既
可以设置成计数方式,也可以设置成定时方式,并以其定时计数结果对计算机进行控制。
4、并行I/O口:8051有四个8位并行I/O接口(P0-P3),以实现数据的并行输入输出。
5、串行口:8051单片机有一个全双工的串行口,可实现单片机和单片机或其他设备间
的串行通信。
6、中断控制系统:8051共有5个中断源,非为高级和低级两个级别。它可以接收外部
中断申请、定时器/计数器申请和串行口申请,常用于实时控制、故障自动处理、计算机与
外设间传送数据及人机对话等。
2-38051单片机的存储器分哪几个空间?通过什么信号来区别不同空间的寻址?
答:有四个物理上相互独立的存储空间:片内ROM地址为OOOOH-OFFFH此时/EA=1;片外
ROM地址为0000H-0FFFFH此时/EA=0。片内数据存储器地址为00H-0FFH;片外数据存储
器地址为0000H-0FFFFH;区分片内片外数据存储器通过指令MOV与MOVX。
2-6内部RAM低128单元划分为哪三个主要部分?各部分主要功能是什么?
答:分为三部分:工作寄存器去,位寻址区,用户RAM区(堆栈、数据缓冲)。
工作寄存器区(00H-1FH):32个RAM单元共分四组,每组8个寄存单元(R0-R7),
寄存器常用于存放操作数及中间结果等。位寻址区(20H-2FH):此部分16个单元的每一
位都有一个8位表示的位地址,位寻址取得每一个单元既可作为一般RAM单元使用,进行
字节操作,也可以对单元中的每一位进行位操作。用户RAM区:也是数据缓冲区,一般用
于存放用户数据及作堆栈区使用。
第三章习题答案
3-1MCS-51的寻址方式及特点
MCS-51的寻址方式有七种:
1.直接寻址:指令中直接给出操作数所在的单元地址或位地址P68
2.立即寻址:在指令中紧跟在操作码之后的字节是操作数P69
3.寄存器寻址:操作数在指令中给出的寄存器内P69
4.寄存器间接寻址:指令中指定的寄存器内存的是操作数的地址P70
5.变址寻址:指令中给出由基址加变址形成的16位地址作为操作数的地址P71
6.相对寻址:指令中给出相对偏移量,该相对偏移量与PC当前值求和得到转移地址P72
7.位寻址:指令中给出的位地址或位寄存器里存是所寻的位操作数P71
3-2MCS-51的指令按功能分类及各类的作用
MCS-51的指令按功能分5类:
1.数据传送指令:主要用于数据的传送与交换和栈操作。P74
2.算术运算指令:主要用来作算术四则运算、增量、减量及二一十进制调整。P81
3.逻辑运算指令:主要用来作“与”、“或”、“异或”、“清除”“求反”及“左右移位”等逻辑运
算。P88
4.位操作指令:主要用来作“与“、“或”、“清除”、“置位”“求反”等布尔操作及“位传送”操
作。P90
5.控制转移指令:主要用于改变程序计数器PC的值,以控制程序执行的走向,有转移、调
用及返回操作.P91
3-3变址寻址和相对寻址中偏移量的异同点
变址寻址:@A+DPTR;基址:DPTR,变址:A
@A+PC;基址:PC当前值,变址:A
变址:A中为8位二进制无符号数偏移量(A)e[0,255]BP[OOH,OFFH]
相对寻址:
相对偏移量为8位二进制带符号数的补码
rele[-128,+127]
[rel]补码G[OOH,OFFH]
相同点:偏移量G[OOH,OFFH]
不同点:变址寻址中偏移量为8位二进制无符号数;相对寻址中偏移量为8位二进制带符
号数的补码
3-4指出下面每条指令的寻址方式:
MOVA,#30H-寄存器、立即-30H立即数
MOVC,30H-寄存器、位-30H位地址
MOVXA,@DPTR-寄存器、间接
jCLABI-相对
MOV3OH,@R1-直接、间接-30H字节地址
MOV30H,R5-直接、寄存器-30H字节地址
MOVCA,@A+PC-寄存器、变址
sjmpLAB2-相对
3-5运行下列程序后各单元及A、PSW的内容(1)
1.
MOVA,#2;(A)=02H0000OOOl(psw)
MOVR1,#30H;(Rl)=30H00000001
MOV@R1,A;((R1))=(3OH)=O2H00000001
MOV35H,R1;(35H)=30H00000001
XCHA,R1;(A)=30H,(R1)=02H00000000
2.
MOVA,#0F5H;(A)=0F5H00000000
MOV30H,#9BH;(30H)=9BH
MOVR0,#30H;(R0)=30H
ADDA,#28H;(A)=1DH10000000
ADDCA,@R0;(A)=0B9H01000001
3.
CLRC;(CY)=0
MOV40H,#7AH;(40H)=7AH
MOVA,#92H;(A)=92H00000001
MOVR0,#40H;(R0)=40H
SUBBA,@R0;(A)=92H-7AH-0=18H,(PSW)=44H
MOVA,#79H;(A)=79H00000001
MOV30H,#89H;(30H)=89H
ADDA,30H;(A)=02H11000001
DAA;(A尸68H10000001
SWAPA;(A)=86H10000001
3-6写出能完成下列数据传送的指令
⑴R1内容传送到R0
MOVA,RI;MOVRO,A
(2)内部RAM25H单元内容送到35H单元
MOV35H,25H或MOVA,25H;MOV35H,A;MOV35H,25H
(3)内部RAM25H单元内容送到Pl口
①MOVA,25H;MOVPl,A;
②MOVP1,25H;
③MOV90H,25H
(4)内部RAM40H单元内容送外部RAM2005H单元
MOVA,40H;MOVDPTR,#2005H;MOVX@DPTR,A
(5)外部RAM3000H单元内容送内部RAM25H单元
MOVDPTR,#3000H;MOVXA,@DPTR;MOV25H,A
(6)外部ROMIOOOH单元内容送内部RAM35H单元
MOVDPTR,#1000H;CLRA;MOVCA,@A+DPTR;MOV35H,A
(7)外部ROM4000H单元内容送外部RAM4000H单元
MOVDPTR,#4000H;CLRA;MOVCA,@A+DPTR;MOVX@DPTR,A
(8)外部RAM1000H单元内容送SP堆栈指针
MOVDPTR,#1000H;MOVXA,@DPTR;MOVSP,A
3-7BCD码减法,求7954H-4157H=3797H。
算法1:
「999AH・4157H=5843H
5843H+7954H并调整
ORG0000H
BCDS:MOVA,#9AH
CLRC
SUBBA,#57H
MOV30H,A
MOVA,#99H
SUBBA,#41H
MOV31H,A
MOVA,#54H
ADDA,30H
DAA
MOV20H,A
MOVA,#79H
ADDCA,31H
DAA
MOV21H,A
CPLC
MOV2FH,C
SJMPS
END
循环程序
ORG0000H
BCDS1:MOV20H,#54H
MOV21H,#79H
MOV30H,#57H
MOV31H,#41H
MOVRO,#30H
CLRC
MOVA,#9AH
SUBBA,@R0
MOV40H,A
INCRO
MOVA,#99H
SUBBA,@R0
MOV41H,A
CLRC
MOVR0,#40H
MOVR1,#20H
MOVR2,#2
LOOP:MOVA,@RO
ADDCA,@R1
DAA
MOV@R0,A
INCRO
INCRI
DJNZR2,LOOP
CPLC
MOV7FH,C
SJMPS
END
3-7顺序程序算法2
ORG0000H
BCDS1:MOV20H,#54H
MOV21H,#79H
MOV30H,#57H
MOV31H,#41H
MOVR0,#30H
CLRC
MOVA,#9AH
SUBBA,@R0;
ADDA,20H;
DAA;CY)=0
MOV40H,A
CPLC;(CY)=1
INCRO
MOVA,#9AH
SUBBA,@R0;(CY)=0
ADDA,21H
DAA
MOV41H,A
CPLC
MOV7FH,C
SJMP$
END
3・8写出下段程序中每一步A、B中的结果
MOVA,#22H;(A)=22H
MOVB,#05H;(B)=05H
MOVR0,#08H
MULAB;(A)=0AAH,(B)=000000000
MOVB,R0
DIVAB;(A)=15H,(B)=02H00000001
3-9试写出完成如下操作的程序
(1)ORG0000H
MOVDPTR,#1000H
MOVXA,@DPTR
ANLA,#11110000B
MOVX@DPTR,A
SJMP$
(2)ORL50H,#00001111B
(3)XRL50H,#11100000B
(4)MOV50H,#11110000B
(5)XRL50H,#0FFH
3-1030H开始的20个单元数据传送到外部3000H
ORG0000H
MOVRO,#30H
MOVDPTR,#3000H
MOVR7,#20
Loopl:MOVA,@R0
MOVX@DPTR,A
INCRO
INCDPTR
DJNZR7,Loopl
SJMPS
END
3-11根据R3条件转移1
ORG0000H
CjneR3,#15,NEQ
sjmpLI;=15
NEQ:jnCLl;>15
sjmp$;<15
LI:nop;>15
ORG0000H
CjneR3,#15,NEQ
sjmpHalt
NEQ:jCLl;<15
sjmpHalt
LI:nop;<15
Halt:sjmp$;>15
ORG0000H
CjneR3,#15,NEQ
sjmpLI
NEQ:jCLl
sjmp$
LI:nop;<15
ORG0000H
CjneR3,#15,NEQ
sjmpHalt
NEQ:jnCLl
sjmpHalt
LI:nop;>15
Halt:sjmp$
3-11根据R3条件转移2
ORG0000H
CLRC
MOVA,R3
SUBBA,#15
JNCGE15;N15
(R3)-15
ORG01OOH
CLRC
MOVA,R3
SUBBA,#15
JCGE15;<15
(R3)-15
ORGOOOOH
CLRC
MOVA,#15
SUBBA,R3
JNCGE15;W15
•••*
15-(R3)
ORGOOOOH
CLRC
MOVA,#15
SUBBA,R3
JCGE15;>15
15-(R3)
3-12已知(SP尸53H,(PC尸37FEH执行:ACALL3AOOH后:
(SP)=(SP)+2=55H
(PC)=3A00H
((SP-l))=(54H)=00H;PCL
((SP)尸(55H尸38H;PCH
37FEH:ACALL3A00H
3800H:
第四章汇编语言程序设计思考题与习题4及答案
4-13试编程实现将20H单元的两位BCD数相乘,结果以BCD码的形式存于21H单元当
中。
4-13-1ORG0000H
MOV20H,#56H
MOVA,20H
ANLA,#0FH
MOVB,A
MOVA,20H
ANLA,#0F0H
SWAPA
MOVR2,A
DECB
LOOP:ADDA,R2
DAA
DJNZB,LOOP
MOV21H,A
SJMPS
END
4-13-2
ORG0000H
MOV20H,#56H
MOVA,20H
MOVR0,#21H
MOV21H,#0
XCHDA,@R0
MOVB,@R0
SWAPA
MOVR2,A
DECB
LOOP:ADDA,R2
DAA
DJNZB,LOOP
MOV21H,A
SJMPS
END
4-7设一个加数在50H〜52H单元中,另一个加数在53H〜55H中,进位存放在位地址00
中,试编程实现两数求和。
ORG000H
ONEDATA50H
TWODATA53H
WEIBITOOH
MOVRO,#ONE
MOVR1,#TWO
;MOVC,WEI
CLRC
MOVR2,#3
LOOP:MOVA,@R0
ADDCA,@R1
MOV@R0,A
INCRO
INCRI
DJNZR2,LOOP
MOVWEI,C
SJMPS
END
4-7-2
ORG0000H
ONEDATA50H
TWODATA53H
WEIBITOOH
MOVRO,#ONE
MOVR1,#TWO
CLRC
MOVR2,#3
SETBRSO
MOVR0,#58H
CLRRSO
LOOP:MOVA,@R0
ADDCA,@R1
INCRO
INCRI
SETBRSO
MOV@R0,A
INCRO
CLRRSO
DJNZR2,LOOP
MOVWEI,C
SJMP$
END
4-11试用除法指令将20H单元的两位BCD码变成ASCII码后存入21H和22H单元。
ORG0000H
MOV20H,#67H
MOVA,20H
MOVB,#10H
DIVAB
ADDA,#30H
MOV21H,A
ORLB,#30H
MOV22H,B
SJMP$
END
4-1从20H单元开始存放一组带符号数,其数目已存在1FH单元。要求统计出大于0、小
于0和等于0的个数并存于ONE、TWO、THREE三个单元。
ORG0000H
ONEEQU30H
TWOEQU31H
THREEEQU32H
NUMEQU1FH
MOVNUM,#0FH
MOVR0,#20H;-l,2,34,0A0H,0....
MOVR1,#ONE
LOOP:MOV@R1,#O
INCRI
CJNER1,#34H,LOOP
LOOP1:MOVA,@R0
JZMTHREE
JBACC.7,MTWO
INCONE
SJMPDJNZZ
MTHREE:INCTHREE
SJMPDJNZZ
MTWO:INCTWO
DJNZZ:INCRO
DJNZNUM,LOOP1;NUM=0FH
SJMP$
END
4一5在用JMP指令实现128分支的程序中,试用LJMP代替AJMP指令。修改后的程序有
何特点?最多能实现多少分支?
4-5
AJMP指令表128分支占128*2=256字节MEMORY
LJMP指令表可以实现256/3=85个分支
特点:各分支可在64KB存储器中转移。
4-2设自变量X为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单
元,请编出满足如下关系的程序:
XX>50
Y=5X50>X>20
2XX<20
ORG0000H
VAXEQU30H
FUNCEQU31H
MOVVAX,#55;15;20;25;50;55
MOVA,VAX
CJNEA,#20,DOI
DOI:JNCDO2
MOVB,#2
MULAB
SJMPMEM
DO2:CJNEA,#50,DO3
DO3:JNCMEM
MOVB,#5
MULAB
MEM:MOVFUNC,A
SJMP$
END
XYXY
152X=30=14H50X=50=32H
205X=100=64H55X=55=37H
255X=125=7DH
4-3外部RAM从2000H到21OOH有一数据块,请编出将它们传送到外部RAM3000H到
3100H区域的程序。
4-7ORG0000H
MOVDPTR,#2000H
MOVP2,#30H
MOVR0,#00H
MOVR2,#0
LOOP:MOVXA,@DPTR
MOVX@R0,A
INCDPTR
INCRO
DJNZR2,LOOP;0—FF-0
MOVXA,@DPTR;(DPTR)=21OOH
INCP2;31H
MOVX@R0,A
SJMP$
END
4-4在内部RAM中,有一个以BLOCK为始址的数据块,块长在LEN单元。请用查表指
令编一程序,先检查它们若是16进制中的A〜F,则把它们变为ASCII码;若不是,则把
它们变为OOHo
4-4
BLOCKEQU31H
LENEQU30H
NEQU30
ORG0000H
MOVRO,#BLOCK
MOVLEN,#N
MOVR2,LEN
LOOP:MOVA,@R0
CJNEA,#0AH,DOl
DOI:JNCDO2
SJMPDO5
DO2:CJNEA,#0FH,DO3
SJMPDO4
DO3:JCDO4
DO5:MOVA,#0
SJMPNEXT
DO4:MOVDPTR,#TAB
CLRC
SUBBA,#0AH
MOVCA,@A+DPTR
NEXT:MOV@R0,A
INCRO
DJNZR2,LOOP
SJMP$
TAB:DB,A,;B7C,;D7E,;F,
END
4-6试编写一个子程序将字符串:“MCS-51Microcntro『装入外部RAM8000H开始的显示
缓冲区。
4-9ORG0000H
MOVDPTR,#TAB
MOVP2,#80H
MOVR0,#00H
MOVR2,#19
LOOP:MOVA,#0
MOVCA,@A+DPTR
MOVX@R0,A
INCRO
INCDPTR
DJNZR2,LOOP
SJMP$
tab:DB'MCS-51Microcontrol,
END
4-10将内部RAM的AAA单元中8位无符号二进制数转换成用BCD码表示的十进制数。
(要求用连续除10的方法实现)
4-10
ORG0000HORG1000H
AAADATAOFFHAAAEQUOFFH
MOVA,#AAAMOVA,#AAA
MOVB,#0AHMOVRO,#30H
DIVABMOVB,#0AH
MOV30H,BDIVAB
MOVB,#0AHMOV@R0,B
DIVABINCRO
MOV31H,BJNZLOOP
MOV32H,ASJMP$
SJMPSEND
END
4-9求8个数的算数平均值Y=(£Xi)/8(i=0,…7)
ORG0000H
MOVSP,#6FH
CALLZHISHU
MOVR2,#0;QIUHEA
MOVR3,#0;QIUHEB
MOVRO,#30H
MOVR4,#08
LOOP:MOVA,@R0
JZNEXT
MOVB,#08H
DIVAB
ADDA,R2
MOVR2,A
MOVA,B
ADDA,R3
MOVR3,A
NEXT:INCRO
DJNZR4,LOOP
MOVA,R3
MOVB,#08H
DIVAB
ADDA,R2
MOVR2,A
MOVR3,B
SJMP$
ZHISHU:MOV30H,#0FFH
MOV31H,#OFFH
MOV32H,#0FFH
MOV33H,#0FFH
MOV34H,#0FFH
MOV35H,#0FFH
MOV36H,#0FFH
MOV37H,#0FFH
MOV38H,#0FEH;FH
MOV39H,#0FFH
RET
END
4-16设逻辑运算表达式为
其中变量A、B、C分别为PL0、Pl.4、定时器溢出标志TF1,D、E、F分别为22H.2、
22H.3的位地址、外部中断标志IF1,输出变量Y为PL5,请编写程序用软件方法实现
上述逻辑功能。
4-16-1
AlBITP1.0
BlBITPl.4
ClBITTF1
DBIT22H.2
EBIT22H.3
FBITIE1
YBITPl.5
ORG0000H
MOVC,B1
ORLC,/C1
CPLC
ANLC,A1
MOVF0,C
MOVC,E
ORLC,/F
CPLC
ANLC,D
ORLC,F0
MOVY,C
SJMPS
END
4-17A・T20个合法字符,散转程序设计。
解:
方法1:键盘键入A・T按ASCH码考虑,则有:
字母ASCII码地址表中的偏移量字母ASCII码地址表中的偏移量
A41H(41H-41H)*2=0K4BH(4BH-41H)*2=14H
B42H(42H-41H)*2=02HL4CH(4CH-41H)*2=16H
C43H(43H-41H)*2=04HM4DH(4DH-41H)*2=18H
D44H(44H-41H)*2=06HN4EH(4EH-41H)*2=1AH
E45H(45H-41H)*2=08H04FH(4FH-41H)*2=1CH
F46H(46H-41H)*2=0AHP50H(50H-41H)*2=1EH
G47H(47H-41H)*2=0CHQ51H(51H-41H)*2=20H
H48H(48H-41H)*2=0EHR52H(52H-41H)*2=22H
I49H(49H-41H)*2=10HS53H(53H-41H)*2=24H
J4AH(4AH-41H)*2=12HT54H(54H-41H)*2=26H
方法2:
字母自定义地址表中的偏移量字母自定义地址表中的偏移量
A1H(1H-1H)*2=0KOBH(0BH-01H)*2=14H
B2H(2H-1H)*2=02HLOCH(0CH-01H)*2=16H
C3H(3H-1H)*2=O4HMODH(0DH-01H)*2=18H
D4H(4H-1H)*2=06HNOEH(0EH-01H)*2=1AH
E5H(5H-1H)*2=O8H0OFH(OFH-O1H)*2=1CH
F6H(6H-1H)*2=0AHP10H(10H-01H)*2=1EH
G7H(7H-1H)*2=0CHQ11H(11H-01H)*2=20H
H8H(8H-1H)*2=0EHR12H(12H-01H)*2=22H
I9H(9H-1H)*2=10HS13H(13H-01H)*2=24H
JOAH(OAH-1H)*2=12HT14H(14H-01H)*2=26H
按方法1编程如下:
ORG1000H
MAIN:CJNEA,#41H,D01;方法2#01H
SJMPD02
DOI:JCERR
CJNEA,#54H,DO3;方法2#14H
SJMPDO2
DO3:JNCERR
H)=38HDO2:CLRC
SUBBA,#41H;方法2#01H
ADDA,ACC
MOVDPTR,#ADDLAB
MOVR2,A
MOVCA,@A+DPTR
MOVR3,A
INCR2
MOVA,R2
MOVCA,@A+DPTR
MOVDPL,A
MOVDPH,R3
CLRA
JMP@A+DPTR
ADDLAB:DWAAAA,BBBB,CCCC,DDDD,EEEE,FFFF,GGGG,HHHH,IIII,JJJJ
DWKKKK,LLLL,MMMM,NNNN,OOOO,PPPP,QQQQ,RRRR,SSSS,TTTT
ERR:...
AAAA:...
BBBB:...
TTTT:.......
注:程序中变址(A)vOFFH。
第五章输入输出和中断部分习题参考答案
5-2什么叫I/O接口?I/O接口的作用是什么?
I/O接口是计算机和外设进行数据交换的桥梁。
I/O接口的作用:
锁存作用:防止由于CPU速度快,外设慢而产生的丢数现象
隔离作用:防止DB上的信息重叠
变换作用:在CPU与外设之间进行信息类型、电平、传送接收方式变换
联络作用:在CPU与外设之间进行联络,ReadyBusy
5-3I/O端口有哪两种编址方式?各有什么特点?
I/O端口编址方式:统一编址、独立编址
统一编址:I/O接口与内存储器采用一套地址,完全相存储器单元一样处理,使用访问存储
器的指令。如:movx类指令。
独立编址:采用一套与存储器不同的地址,利用/MREQ(存储器请求)和/IORQ(输入输出
请求),CPU有专门的I/O指令如:IN,OUT。
5-4I/O数据有哪四种传送方式?
无条件传送方式
条件传送方式(查询方式)
中断方式
存储器直接存取(DMA)方式
5-6结合图5-17说明DMA传送的工作过程
外设向DMAC发DMA申请
DMAC向CPU发BUSRQ
CPU发BUSAK响应
DMAC发存储器地址和读写信号
DMA控制结束,恢复CPU对总线控制
5-13中断允许寄存器IE各位的定义是什么?请写出允许定时器/计数器T/C1溢出中断的指
令。
IE.8:EA,中断允许触发器
IE.4:ES,串行口中断允许位
IE.3:ET1,定时器/计数器1中断允许位
IE.2:EX1,外部中断1允许位
IE.1:ETO,定时器/计数器0中断允许位
IE.O:EXO,外部中断1允许位
允许定时器/计数器T/C1溢出中断的指令:
SctbET1
SetbEA
SetbTRI
5-17MCS-51的中断处理程序能否存储在64kB程序存储器的任何区域?若可以,则如何实
现?
可以。
实现方法:在中断向量入口处,放一条长跳转指令,跳转到中断服务程序处。
第六章习题参考答案
6-1
8051单片机内部有四个8位并行I/O口,命名为P0、Pl、P2、P3。这4个并行I/O口都可
以作准双向通用I/O口,即先执行一条指令MOVP1,#OFFH。P0、P2和P3口还有复用的第
二功能。每个口都包含个(8位)锁存器(即特殊功能寄存器P0〜P3),一个输出驱动
器,和两个三态缓冲器。
P0口功能:
可作通用I/O口,是漏级开路的。因此必须外接上拉电阻,以保证“1”信号正常输出。
也可作为分时作为地址/数据总线使用。
P1口功能:可作通用I/O口,也是一个“准双向”口,作输入口时要先将输出驱动管截止。
P2口功能:可用作通用I/O口,与P1口类似,也
可用作高8位地址总线。
P3口功能:可用作通用I/O口,另外,还有其第二功能。
6-2
“读锁存器”指令是P0〜P3作目的操作数的指令,能实现“读一修改一写”口锁存器的操作。
“读引脚”指令的特点是:P0〜P3作为源操作数出现在指令中,但在读引脚数据之前,必须
对所读的口或口位的D锁存器写入“1”。要正确读引脚数据,必须先写一条MOVPX,#0FFH
指令或能对所读的口或口位的D锁存器写入“1”的指令,而后紧接着写指令。
6-3
在单片机实时应用系统中,定时器/计数器有定时和对外部事件计数的功能,可用于定时控
制、延时、对外部事件检测和计数等场合.定时是对周期已知的脉冲信号计数。计数是对外
部发生事件进行计数,对周期未知的外来脉冲信号计数。采用可编程的定时器/计数器
可以方便灵活地修改定时或计数的参数或方式,与CPU并行工作,大大提高了CPU的工作
效
率。
6-4
MCS-51单片机内部有2个16位的可编程的定时器/计数器:定时器/计数器0(T/CO),定
时器/计数器1(T/C1)。
定时方式下,T/C计数8051内部机器周期信号的个数,由计数个数可以计算出定时时间。
每个机器周期使T/C的计数器增加1,直至计满回零后自动产生溢出中断请求,表示定时时
问到。
计数方式下,T/C计数来自引脚TO(P3.4)和T1(P3.5)的外部脉冲信号的个数。输入脉冲由
1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。
6-5
MCS-51单片机的定时器/计数器共有四种工作方式:方式0、1、2、3。
方式0是高8位和低5位的一个13位计数器的运行方式。当TL1的低5位溢出时,向TH1
进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。还可以通过
查询TF1是否置位来判断TH1是否回零溢出。
方式1是一个16为定时器/计数器,结构几乎与方式0完全一样,唯一的差别是方式1中的
THl(THO)和TL1(TLO)均是8位的,构成16位计数器。
方式2中,T/C被拆成一个8位的寄存器TH1(THO)和一个8位计数器TL1(TLO),两
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44026-2024预制舱式锂离子电池储能系统技术规范
- 新人教版五年级数学第三单元教案
- 八年级数学 《一元一次不等式》小结与复习学案
- 护理查房(切除甲状线)
- 高处吊篮安装拆卸工(建筑特殊工种)证考试题库及答案
- 《无源EMC滤波器件抑制特性的测量方法GBT+7343-2017》详细解读
- 基于标准PCIe接口的人工智能加速卡液冷设计白皮书
- 2022年度辽宁省安全员之C证(专职安全员)强化训练试卷A卷附答案
- 2022年度辽宁省安全员之C1证(机械安全员)考前练习题及答案
- 2022年度辽宁省安全员之B证(项目负责人)练习题(五)及答案
- 大学生劳动就业法律问题解读智慧树知到期末考试答案2024年
- 城市排水系统的维护与升级方案
- 中国文旅数字化发展报告
- 国家职业技术技能标准 6-29-01-07 乡村建设工匠 2024年版
- 降低血标本不合格率的品管圈课件
- 2024年中考英语第一次模拟试卷-(海南卷)(全解全析)
- 广州小升初英语考试中频繁出现的词汇表
- 病历质量管理持续改进课件
- 财务安全培训课件
- 法人变更的可行性分析报告
- 老年人养老服务机构标准化建设
评论
0/150
提交评论