单片机C51程序设计课后习题答案复习专用.docx

上传人:b****3 文档编号:27249223 上传时间:2023-06-28 格式:DOCX 页数:125 大小:90.64KB
下载 相关 举报
单片机C51程序设计课后习题答案复习专用.docx_第1页
第1页 / 共125页
单片机C51程序设计课后习题答案复习专用.docx_第2页
第2页 / 共125页
单片机C51程序设计课后习题答案复习专用.docx_第3页
第3页 / 共125页
单片机C51程序设计课后习题答案复习专用.docx_第4页
第4页 / 共125页
单片机C51程序设计课后习题答案复习专用.docx_第5页
第5页 / 共125页
点击查看更多>>
下载资源
资源描述

单片机C51程序设计课后习题答案复习专用.docx

《单片机C51程序设计课后习题答案复习专用.docx》由会员分享,可在线阅读,更多相关《单片机C51程序设计课后习题答案复习专用.docx(125页珍藏版)》请在冰豆网上搜索。

单片机C51程序设计课后习题答案复习专用.docx

单片机C51程序设计课后习题答案复习专用

第一章

1.给出下列有符号数的原码、反码和补码(假设计算机字长为8

位)。

+45-89-6+112

答:

【+45】原=00101101,【+45】反=00101101,【+45】补=00101101

【-89】原=11011001,【-89】反=10100110,【-89】补=10100111

【-6】原=10000110,【-6】反=11111001,【-6】补=11111010

【+112】原=01110000,【+45】反=01110000,【+45】补=01110000

2.指明下列字符在计算机内部的表示形式。

AsENdfJFmdsv120

答:

41H73H45H4EH64H66H4AH46H6DH64H73H76H31H32H30H

3.什么是单片机?

答:

单片机是把微型计算机中的微处理器、存储器、I/O接口、定时

器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成

的微型计算机。

因而被称为单片微型计算机,简称为单片机。

4.单片机的主要特点是什么?

答:

主要特点如下:

1)在存储器结构上,单片机的存储器采用哈佛(Harvard)结构

2)在芯片引脚上,大部分采用分时复用技术

3)在内部资源访问上,采用特殊功能寄存器(SFR)的形式

4)在指令系统上,采用面向控制的指令系统

5)内部一般都集成一个全双工的串行接口

6)单片机有很强的外部扩展能力

5.指明单片机的主要应用领域。

答:

单机应用:

1)工业自动化控制;2)智能仪器仪表;3)计算机外部设备

和智能接口;4)家用电器

多机应用:

功能弥散系统、并行多机处理系统和局部网络系统。

第二章

1.MCS-51单片机由哪几个部分组成?

答:

MCS-51单片机主要由以下部分组成的:

时钟电路、中央处理器(CPU)、

存储器系统(RAM和ROM、)定时/计数器、并行接口、串行接口、中断系统及一

些特殊功能寄存器(SFR)。

2.MCS-51的标志寄存器有多少位,各位的含义是什么?

答:

MCS-51的标志寄存器PSW有8位;

D7

6

D

5

DDDD

4321

D

0

D

C

C

A

0

FRRO

S1S0V

-P

含义如下:

C(PSW.7):

进位或借位标志位。

AC(PSW.6):

辅助进位或借位可标志位。

F0(PSW.5):

用户标志位。

是系统预留给用户自己定义的标志位。

RS1、RS0(PSW.4、PSW.3):

寄存器组选择位。

可用软件置位或清零,用于

从四组工作寄存器中选定当前的工作寄存器组。

OV(PSW.2:

)溢出标志位。

在加法或减法运算时,如运算的结果超出8位二

进制数的范围,则OV置1,标志溢出,否则OV清零。

P(PSW.0):

奇偶标志位。

用于记录指令执行后累加器A中1的个数的奇偶

性。

若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶

数,则P清零。

其中PSW.1未定义,可供用户使用。

6.在8051的存储器结构中,内部数据存储器可分为几个区域?

各有什么

特点?

答:

片内数据存储器按功能可以分成以下几个部分:

工作寄存器组区、位

寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。

工作寄存器组

区,00H~1FH单元,可用R0~R7等8个寄存器访问;位寻址区,20H~2FH单

元,可按位方式访问;一般RAM区,30H~7FH单元;堆栈区,可从08到7F单

元;特殊功能寄存器区位于80H~FFH单元。

7.什么是堆栈?

说明MCS-51单片机的堆栈处理过程。

答:

堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。

CS-51

单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据

是从地址高端向低端延伸。

入栈和出栈数据是以字节为单位的。

入栈时,SP指

针的内容先自动加1,然后再把数据存入到SP指针指向的单元;出栈时,先把

SP指针指向单元的数据取出,然后再把SP指针的内容自动减1。

8.MCS-51单片机有多少根I/O线?

它们和单片机的外部总线有什么关系?

答:

MCS-51单片机有32根I/O线,由P0口经地址锁存器提供低8位

(A7~A0),P2口提供高8位(A15~A8)而形成。

数据总线宽度为8位,由P0

口直接提供。

控制总线由第二功能状态下的P3口和4根独立的控制线RST、

EA、ALE和PSEN组成。

9.

什么是机器周期?

MCS-51单片机的一个机器周期包括多少个时钟周

期?

答:

机器周期:

机器周期是单片机的基本操作周期,每个机器周期包含

S1、S2、、S66个状态,每个状态包含两拍P1和P2,每一拍为一个时钟周

期(振荡周期)。

因此,一个机器周期包含12个时钟周期。

10.如果时钟周期的频率为12MHz,那么ALE信号的频率为多少?

答:

2MHZ

第三章

1.在MCS-51单片机中,寻址方式有几种?

其中对片内RAM可以用哪几种

寻址方式?

对片外RAM可以用哪几种寻址方式?

答:

寻址方式可分为数的寻址和指令寻址,数的寻址有:

常数寻址(立即

寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存

器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻

址。

片内RAM寻址有:

寄存器寻址、直接寻址方式和寄存器间接寻址方式。

外RAM寻址有:

寄存器间接寻址方式。

2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区

别?

答:

片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单

元,而用DPTR作指针间接访问可访问整个64K字节。

3.在位处理中,位地址的表示方式有哪几种?

答:

1.直接位地址(00H~0FFH)。

例如:

20H

2.字节地址带位号。

例如:

20H.3表示20H单元的3位。

3.特殊功能寄存器名带位号。

例如:

P0.1表示P0口的1位。

4.位符号地址。

例如:

TR0是定时/计数器T0的启动位

4.写出完成下列操作的指令。

(1)R0的内容送到R1中。

MOVA,R0

MOVR1,A

(2)片内RAM的20H单元内容送到片内RAM的40H单元中。

MOV40H,20H

(3)片内RAM的30H单元内容送到片外RAM的50H单元中。

MOVA,30H

MOVR0,#50H

MOVX@R,0A

(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。

MOVA,50H

MOVDPTR,#3000H

MOVX@DPT,RA

(5)片外RAM的2000H单元内容送到片外RAM的20H单元中。

MOVDPTR,#2000H

MOVXA,@DPTR

MOV20H,A

(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。

MOVDPTR,#1000H

MOVXA,@DPTR

MOVDPTR,#4000H

MOV@DPT,RA

(7)ROM的1000H单元内容送到片内RAM的50H单元中。

MOVA,#0

MOVDPTR,#1000H

MOVCA,@A+DPTR

MOV20H,A

(8)ROM的1000H单元内容送到片外RAM的1000H单元中。

MOVA,#0

MOVDPTR,#1000H

MOVCA,@A+DPTR

MOVX@DPT,RA

5.区分下列指令有什么不同?

(1)MOVA,20H和MOVA,#20H

答:

前者源操作数是直接寻址,后者源操作数立即寻址。

(2)MOVA,@R1和MOVXA,@R1

答:

前者源操作数是访问片内数据存储器,后者源操作数访问片外数据

存储器低256字节。

(3)MOVA,R1和MOVA,@R1

答:

前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。

(4)MOVXA,@R1和MOVXA,@DPTR

答:

前者源操作数是访问片外数据存储器低256字节,后者源操作数访

问片外数据存储器整个64K字节。

(5)MOVXA,@DPT和RMOVCA,@A+DPTR

答:

前者源操作数是访问片外数据存储器,后者源操作数访问程序数据

存储器。

6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)

=0CAH。

分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的

内容。

MOVR0,#20H

MOVA,@R0;A=40H

MOVR1,A;R1=40H

MOVA,@R1;A=10H

MOV@R,0P1;(40H)=0CAH

MOVP2,P1P2=0CAH

MOV10H,A(10H)=10H

MOV20H,10H(20H)=10H

结果:

(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH

7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)

=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令

执行后目标单元的内容。

(1)MOVA,@R1结果:

累加器A等于70H

(2)MOVX@DP,TRA结果:

片外RAM(2FFCH)单元等于02H

(3)MOVCA,@A+DPTR结果:

累加器A等于64H

(4)XCHDA,@R1结果:

累加器A等于00H,片内RAM(7FH)

单元等于72H

8.已知:

(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)

=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志

位的值。

(1)ADDA,@R1;累加器A等于55H,CY等于1

(2)SUBBA,#77H;累加器A等于00H,CY等于0

(3)MULAB;累加器A等于E0H,B寄存器等于01H,CY

等于1,OV等于0

(4)DIVAB;累加器A等于1EH,B寄存器等于00H,

CY、OV等于0

(5)ANL78H,#78H;片内RAM(78H)单元等于58H

(6)ORLA,#0FH;累加器A等于7FH

(7)XRL80H,A;片内RAM(80H)等于14H

9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后

累加器A、R0、17H单元的内容。

ANLA,#17H;A=03H

ORL17H,A;(17H)=37H

XRLA,@R0;A=34H

CPLA;A=CBH

结果:

A=CBH,(R0)=17H,(17H)=37H

10.写出完成下列要求的指令。

(1)累加器A的低2位清零,其余位不变。

ANLA,#11111100B

(2)累加器A的高2位置“1”,其余位不变。

ORLA,#11000000B

(3)累加器的高4位取反,其余位不变。

XRLA,#11110000B

(4)累加器第0位、2位、4位、6位取反,其余位不变。

XRLA,#01010101B

11.说明LJMP指令与AJMP指令的区别?

答:

LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序

存储器的任意位置,缺点是:

执行时间长,字节数多。

AJMP指令后带的是11位直接地址,执行时,先将程序指针PC的

值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序

指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。

12.设当前指令CJNEA,#12H,10H的地址是0FFEH,若累加器A的值为

10H,则该指令执行后的PC值为多少?

若累加器A的值为12H呢?

答:

指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行

后的PC值为1001H。

13.用位处理指令实现P1.4=P1.0(P1.1P1.2)/P1.3的逻辑功能。

程序:

MOVC,P1.1

ORLC,P1.2

ANLC,P1.0

ORLC,/P1.3

MOVP1.4,C

14.下列程序段汇编后,从1000H单元开始的单元内容是什么?

ORG1000H

TAB:

DB12H,34H

DS3

DW5567H,87H

答:

(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,

(1008H)=00H

15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片

外RAM的20H、21H、22H中。

程序:

MOVR0,#20H

MOVR2,#03H

LOOP:

MOVA,@R0

MOVX@R,0A

INCR0

DJNZR2,LOOP

SJMP$

16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM

的20H单元开始位置,并将源位置清零。

程序:

MOVR0,#20H

MOVDPTR,#2000H

MOVR2,#30H

LOOP:

MOVXA,@DPTR

MOV@R,0A

MOVA,#00

MOVX@DPT,RA

INCDPTR

INCR0

DJNZR2,LOOP

SJMP$

17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于

R7R6中。

程序:

MOVDPTR,#1000H

MOVR2,#100

MOVR7,#00

MOVR6,#00

LOOP:

MOVXA,@DPTR

ADDA,R6

MOVR6,A

MOVA,R7

ADDCA,#0

MOVR7,A

INCDPTR

DJNZR2,LOOP

SJMP$

18.编程实现R4R3R2,结果放于R7R6R5中。

程序:

ORG0100H

MUL1:

MOVA,R2

MOVB,R3

MULAB;R2R3,结果的低字节直接存入积的R5

MOVR5,A;结果的高字节存入R6中暂存起来

MOVR6,B

MUL2:

MOVA,R2

MOVB,R4

MULAB;R2R4,结果的低字节与R6相加后,再存入

R6中

ADDA,R6

MOVR6,A

MOVA,B;结果的高字节加上进位位后存入R7中

ADDCA,#00

MOVR7,A

SJMP$

19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3

位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起

放于R2中。

程序:

MOVC,20H.0

MOVA.0,C

MOVC,20H.1

MOVA.1,C

MOVC,21H.2

MOVA.2,C

MOVC,21H.3

MOVA.3,C

MOVC,22H.4

MOVA.4,C

MOVC,22H.5

MOVA.5,C

MOVC,23H.6

MOVA.6,C

MOVC,23H.7

MOVA.7,C

MOVR2,A

20.用查表的方法实现一位十六进制数转换成ASCII。

程序:

(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)

C16STAS:

CMOVDPTR,#TAB

MOVA,R2

MOVCA,@A+DPTR

MOVR2,A

RET

TAB:

DB30H,31H,32H,33H,34H,35H,36H,37H

DB38H,391H,41H,42H,43H,44H,45H,46H

21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2

中。

程序:

MOVDPTR,#2000H

MOVR3,#100

MOVR2,#00

LOOP:

MOVXA,@DPTR

JNZNEXT

INCR2

NEXT:

INCDPTR

DJNZR3,LOOP

SJMP$

第四章

11.C语言有哪些特点?

答:

C语言具有以下特点:

1)语言简洁、紧凑,使用方便、灵活

2)运算符丰富

3)数据结构丰富,具有现代化语言的各种数据结构

4)可进行结构化程序设计

5)可以直接对计算机硬件进行操作

6)生成的目标代码质量高,程序执行效率高

7)可移植性好

12.有哪些数据类型是MCS-51单片机直接支持的?

答:

MCS-51单片机直接支持的数据类型标准分为基本数据类型和组合数据

类型,基本数据类型有字符型char、短整型short、整型int、长整型long、

浮点型float、双精度型double、特殊功能寄存器型和位类型,其中char型

与short型相同,float型与double型相同。

组合数据类型有数组类型、结构

体类型、共同体类型和枚举类型,另外还有指针类型和空类型。

13.C51特有的数据类型有哪些?

答:

C51特有的数据类型有特殊功能寄存器型和位类型。

14.C51中的存储器类型有几种,它们分别表示的存储器区域是什么?

答:

C51中的存储器类型有6种,分别如下:

data:

直接寻址的片内RAM低128B,访问速度快

bdata:

片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问

idata:

间接寻址访问的片内RAM,允许访问全部片内RAM

pdata:

用Ri间接访问的片外RAM低256B

xdata:

用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM

code:

程序存储器ROM64KB空间

15.在C51中,bit位与sbit位有什么区别?

答:

bit位类型符用于定义一般的位变量。

存储器类型只能是bdata、

data、idata,只能是片内RAM的可位寻址区,严格来说只能是bdata。

sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时

需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是

特殊功能寄存器名带位号。

16.在C51中,通过绝对地址来访问的存储器有几种?

答:

通过绝对地址来访问存储器有三种方法:

1.使用C51运行库中预定义

宏。

2.通过指针访问。

3.使用C51扩展关键字_at_

17.在C51中,中断函数与一般函数有什么不同?

答:

中断函数在定义时后面带interruptm修饰符,m的取值为0~31,对

应的中断情况如下:

0——外部中断0,1——定时/计数器T0,2——外部中断1,3——定时/计数器T1,4——串行口中断,5——定时/计数器T2,其他值

预留。

编写MCS-51中断函数需要注意如下几点。

(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声

明都将导致编译出错。

(2)中断函数没有返回值。

(3)在任何情况下都不能直接调用中断函数

(4)如果在中断函数中调用了其他函数,则被调用函数所使用的寄存

器必须与中断函数相同,否则会产生不正确的结果。

(5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相

应的内容。

(6)C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断

号,也即interrupt后面的数字。

该向量包含一个到中断函数入口地址的绝对

跳转。

(7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型

说明。

防止其他程序调用。

8.按给定的存储类型和数据类型,写出下列变量的说明形式。

(1)在data区定义字符变量val1。

chardataval1;

(2)在idata区定义整型变量val2。

intidataval2;

(3)在xdata区定义无符号字符型数组val3[4]。

unsignedcharxdataval3[4];

(4)在xdata区定义一个指向char类型的指针px。

charxdata*px;

(5)定义可寻址位变量flag。

bitflag;

(6)定义特殊功能寄存器变量P3。

sfrP3=0xa0;

(7)定义特殊功能寄存器变量SCON。

sfrSCON=0x98;

(8)定义16位的特殊功能寄存器T0。

sfr16T0=0x8a;

9.写出下列关系表达式或逻辑表达式的结果,设a=3,b=4,c=5。

(1)a+b>c&&b==c结果:

(2)a||b+c&&b-c结果:

(3)!

(a>b)&&!

c||1结果:

(4)!

(a+b)+c-1&&b+c/2结果:

10.写出下列C51程序的执行结果。

(1)

#include

externserial_initial();

main()

{

intx,y,z;serial_initial();

x=y=8;z=++x;

printf("\n%d%d%d",y,z,x);

x=y=8;z=x++;

printf("\n%d%d%d",y,z,x);

x=y=8;z=--x;

printf("\n%d%d%d",y,z,x);

x=y=8;z=x--;

printf("\n%d%d%d",y,z,x);

printf("\n");while

(1);

}

结果:

899

889

877

887

(2)

#include

externserial_initial();main()

{

intx,y,z;serial_initial();

printf("inputdatax,y?

\n");

scanf("%d%d",&x,&y);

printf("\nxyxyx>=yx!

=yx==y");

printf("\n");printf("\n%3d%3d",x,y);

z=x

z=x<=y;printf("%5d",z);

z=x>y;printf("%5

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

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1