单片机原理及接口技术余锡存著 课后习题答案.docx

上传人:b****6 文档编号:16080182 上传时间:2023-07-10 格式:DOCX 页数:39 大小:48.94KB
下载 相关 举报
单片机原理及接口技术余锡存著 课后习题答案.docx_第1页
第1页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第2页
第2页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第3页
第3页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第4页
第4页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第5页
第5页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第6页
第6页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第7页
第7页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第8页
第8页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第9页
第9页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第10页
第10页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第11页
第11页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第12页
第12页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第13页
第13页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第14页
第14页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第15页
第15页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第16页
第16页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第17页
第17页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第18页
第18页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第19页
第19页 / 共39页
单片机原理及接口技术余锡存著 课后习题答案.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机原理及接口技术余锡存著 课后习题答案.docx

《单片机原理及接口技术余锡存著 课后习题答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及接口技术余锡存著 课后习题答案.docx(39页珍藏版)》请在冰点文库上搜索。

单片机原理及接口技术余锡存著 课后习题答案.docx

单片机原理及接口技术余锡存著课后习题答案

第二章

1.89C51、87C51、80C51和80C31单片机的主要区别在那里?

答:

相同之处是:

制造工艺都为CHMOS,都有128字节片内RAM、两个定时/计数器、4个8位I/O并行口,一个串行口和5个中断源。

主要区别:

①89C51片内4K字节FLASHROM;

②87C51片内4K字节EPROM;

③80C51片内4K字节掩膜ROM;

④80C31片内无程序存储器。

单片机引脚有多少I/O线?

它们和单片机对外的地址总线和数据总线有何关系?

答:

4个8位I/O并行口,一个串行口;

其中P0口为外接程存和数存的地址低8位和数据总线的时分复用接口;

其中P2口为外接程存和数存的地址高8位总线接口;

其中P1口为真正的用户口线;

其中P3口有第2功能;

以上4个口线在没有专用功能时,也可以做通用I/O口线用。

3.简述8031片内RAM区地址空间的分配特点。

答:

MCS-51单片机片内RAM为256字节,地址范围为00H~FFH,分为两大部分:

低128字节(00H~7FH)为真正的RAM区;高128字节(80H~FFH)为特殊功能寄存器区SFR。

在低128字节RAM中,00H~1FH共32单元是4个通用工作寄存器区。

每一个区有8个通用寄存器R0~R7。

4.MCS-51单片机由哪几个部分组成。

答:

①一个8位CPU;

②4KBROMorEPROM(8031无ROM);

③128字节RAM数据存储器;

④21个特殊功能寄存器SFR;

⑤4个8位并行I/O口,其中P0、P2为地址/数据线,可寻址64KB程序存储器和64KB数据存储器;

⑥一个可编程全双工串行口;

⑦具有5个中断源,两个优先级,嵌套中断结构;

⑧两个16位定时器/计数器;

⑨一个片内振荡器及时钟电路。

7.

8.

 

4.

5.

6.

 

5.MCS-51单片机的

信号各自的功能是什么?

答:

都是控制总线

访问内部程序存储器的控制信号/编程电压输入端。

时,CPU从片内读取指令,

CPU从片外读取指令。

地址锁存允许/编程信号线。

外部程序存储器读选通信号。

复位输入信号/掉电保护后备电源引脚。

单片机如何实现工作寄存器组的选择?

RS1、RS0为工作寄存器组的选择位;

①取值为00时选择第0组工作寄存器,片内RAM地址是00H~07H,名称为R0~R7;

②取值为01时选择第1组工作寄存器,片内RAM地址是08H~0FH,名称为R0~R7;

③取值为10时选择第2组工作寄存器,片内RAM地址是10H~17H,名称为R0~R7;

④取值为11时选择第3组工作寄存器,片内RAM地址是18H~1FH,名称为R0~R7。

7.什么是时钟周期、机器周期、指令周期?

当单片机的时钟频率为12MHz时,一个机器周期是多少?

ALE引脚的输出频率是多少?

(1)振荡周期:

也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期。

(2)状态周期:

每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。

(3)机器周期:

一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。

在一个机器周期内,CPU可以完成一个独立的操作。

(4)指令周期:

它是指CPU完成一条操作所需的全部时间。

每条指令执行时间都是有一个或几个机器周期组成。

MCS-51系统中,有单周期指令、双周期指令和四周期指令。

当单片机的时钟频率为12MHz时,一个机器周期是多少1μs(微秒);ALE引脚的输出频率是多少2μs(微秒)。

 

第三章

1.MCS-51指令系统按功能分为几类?

具有几种寻址方式?

他们的寻址范围如何?

答:

①按功能分为5类,分别是:

数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类;

②具有7种寻址方式;

③立即寻址,寻址范围是程序存储器;

直接寻址,寻址范围是内部RAM低128字节和高128字节;

寄存器寻址,寻址范围是四组工作寄存器R0~R7;

寄存器间接寻址,寻址范围是内部RAM的低128和外部RAM低64K可寻址空间;

基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器;

相对寻址,寻址范围是以下一条指令为相对地址的-128~+127字节范围内;

位寻址,寻址范围是可位寻址空间,包括内部RAM的可寻址位,特殊功能寄存器中的可寻址位。

2.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0,和内部RAM中50H、51H单元的内容为和值?

答:

MOVA,59H;(A)=(59H)=50H

MOVR0,A;(R0)=50H

MOVA,#00;(A)=00

MOV@R0,A;((R0))=(50H)=00

MOVA,#25H;(A)=25H

MOV51H,A;(51H)=25H

MOV52H,#70H;(52H)=70H

执行下列程序段后:

(A)=25H,(R0)=50H,(50H)=00、(51H)=25H

中Cy与OV有何不同?

下列程序段执行后(Cy)=?

(OV)=?

MOVA,#56H

ADDA,#74H

答:

Cy—进位、借位标志位;

OV—溢出标志位。

MOVA,#56H;(A)=56H=01010110B

ADDA,#74H;(A)=56H+74H=0CAH=11001010B,

程序执行后:

(Cy)=0(OV)=1

A,@A+DPTR与MOVXA,@DPTR指令有何不同?

答:

①MOVCA,@A+DPTR;寻找的操作数在程序存储器中,地址是:

(A)+(DPTR);

②MOVXA,@DPTR;寻找的操作数在外部数据存储器中,地址是:

(DPTR)。

5.AJMP、LJMP、SJMP指令功能上有何不同?

答:

相同之处,都是无条件转移指令。

①AJMPaddr11;下调指令为基准的2KB范围内的跳转指令。

②LJMPaddr16;转移的目标地址可以在64KB程序存储器的任何地方。

③SJMPrel;下调指令为基准的-128B~+127B范围内的短跳转指令。

6.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?

PUSH30H

PUSH31H

POPDPL

POPDPH

MOV30H,#00H

MOV31H,#0FFH

答:

PUSH30H;(61H)=(30H)=24H

PUSH31H;(62H)=(31H)=10H

POPDPL;(DPL)=(62H)=10H

POPDPH;(DPH)=(61H)=24H

MOV30H,#00H;(30H)=00H

MOV31H,#0FFH;(31H)=0FFH

程序执行后:

(61H)=24H,(62H)=10H,(30H)=00H,(31H)=0FFH,(DPTR)=2410H

7.试分析下列程序段,当程序执行后,位地址00H和01H中的内容将为何值?

P1口的8条I/O线为何状态?

CLRC

MOVA,#66H

JCLOOP1

CPLC

SETB01H

LOOP1:

ORLC,

JB,LOOP2

LOOP2:

MOVP1,A

答:

CLRC;(Cy)=0

MOVA,#66H;(A)=66H=01100110B

JCLOOP1;因此时(Cy)=0,所以不跳转

CPLC;(Cy)=1

SETB01H;(01H)=1

LOOP1:

ORLC,;(Cy)=(Cy)∨=1

JB,LOOP2;因=1

LOOP2:

MOVP1,A;(P1)=01100110B

8.要完成以下的数据传送,应如何用MCS-51指令实现?

⑴R1的内容传送到R0;

⑵片外RAM20H单元的内容送R0;

⑶片外RAM20H单元的内容送片内RAM20H单元;

⑷片外RAM1000H单元的内容送片内RAM20H单元;

⑸ROM2000H单元的内容送R0;

⑹ROM2000H单元的内容送片内RAM20H单元;

⑺ROM2000H单元的内容送片外RAM20H单元。

答:

⑴R1的内容传送到R0;

MOVA,R1

MOVR0,A

⑵片外RAM20H单元的内容送R0;

MOVR1,#20H

MOVXA,@R1

MOVR0,A

⑶片外RAM20H单元的内容送片内RAM20H单元;

MOVR1,#20H

MOVXA,@R1

MOV20H,A

⑷片外RAM1000H单元的内容送片内RAM20H单元;

MOVDPTR,#20H

MOVXA,@DPTR

MOV20H,A

⑸ROM2000H单元的内容送R0;

MOVDPTR,#2000H

CLRA

MOVCA,@A+DPTR

MOVR0,A

⑹ROM2000H单元的内容送片内RAM20H单元;

MOVDPTR,#2000H

CLRA

MOVCA,@A+DPTR

MOV20H,A

⑺ROM2000H单元的内容送片外RAM20H单元。

MOVDPTR,#2000H

CLRA

MOVCA,@A+DPTR

MOVR0,#20H

MOVX@R0,A

9.分析以下程序每条指令执行的结果:

MOVA,#25H;(A)=25H

MOVR1,#33H;(R1)=33H

MOV40H,#1AH;(40H)=1AH

MOVR0,40H;(R0)=1AH

ADDA,R1;(A)=25H+33H=58H

ADDCA,@R0;(A)=58H+(1AH)+(Cy)=58H

ADDCA,40H;(A)=58H+1AH+(Cy)=72H

10.设A=83H,R0=17H,(17H)=34H,执行下列程序后,(A)=?

ANLA,#17H;(A)=10000011B∧00010111B=00000011B

ORL17H,A;(17H)=00110100B∨00000011B=00110111B

XRLA,@R0;(A)=00000011B⊕00110111=00110100B

CPLA;(A)=11001011B

11.两个4位BCD码数相加,被加数和加数分别存于30H、31H和40H、41H单元中(次序为千位、百位在低地址中,十位、个位在高地址中),和数放在50H、51H、52H中(52H用于存放最高位的进位),试编写加法程序。

解:

ORG00H

MOV30H,#12H;

MOV31H,#34H;

MOV40H,#56H;

MOV41H,#78H;

MOVA,31H;取被加数十个位

ADDA,41H;相加,(A)=(31H)+(41H)

DAA;十进制调整

MOV51H,A;存十位个位运算结果

MOVA,30H;取被加数千百位

ADDCA,40H;相加,(A)=(30H)+(40H)

DAA;十进制调整

MOV50H,A;存千位百位运算结果

CLRA;清A

ADDCA,#0;将进位加到A中

MOV52H,A;存进位

SJMP$

12.试编写一程序,查找内部RAM单元的20H~50H中是否有0AAH这一数据,若有,则将51H单元置为01H,若没有,则使51H单元置0。

解:

ORG00H

MOV30H,#0AAH;

MOVR1,#31H;

MOVR0,#20H;

BIJIAO:

MOVA,@R0

CJNEA,#0AAH,LOOP;

MOV51H,#01H

SJMPJIESHU

LOOP:

INCR0

DJNZR1,BIJIAO

MOV51H,#00H

JIESHU:

SJMP$

第四章

1、若有两个符号数X,Y分别存放在内部存储器50H、51H单元中,试编写一个程序实现X*10+Y,结果存入52H、53H中。

1ORG00H

000078502MOVR0,#50H

0002E63MOVA,@R0

000375F00A4MOVB,#0AH

0006A45MULAB

0007086INCR0

0008267ADDA,@R0

0009088INCR0

000AA6F09MOV@R0,B

000C0810INCR0

000DF611MOV@R0,A

12END

2、在以3000H为首地址的外部RAM中,存放了14个以ASCII码表示的0~9的数,试编写程序将它们转换成BCD码,并以压缩BCD形式存放在以2000H为首地址的外部RAM中。

1ORG00H

00009030002MOVDPTR,#3000H;原始数据首地址

000378073MOVR0,#07;循环次数

000579304MOVR1,#30H;转换结果暂存区指针

0007E05CH1:

MOVXA,@DPTR

0008550F6ANLA,#00001111B

000AC47SWAPA

000BF5F08MOVB,A

000DA39INCDPTR

000EE010MOVXA,@DPTR

000F550F11ANLA,#00001111B

001145F012ORLA,B

0013F713MOV@R1,A

00140914INCR1

0015A315INCDPTR

0016D8EF16DJNZR0,CH1

001890200017MOVDPTR,#2000H;转换结果存储区

001B7A0718MOVR2,#07H;结果个数

001D793019MOVR1,#30H

001FE720CH2:

MOVA,@R1;

3、采样的5个值分别存放在R0、R1、R2、R3、R4中,求出它们的中间值,并存放在R2中。

1ORG00H

>000078052MOVR0,#5

000279063MOVR1,#6

00047A074MOVR2,#7

00067B085MOVR3,#8

00087C096MOVR4,#9

000AE47CLRA;

000BC38CLRC;

000CE89MOVA,R0;

000D2910ADDA,R1;

000E2A11ADDA,R2;

000F2B12ADDA,R3

00102C13ADDA,R4

001175F00514MOVB,#5

00148415DIVAB

0015FA16MOVR2,A

001617END

18END

4、以BUF1为起始地址的外部数据存储区中存放着16个单字节的无符号数,求其平均值并送入R2中。

1ORG00H

2BUF1EQU#1000H

00009010003MOVDPTRBUF1

0003AA004MOVR2,0

000578165MOVR0,#16H

0007E06SUM:

MOVXA,@DPTR

00082A7ADDA,R2

0009FA8MOVR2,A

000AA39INCDPTR

000BD8FA10DJNZR0,SUM

000D75F01011MOVB,#10H

00108412DIVAB

0011FA13MOVR2,A

14END

5、试编写程序,将内部RAM单元中DATA1开始的20个单字节数依次与DATA2单元为起始地址的20个单字节数据进行交换。

>1DATA1EQU#30H

2DATA2EQU#50H

3LENEQU#16

4ORG0H

000078305MOVR0,DATA1

000279506MOVR1,DATA2

00047A107MOVR2,LEN

0006E68EXC:

MOVA,@R0

0007C79XCHA,@R1

0008F610MOV@R0,A

00090811INCR0

000A0912INCR1

000BDAF913DJNZR2,EXC

14END

6、某场歌手赛,共有10个评委,试编写一程序,输入10个评分,去掉最高分和最低分,求平均分(均为BCD码)。

ORG0H

NEQU#5

BLOCKEQU#30H

ISELSORT:

MOVR7,N

DECR7

MOVR1,BLOCK

ISST1:

MOVR0,BLOCK

MOVA,R7

MOVR6,A

MOVA,@R0

MOVB,A

ISST2:

INCR1

MOVA,@R1

CLRC

SUBBA,B

JCISST3

MOVA,@R1

MOVR2,A

MOVB,@R1

ISST3:

DJNZR6,ISST2

MOVA,B

XCHA,@R1

MOVB,R2

MOV@R1,B

MOV@R1,A

DJNZR7,ISST1

MOVR0,BLOCK

MOV@R0,#0;去掉最低分

MOVA,BLOCK

ADDA,#9

MOVR0,A

MOV@R0,#0;去掉最高分

AD:

MOVR0,BLOCK

INCRO

MOVR1,#8

CLRA

CLRC

MOVB,#0

ADL:

ADDA,@R0

DAA

MOVR2,A

ADDCA,#0

MOVB,A

MOVA,R2

DJNZR1,ADL

MOVR5,0

MOVR4,B

MOVR3,A

MOVR2,#0

MOVR1,#8

R5R4R3/R2R1=R4R3

MOVR1,#00H

MOVR2,#0FH

MOVR3,#04H

MOVR4,#05H

MOVR5,#06H

LCALL_DIV

AJMP$

_DIV:

;{

CLRC

MOV30H,#0

MOV31H,#0

MOV32H,#0

_DIV_LOOP:

CLRC

MOVA,R3

SUBBA,R1

MOVR3,A

MOVA,R4

SUBBA,R2

MOVR4,A

MOVA,R5

SUBBA,#0

MOVR5,A

JC_DIV_END

_INC_SHANG:

CLRC

MOVA,30H

ADDCA,#1

MOV30H,A

MOVA,31H

ADDCA,#0

MOV31H,A

MOVA,32H

ADDCA,#0

MOV32H,A

LJMP_DIV_LOOP

_DIV_END:

CLRC

MOVA,R1

ADDCA,R3

MOVA,R2

ADDCA,R4

MOVR3,30H

MOVR4,31H

END

7、编写将一个十六进制数转换为十进制数的子程序。

>000078FE2MOVR0,#FEH

000279303MOVR1,#30H

0004E84HEXBCD:

MOVA,R0

000575F0645MOVB,#100

0008846DIVAB

0009F77MOV@R1,A

000A740A8MOVA,#10

000CC5F09XCHA,B

000E8410DIVAB

000F0911INCR1

0010F712MOV@R1,A

00110913INCR1

0012A7F014MOV@R1,B

15RET

8、在内部RAM的BLOCK开始的单元中有一无符号数据块,数据长度为LEN。

试编程求其中最大的数并存入MAX中。

MCS51

1ORG0H

2LENEQU#10;数据块长度

3MAXEQU#40H

000078304MOVR0,#30H;BLOCK首地址

0002790A5MOVR1,LEN

0004196DECR1;循环次数

0005C37CLRC

0006E68LOOP:

MOVA,@R0

0007089INCR0

00089610SUBBA,@R0

0009400211JCEXCHANG

000B800212SJMPNEXT

000D86F013EXCHANG:

MOVB,@R0

000FC314NEXT:

CLRC

0010D9F415DJNZR1,LOOP

001285F04016MOV40H,B;MAX单元17END

9、试编程将内部RAM中41H~43H单元中的数左移4位,移出部分送50H。

题意不清。

10、在外部RAM中BLOCK开始的单元中有一数据块,数据长度为LEN,试编程统计其中的正数、负数和零的个数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2