第 2 章 MCS-51 单片机结构及原理习题1. MSC- 51 单片机部由哪些功能部件组成,各有什么功能?答:以 80C51 单片机为例,其部功能部件有:控制器:是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的功能;运算器:根据控制器发来的信号,执行算术逻辑运算操作;存储器:包括程序存储和数据存储器;定时器计数器: 2 个 16 位定时器 / 计数器,可对机器周期计数,也可对外部输入脉冲计数;中断系统:可响应三个部中断源和两个外部中断源的中断请求;输入输出接口: 4 个 8 位并行口和一个全双工串行口;2. MSC- 51 单片机外部引脚的名称是什么?各有什么功能?答: (1)电源及晶振引脚VCC(40 脚 ) : +5V 电源引脚VSS(20 脚 ) :接地引脚XTAL1(19 脚 ) ;外接晶振引脚(置放大器输入端)XTAL2(18 脚 ) :外接晶振引脚(置放大器输出端)(2)控制引脚RST/VPD(9)为复位 /备用电源引脚ALE/PROG(30)为地址锁存使能输出/编程脉冲输入PSEN(29):输出访问片外程序存储器读选通信号EA/ VPP (31):外部ROM允许访问/编程电源输入(3)并行 I/O 口引脚P0.0 ~ P0.7 ( 39~ 32 脚)—— P0 口;P1.0 ~ P1.7 ( 1~ 8 脚)—— P1 口;P2.0 ~ P2.7 ( 21~ 28 脚)—— P2 口;P3.0 ~ P3.7 ( 10~ 17 脚)—— P3 口。
3. 51 系列单片机的封装有哪些类型?请说明每一种封装引脚之间的距离。
答: 51 系列单片机的封装有:40 引脚双列直插封装( DIP—— dual in-line package ),引脚之间的距离是 100mil(2.54mm) ;44 引脚方形扁平封装( QFP —— quad flat package )方式,引脚之间的距离是 2.54mm;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,加法有进位时置1,减法有借位时置1;PSW.6:辅助进位标志AC,加法运算低四位向高上四位有进位时置1;PSW.5、 PSW.1:用户标志位F0 和用户标志位F1,保存用户的位数据;RS0, 00 至11 分别选择四组工作之一作为当PSW.4、 PSW.3:工作寄存器选择控制位RS1和前工作寄存器PSW.2 :溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常( 乘法运算结果大于255 即乘积在BA中,或除法运算除数为0) 时置 1PSW.0:奇偶标志位P,累加器 A 中1 的个数为奇数时置1。
8.什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期为多少微秒?答:时钟周期又叫振荡周期或拍,用P 表示,是MCS-51单片机中最小的时间单位,在一个时钟周期, CPU完成一个最基本的动作。
机器周期:由12 个时钟周期构成,完成一个基本操作指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由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. 80C51 片机引脚ALE 的作用是什么?当80C51 不外接存器,ALE上的出的脉冲率是多少?答:80C51 片机引脚 ALE的作用是外部存址存 P0 口出的低 8 位地址,当 80C51 不外接存器,ALE上的出的脉冲率是 fosc/6 。
第 3 章片机的言与程序1. MCS-51片机有哪几种址方式?适用于什么地址空?答: MCS-51片机有7 种址方式:直接址、寄存器址、寄存器接址、立即址、址址、位址、相址。
直接址方式:操作数的地址由指令直接出,适用于片RAM的所有地址空;如MOV A, 68HMOV A, PSW寄存器址方式:指令出的是寄存器的,操作数在指定的寄存器中,适用于片00H 至1FH 的32 个字,用R0, ⋯ ,R7 表示,通PSW的RS1和RS0号确定32个字中的其中8 个,有累加器A,以及乘除法指令中的 A 和B 寄存器,位址方式中的布累加器C;MOV A, R1MUL ABINC DPTR寄存器接址方式:指令出的是寄存器的,操作数地址在指定的寄存器中,适用于片 RAM的全部空,其中52 系列中的80H 至 FFH只能用寄存器接址;如MOV A, R0MOV A, R1MOVX A, DPTR立即址方式:操作数本身在指令中直接,出适用于用8 位立即数片RAM所有地址元,也可用16 位立即数DPTR;如MOV A, #0E2HMOV DPTR,#2000H址址方式:以 DPTR或 PC作基地址寄存器,以累加器 A 作址寄存器,将基址寄存器与变址寄存器的容相加形成操作数的实际地址的一种寻址方式,变址寻址方式适用于程序存储器 ROM,仅有三条指令如下:MOVC A, A+DPTRMOVC A, A+PCJMP A+DPTR位寻址方式:指令中直接给出操作数所在单元的位地址,适用于片RAM中地址20H 至2FH中的16 个字节中的128 个位地址空间和80H至FFH中地址中可以被8 整除的所有SFR中的每个位地址空间;如MOV C, 7FHMOV F0, CMOV C, ACC.7相对寻址方式:为相对转移指令而设,指令中直接给出转移的相对偏移量,其转移目标在当前指令 -128 至+ 127 字节围的地址空间。
如SJMP STARTHERE: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 ; 累加器清 0CONT: MOV R0,A ; 置 0 指针所指单元INC R0 ; 地址指针加 1CJNE R0,#31H,CONT ; 指针未超过终点则继续SJMP $ ; 暂停程序 2:MOV R0,#20H ; 设地址指针初值CLR A ; 累加器清 0MOV R7,#17 ; 计数器赋初值,从20H 到 30H 共 17 个字节CONT: MOV R0,A ; 置 0 指针所指单元INC R0 ; 地址指针加 1DJNZ R7, CONT ; 计数器减1,非0,则继续SJMP $ ; 暂停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 ; 相等,则准备好要赋的标志值0FFHSJMP 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 ; 相等,则准备好要赋的标志值0FFHSJMP DOWN ; 转存到保存结果处NEXT: INC R0 ; 修改地址指针DJNZ R7,CONT ; 计数器减 1,非 0,则继续MOV A,#00H ; 查找失败,则将00H存入结果标志单元DOWN: MOV 50H,A ; 将比较结果标志存入50H 单元SJMP $ ; 暂停END5.查找 20H~ 4FH 单元中出现00H的次数,并将查找结果存入50H 单元。