《单片机原理与应用》习题答案主编:苏珊 高如新 谭兴国 电子科技出版社

更新时间:2023-10-10 08:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机原理与应用》电子科技出版社 主编:苏珊 高如新 谭兴国

第一章习题答案

1. 什么叫单片机?它有哪些主要特点? 单片机是将中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、中断系统、定时/计数器、I/O口等主要计算机部件集成在一片集成电路芯片上的单片微型计算机(Single Chip Microcomputer)的简称。具有体积小、功耗低、价格便宜、控制功能强等特点。 2. 请简述单片机的技术发展历史,单片机的主要技术发展方向是什么? 单片机技术发展经历了单芯片微机形成阶段、性能完善提高阶段和微控制器化阶段三个主要阶段。目前单片机主要技术发展方向是:大容量高性能化、小容量低价格化、外围电路内装化、多品种化以及 I/O 接口功能的增强、功耗降低等。 3.单片机主要用在哪些方面?

由于单片机体积小、功耗低、价格便宜,广泛应用于仪器仪表、家用电器、医用设备、航空航天专用设备的智能化管理及过程控制等领域;又由于单片机具有较强的实时数据处理能力和控制功能,可以使系统保持在最佳工作状态,提高系统的工作效率和产品质量,所以在工业控测控、航空航天、尖端武器等各种实时控制系统中,都作为控制器件使用。

第二章习题参考答案

1.单片机系统复位后,PC值为( 0000H )。

2.MCS-51单片机中,一个机器周期=( 6 ) 状态周期=( 12 )振荡周期。当主频为12MHz时,一个机器周期为( 1μs )

3.PSW中RS1 RS0=01时,寄存器R2的地址为 ( 10H) PSW中RS1 RS0=10时,寄存器R2的地址为 ( 12H)

4.MCS-51单片机的EA=0,程序存储器访问的是(片外 ROM ) 5.MCS-51单片机上有( 4 )个独立的存储空间。

6.MCS-51系列单片机在片内集成了哪些主要逻辑功能部件?

答:有微处理器CPU、程序存储器、数据存储器、定时/计数器、中断源、并行I/O端口等功能部件组成。

7.程序计数器(PC)作为不可寻址寄存器,它有哪些特点?数据地址指针DPTR有哪些特点?

答:PC是一个16位的特殊功能寄存器,又称程序指针,它具有自动加1的功能,始终指向下一条指令的首地址,以保证程序按顺序执行;DPTR是一个16位的专用地址指针寄存器。作间址寄存器使用,用来存储外接64KB的数据存储器和I/O端口,DPTR也可以拆成两个独立8位的寄存器,即DPH(高8位字节)和DPL(低8位字节),分别占据83H和82H两个地址。

8.MCS-51单片机片内256B的数据存储器可分为几个区?分别作什么用?

答:00H~1FH共32个单元通常作为工作寄存器区,20H~2FH可用位寻址区,可直接进行位操作,30H~7FH共80个单元为用户RAM区,作堆栈或数据缓冲器用,80H~FFH为特殊功能寄存器区。

9.开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?

答:开机复位后,由于PSW复位值是00H,CPU使用的是0区的工作寄存器R0~R7,它们的地址是00~07H,可以通过改变PSW的RS1 RS0 两个位的值确定和改变当前工作寄存器组。

10.堆栈有哪些功能?堆栈指针(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值

答:堆栈是一个特殊的存储区,用来暂存数据和地址。堆栈指针SP是用来管理堆栈的它指示出堆栈顶部在片内RAM中的位置。系统复位后,SP初始化为07H,使得堆栈实际上从08H单元开始。由于08H~1FH 单元分属于工作寄存器1~3区,20H~2FH为位寻址区,若程序中要用到这些区,应把SP值改为30H或更大的值。 11.MCS-51的SFR占用了什么空间?其寻址方式如何?

答:MCS-51的SFR占用了片内数据存储器的空间,地址范围为80H~FFH。其寻址方式为直接寻址。

12.程序状态寄存器PSW的作用是什么?常用状态位有哪些?它们的作用各是什么? 答:PSW是一个8位的特殊功能寄存器。用于存放程序运行中的各种状态信息。常用状态位及其作用:

(1) 进位标志位Cy。在进行加或减运算时,如果操作结果最高位有进位或借位,Cy由硬件置“1”,否则清“0”。

(2) 辅助进位标志位Ac。在进行加或减运算时,如果低四位数向高位有进位或借位,硬件会自动将Ac置“l”,否则清“0”。

(3) 工作寄存器区指针RSl RS0。用于选择CPU当前工作寄存器的工作区。可由用户用软件来改变RSl RS0的组合,以切换当前选用的寄存器的工作区。

(4) 溢出标志位OV。当进行算术运算时,如果产生溢出,则由硬件将OV位置“l”,否则清“0”。

(5) 奇偶标志位P。该位始终跟踪累加器A中含“1”个数的奇偶性。如果A中有奇数个“1”,则P置“l”,否则置“0”。

13.MCS-51单片机复位条件是什么?常用复位电路有哪些?

答:复位条件是在单片机的RST引脚输入持续至少两个机器周期高电平。MCS-51单片机通常采用上电复位和上电+按钮电平复位两种方式。

第三章习题参考答案

1.选择题:

(1)可以实现片外数据存储器访问的指令是( A )。

A.MOVX B. MOV C. NOP D. DIV

(2)下列指令中,可以实现将累加器A的第0位置1(其它位不变)的指令是( B )。

A.MOV A,#01H B. SETB ACC.0 C. ANL A,#0FFH D. SETB ACC

(3)MOVX A @DPTR 指令中,源操作数的寻址方式是(B )

A.寄存器寻址 B. 寄存器间接寻址 C.直接寻址 D. 立即寻址

(4)LCALL指令操作码地址是2000H,执行完子程序返回指令后,PC=( D )。

A.2000H B. 2001H C.2002H D. 2003H

(5)对程序存储器的读操作,只能使用( B )

A.MOVX B. MOVC C. PUSH D. MOV

(6) 执行下面指令后,30H内容是( C )

MOV R1,#30H MOV 40H,#0E0H MOV @R1, 40H

A.40H B. 30H C. 0E0H D. FFH

(7)下列指令格式正确的是( D )。

A.DEL:XCHA,30H B. MOV:INC A C. 2AB:MOV A,#20H D. ABC:MOV 23H,A (8)当执行指令( A )后,累加器A的内容为00H。

A.ANL A,#00H B. ORL A,#00H C. XRL A,#00H D.以上都不对 2. 比较下面各组指令,并在指令后添加注释

(1) MOV A ,20H ; 20H内容送累加器A

MOV C ,20H ;位地址20H内容送位累加器C (2) MOV A ,20H ;20H内容送累加器A

MOV R1 ,#20H ;20H送累加器A

MOV A , @R1 ; 20H指向地址的内容累加器A

(3) CJNE A ,@R1,L1 ;比较A和R1指向地址的内容,若相等程序顺序运行,不相等则转L1处

DJNZ R2 ,L1 ;R2内容减1,不等于0转L1处,等于0则顺序运行

3.判断下列指令是否正确,并改正错误

(1). SUBB 30H,#12H 该指令错误,带进位减法指令目的操作数必须是A,要将立即数12H和30H内容相加,可改为:MOV A , 30H

SUBB A,#12H

(2). MOV A ,2000H 该指令错误,MOV为内部数据传送指令,范围只是在内部数据存储器和累加器传送,地址不超过FFH。要将外部2000H送累加器可改为

MOV DPTR ,2000H MOVX A,@ DPTR (3). ADD R0,0A3H

该指令错误,要将A3H内容和R0内容相加, 可改为:MOV A , R0

ADD A,0A3H

(4). CJNE 20H,#20H,L1

该指令错误,CJNE第一操作数可以是A、寄存器Rn或@Ri 可改为:MOV R1,20H CJNE R1,#20H,L1 (5). RLC A 该指令正确

4.设R0的内容为32H,A的内容为48H,而片内RAM 32H单元的内容为80H,40H单元的内容为08H。请指出在执行下列程序段后,上述各单元的内容变化。

MOV A,@R0 ;R0指向地址32H内容送A,即(A)=80H MOV @R0,40H ;32H←(40H),即(32H)=(40H)=08H MOV 40H,A ;40H←(A),即(40H)=(A)=80H MOV R0,#35H ;R0←35H,,(R0)=35H 5. 根据要求要求写出相应的指令。

1).将R0的内容送R1 MOV A,R0

MOV R1,A

2)将30H内容送20H。 MOV 20H,30H

3)将立即数30H送R0H MOV R0,#30H

5)将R0的内容送以R1中内容为地址的存储单元。 MOV A,R0 MOV @R1,A

6)将内部RAM30H内容送外部20H单元。 MOV A,30 MOV R1,#20H MOVX @R1,A

7)将外部RAM3000H内容送内部30H单元。 MOV DPTR,#3000H MOVX A, @DPTR MOV 30H,A

8)将ROM2000H内容送R1。 MOV DPTR,#3000H MOVC A, @A+DPTR MOV R1,A

9)将ROM2000H内容送内部30H单元。 MOV DPTR,#2000H MOVC A, @A+DPTR MOV 20H,A

10)将ROM2000H内容送外部20H单元。 MOV DPTR,#2000H MOVC A, @A+DPTR MOV R1,#20H MOVX @R1,A 6.编程将片外数据存储器地址为40H~60H区域的数据块,全部搬移到片内RAM的同地址区域,并将原数据区全部填为FFH。

MOV R0, #40H MOV R1, #33 LOOP:MOVX A,@ R0

MOV @ R0, A MOV A,#0FFH MOVX @ R0, A INC R0

DJNZ R1,LOOP RET

7.编程找出片外2000H~200FH数据区中的最小值,结果存放于R2中。

MOV DPTR,#2000H MOV R7, #0FH MOVX A,@DPTR

MOV B,A LOOP:INC DPTR

MOVX A,@DPTR CJNE A,B,LOOP1 LOOP1:JNC LOOP2

MOV B,A

LOOP2:DJNZ R7,LOOP

MOV R7,B RET

第四章习题参考答案

1.是在外部RAM中的xdata区定义了无符号字符型的字变量OUTX2,它的地址是(1002H)。 2.(1)编程容易 ;(2)容易实现复杂的数值计算;(3)容易阅读、调试、维护程序; (4)容易实现模块化开发;(5)程序可移植性好。

3.bit,data,idata,pdata,code,xdata,sbit,sfr,sfr16 4.bit和sbit都是C51扩展的变量类型。 bit是位变量,编译器在编译过程中分配地址。除非指定,否则这个地址是随机分配的。这个地址是整个可寻址空间,也就是内部RAM、外扩RAM和ROM。 sbit是对应可位寻址空间的一个位,包括可位寻址区:20H~2FH和特殊功能寄存器区。一旦用了形如sbi xxx = REGE^6的定义,这个sbit量就确定地址了。 bit和sbit的最大区别在于,bit是定义一个变量;sbit经常用在寄存器中的,方便对寄存器的某位进行操作。

5.(1)使用C51运行库中的预定义宏;(2)通过指针访问;(3)使用C51扩展关键字_at_。

6.(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。

(2)中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。

(3)在任何情况下都不能直接调用中断函数,否则会产生编译错误。因为中断函数的返回是由8051单片机的RETI指令完成的,RETI指令影响8051单片机的硬件中断系统。如果在没有实际中断情况下直接调用中断函数,RETI指令的操作结果会产生一个致命的错误。

(4)如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器必须与中断函数相同。否则会产生不正确的结果。

(5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容,具体如下:在程序开始处对ACC、B、DPH、DPL和PSW入栈,结束时出栈。中断函数未加using m修饰符的,开始时还要将R0~R1入栈,结束时出栈。如中断函数加using m修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。

(6)C51编译器从绝对地址8n+3处产生一个中断向量,其中n为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。

(7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其它程序调用。

7.有small,compact和large三种存储器模式。Small存储器模式参数及局部变量放入可直接寻址的内部存储器(最大128B,默认存储器类型为data)

compact存储器模式参数及局部变量放入分页外部数据存储器(最大256B,默认存储

本文来源:https://www.bwwdw.com/article/pj0f.html

Top