(完整版)单片机原理及应用——基于Proteus和Keil_C林立_张俊亮版课后习题答案一至七章 下载本文

44引脚方形扁平封装(QFP ——quad flat package)方式,引脚之间的距离是;

44引脚带引线的塑料芯片载体PLCC(Plastic Leaded Chip Carrier)。

4.什么是复位?单片机复位电路有哪几种,工作原理分别是什么? 答:复位——使单片机恢复原始默认状态的操作。

单片机复位电路有:上电复位电路,由电阻和电容构成,通过上电时,电容相当于短路而使复位引脚在晶振有效的情况下保持2个机器周期的高电平;按钮开关复位电路,由两个电阻的分压构成,通过手工按下按钮,使复位引脚在晶振有效的情况下保持2个机器周期的高电平。

5.通常的微机系统存储器结构有哪几种?MCS-51单片机存储器属于哪一类? CS-51可寻址多大空间?

答:通常的微机系统存储器结构有两种结构,即哈佛结构和冯诺依曼结构(也叫普林斯顿结构),MCS-51单片机存储器属于,MCS-51可寻址空间是两个64KB,即64KB的程序存储空间和64KB的数据存储空间。 6.片内RAM中低128个单元划分为哪三个主要部分?各部分的主要功能是什么? 答:片内RAM中低128个单元划分为三个部分: ①工作寄存器区(00H-1FH),四组,每组8个,可作用工作寄存器切换使用; ②可位寻址区(20H-2FH),16B,位地址为00H-7FH,用作为按位寻址的空间; ③用户RAM区(30H-7FH),80B,用作普通RAM单元或堆栈。

7.程序状态字寄存器PSW各位的定义是什么? 答:程序状态字寄存器PSW各位的定义如下:

PSW.7 CY C PSW.6 AC A PSW.5 F0 F PSW.4 RS1 RS PSW.3 RS0 RS PSW.2 OV O PSW.1 F1 F PSW.0 P P PSW.7:进/借位标志CY,加法有进位时置1,减法有借位时置1; PSW.6:辅助进位标志AC,加法运算低四位向高上四位有进位时置1; PSW.5、PSW.1:用户标志位F0和用户标志位F1, 保存用户的位数据;

PSW.4、PSW.3:工作寄存器选择控制位RS1和RS0,00至11分别选择四组工作之一作为当前工作寄存器

PSW.2 :溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于255即乘积在BA中,或除法运算除数为0)时置1 PSW.0:奇偶标志位P,累加器A中1的个数为奇数时置1。

8.什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期为多少微秒?

答:时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。 机器周期:由12个时钟周期构成,完成一个基本操作

5

指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由1~4个机器周期构成。

当振荡频率为12MHz时,一个机器周期为1微秒。

9.P0、P1、P2和P3口的结构和功能分别是什么?

答:P0口的每一位由1个锁存器 、2个三态缓冲器 、1个输出控制电路(非门 X、与门、电子开关MUX、输出驱动电路构成,其功能既可以作为通用I/O口实现输入/输出功能,也可作为单片机地址线的低8位和数据线实现外部扩展功能。在用作输入输出口时,需外接上拉电阻。

P1口的每一位由1个锁存器 、1个场效应管驱动器V和2个三态门缓冲器构成,其作用是用作输入输出口

P2口的每一位由1个锁存器、2个三态缓冲器、1个输出控制单元、1个输出驱动单元构成,其功能是用作输入输出口,或地址总线的高8位。

P3口的每一位由1个锁存器、2个三态缓冲器、1个第二功能控制单元 、1个输出驱动单元构成,其作用是用作输入输出口或第二功能。

10.51单片机引脚ALE的作用是什么?当51不外接存储器时,ALE上的输出的脉冲频率是多少? 答:51单片机引脚ALE的作用是对外部存储寻址时锁存P0口输出的低8位地址,当51不外接存储器时,ALE上的输出的脉冲频率是fosc/6。

第3章 单片机的汇编语言与程序设计 习题

1.MCS-51单片机有哪几种寻址方式?适用于什么地址空间?

答:MCS-51单片机有7种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址。

直接寻址方式:操作数的地址由指令直接给出,适用于片内RAM的所有地址空间;如 MOV A,68H

MOV A,PSW 寄存器寻址方式:指令给出的是寄存器的编码,操作数在编码指定的寄存器中,适用于片内00H至1FH的32个字节,用R0,…,R7表示,通过PSW的RS1和RS0选择组号确定对应32个字节中的其中8个,还有累加器A,以及乘除法指令中的A和B寄存器,位寻址方式中的布尔累加器C;

MOV A,R1 MUL AB INC DPTR 寄存器间接寻址方式:指令给出的是寄存器的编码,操作数地址在编码指定的寄存器中,适用于片内RAM的全部空间,其中52系列中的80H至FFH只能用寄存器间接寻址;如 MOV A,@R0

MOV A,@R1 MOVX A,@DPTR 立即寻址方式:操作数本身在指令中直接,给出适用于用8位立即数对片内RAM所有地址单元赋值,也可用16位立即数对DPTR赋值; 如

6

MOV A,#0E2H MOV DPTR,#2000H 变址寻址方式:以DPTR或PC作为基地址寄存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的内容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器ROM,仅有三条指令如下:

MOVC A,@A+DPTR

MOVC A,@A+PC JMP @A+DPTR

位寻址方式:指令中直接给出操作数所在单元的位地址,适用于片内RAM中地址20H至2FH中的16个字节中的128个位地址空间和80H至FFH中地址中可以被8整除的所有SFR中的每个位地址空间;如

MOV C,7FH MOV F0,C MOV C,ACC.7

相对寻址方式:为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令-128至+127字节范围内的地址空间。如 SJMP START

HERE: SJMP HERE ;等效于: SJMP $ 2.MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,怎样判断某内部数据单元的内容是否为零?

答:MCS-51单片机的PSW程序状态字中无ZERO(零)标志位,判断某内部数据单元的内容是否为零是能通过取数到A累加器,再判断A中的每一位是否为零来确定其值是否为零。

3.编程将内部RAM的20H--30H单元内容清零。

解:设一个片内RAM指针R0,先指向首地址20H,通过累加器A清零,然后采用间接寻址方式依次将A中的零值传送到指针所指的片内RAM单元,每传送一个字节,地址指针加1,直到达到地址为30H或达到计数器规定的17个字节为止。 程序1: MOV R0,#20H ;设地址指针初值 CLR A ;累加器清0 CONT: MOV @R0,A ;置0指针所指单元 INC R0 ;地址指针加1

CJNE R0,#31H,CONT ;指针未超过终点则继续 SJMP $ ;暂停 程序2: MOV R0,#20H ;设地址指针初值 CLR A ;累加器清0 MOV R7,#17 ;计数器赋初值,从20H到30H共17个字节 CONT: MOV @R0,A ;置0指针所指单元 INC R0 ;地址指针加1

DJNZ R7, CONT ;计数器减1,非0,则继续 SJMP $ ;暂停

7

4.编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则将50H单元清零。

解:设一个片内RAM指针R0,先指向首地址32H,比较@R0与#0AAH,若相等,则退出循环,给50H单元赋0FFH,若不相等,则R0加1为继续比较下一个字节做准备,直到达到地址为41H或达到计数器规定的16个字节为止还没找到,则给50H单元赋00H 程序1: MOV R0,#32H ;设地址指针初值

CONT: CJNE @R0,#0AAH,NEXT;比较查找值与指针所指单元的值,不相等转移 MOV A,#0FFH ;相等,则准备好要赋的标志值0FFH SJMP DOWN ;转存到保存结果处 NEXT: INC R0 ;修改地址指针

CJNE R0,#42H,CONT ;若指针未越过终点,则继续 MOV A,#00H ;查找失败,则将00H存入结果标志单元 DOWN: MOV 50H,A ;将比较结果标志存入50H单元 SJMP $ ;暂停 END 程序2: MOV R7,#16 ;计数器赋初值,从20H到30H共16个字节 MOV R0,#32H ;设地址指针初值

CONT: CJNE @R0,#0AAH,NEXT ;比较查找值与指针所指单元的值,不相等转移

MOV A,#0FFH ;相等,则准备好要赋的标志值0FFH SJMP DOWN ;转存到保存结果处 NEXT: INC R0 ;修改地址指针

DJNZ R7,CONT ;计数器减1,非0,则继续 MOV A,#00H ;查找失败,则将00H存入结果标志单元 DOWN: MOV 50H,A ;将比较结果标志存入50H单元 SJMP $ ;暂停 END

5.查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元。 解:从20H到4FH共48个字节 MOV R7,#48 ;字节计数器赋初值

MOV R0,#20H ;设地址指针初值

CONT: CJNE @R0,#00H,NEXT ;比较查找值与指针所指单元的值,不相等转移 INC R6 ;相等,0的个数计数器加1 NEXT: INC R0 ;修改地址指针

DJNZ R7,CONT ;计数器减1,非0,则继续 MOV 50H,R6 ;保存O的个数计数值到50H单元 SJMP $ ;暂停 END END

6.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行之后的A中的内容。 ANL A,#17H

8