第二章 单片机结构
2-1 MCS-51单片机内部包含哪些主要逻辑功能部件?各有什么主要功能?
答:(1)中央处理器CPU
MCS-51系列单片机有一个8位的CPU,由运算部件,控制部件构成,其中包括振荡电路和时钟电路,主要完成单片机的运算和控制功能。它是单片机的核心部件,决定了单片机的主要功能特性。MCS-51单片机的CPU不仅可以处理字节数据,还可以进行位变量的处理。
(2)片内数据存储器RAM
片内带有128字节的数据存储器RAM,其片外可寻址范围为64KB。数据存储器用于存储单片机运行过程中的工作变量、中间结果和最终结果等。 (3)片内程序存储器ROM/EPROM
片内带有4KB程序存储器ROM,其片外可寻址范围为64KB。8031单片机内部无ROM。程序存储器既可以存放已编制的程序,也可以存放一些原始数据和表格。 (4)特殊功能寄存器SFR
片内有21个特殊功能寄存器SFR,用以控制和管理内部算术逻辑部件、并行I/O口、串行I/O口、定时/计数器、中断系统等功能模块的工作。 (5)并行口
4个8位的并行I/O口:P0、P1、P2、P3。 (6)串行口
1个全双工的串行口,可以实现单片机和外设之间数据的逐位传送。 (7)定时/计数器
片内有两个16位的定时/计数器,可以设置为定时方式或计数方式。 (8)中断系统
具有5个中断源,可编程为2个优先级的中断系统。 2-4 PSW的作用是什么?常用的状态标志位有哪几位?其作用是什么?能否位寻址?
答:PSW是一个8位寄存器,它包含了程序状态信息。PSW中的CY,AC,OV和P标志位用于存放程序运行中的状态信息,RS1和RS0用于选择当前工作寄存器区,F0是用户标志位。可以进行位寻址。
2-5 MCS-51单片机引脚中共有多少I/O线?它们与地址总线和数据总线有什么关系?其中地址总线、数据总线各是几位?
答:MCS-51单片机具有4个8位双向并行I/O端口,共32线。每位均由自己的锁存器、输出驱动器和输入缓冲器组成。在扩展系统中P0口用于输出外部程序存储器或外部数据存储器的低8位地址,并分时复用外部程序存储器的读数据线或外部数据存储器的读/写数据线。P2口用于输出外部程序存储器或外部数据存储器的高8位地址。地址总线为16位,数据总线为8位。
2-7 MCS-51单片机有几种复位方法?复位后单片机特殊功能寄存器的状态?
答:51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转
为低电平。特殊功能寄存器的状态参见表2-5
2-8特殊功能寄存器中哪些寄存器可以位寻址?它们的字节地址是什么?
答:如下表所示:
寄存器符号 B ACC PSW IP P3 P2 P1 P0 IE SCON TCON
2-10 程序计数器PC是否属于特殊功能寄存器?它有哪些特点?地址指针DPTR有哪些特
点?与程序计数器PC有何异同?
答:程序计数器PC用于存放下一条要执行的指令地址,是一个16位专用寄存器,可寻址范围为0~65535(64K),PC在物理上是独立的,不属于SFR。数据指针DPTR是一个16位的SFR,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。DPTR既可以作为一个16位寄存器DPTR来用,也可以作为两个独立的8位寄存器DPH和DPL来用。访问外部数据存储器是以16位的DPTR地址作为地址指针;程序存储器的访问是以程序计数器PC作为地址指针的。
第三章 指令系统
3-2 已知 (A) = 83H, (R0)=17H, (17H)=34H, 执行下列程序段后
ANL A, #17H; (A)=03H ORL 17H, A; (17H)=37H XRL A, @R0; (A)=34h CPL A ; (A)=CBH
问(A)=CBH, (R0)=17H ,(17H)=37H
3-3 已知 (10H) = 5AH, (2EH) = IFH, (40H)=2EH, (60H)=3DH, 执行下列程序段后:
MOV 20H, 60H ; (20H ) = 3DH MOV R1, 20H ; (R1) = 3DH; MOV A, 40H ; (A) = 2EH
XCH A, R1 ; (A) = 3DH, (R1) = 2EH; XCH A, 60H ; (A) = 3DH,(60H)=3DH, XCH A , @R1 ; (A)=1FH, (2EH)=3DH, MOV R0, #10H ; (R0) = 10H,
寄存器名称 B寄存器 累加器 程序状态字 中断优先级控制寄存器 P3口 P2口 P1口 P0口 中断允许控制寄存器 串行口控制寄存器 定时/计数器控制寄存器 地址 F0H E0H D0H B8H B0H A0H 90H 80H A8H 98H 88H
XCHD A, @R0 ; (A)=1AH, (10H)=5FH,
问:(A)=1ah , (10H)=5fh , (2EH)=3dh , (40H)=2eh , (60H)=3dh 3-4 执行下列程序段:
MOV A, #00H ; (A ) = 0 MOV R7, #0FFH ; (R7) = FFH
MOV PSW,#80H ; (PSW)=1000 0000B ADDC A, R7 ; (A) = 00 问:(CY)=1 , (AC)=1 ,(P)=0 , (A)=0 , (R7)=ffh
3-5 已知被减数存放在内RAM的51H ,50H 单元中,减数存放在61H, 60H单元中(高字节在前),相减得到的差放回被减数的单元中(设被减数大于减数),试编程之。 答: MOV A, 50H CLR C SUBB A, 60H MOV 50H, A MOV A, 51H SUBB A, 61H;
MOV 51H, A
3-6 在外部 RAM 2000H单元开始建立0~99(BCD码)的一百个数,是编程此程序。 答: MOV DPTR, #2000H; MOV R0, #100 ; #64H CLR A
LOOP: MOVX @DATR, A INC DPTR ADD A, #01H DA A DJNZ R0, LOOP RET
3-7 以50H为起始地址的片内存储区中,存放有16个单字节无符号二进制数,试编写一程序,求其平均值并传送至片外0750H单元中。 答:
AVERAGE: CLR A MOV R2, A; MOV R3, A; MOV R0, #50H MOV R4, #16
CLR C
Ll1; MOV A, @R0 ADD A, R3 MOV R3, A CLR A ADDC A, R2 MOV R2, A INC R0; DJNZ R4, LL1 MOV R4, #4 LL2: CLR C
MOV A , R2 RRC A; MOV R2, A MOV A, R3 RRC A DJNZ R4, LL2 MOV DPTR, #0750H MOVX @DPTR, A RET
3-10、访问特殊功能寄存器SFR可以采用哪些寻址方式?
答:可以采用的方式有:直接寻址、寄存器寻址、寄存器间接寻址、位寻址 3-12、访问外部RAM单元可以采用哪些寻址方式? 答:寄存器间接寻址
3-14、设(SP)=32H,内部RAM的31H,32H单元中的内容分别为23H,01H,试分析下列指令的执行结果。
POP DPH POP DPL
其执行结果为(DPTR)=? 答:(DPTR)= 0123H
3-15、设堆栈指针SP中的内容为60H,内部RAM中的30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H, 31H, DPTR及SP中的内容有何变化?
PUSH 30H ;61H=24H PUSH 31H ;62H=10H POP DPL ;DPL=10H,SP=61 POP DPH ;DPH=24H, SP=60H MOV 30H , #00H ;30H=00H MOV 31H, #0FFH ;31H=0FFH
3-16、试用位操作指令实现下列逻辑操作。要求不得改变未涉及位的内容。 (1)使ACC.0置位;
(2)清除累加器高4位;
(3)清除ACC.3, ACC.4, ACC.5, ACC.6.
答: (1)SETB ACC.0 ; 使ACC.0置位 (2) CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3) CLR ACC.3 CLR ACC.4 CLR ACC.5 CLR ACC.6
3-17、设(A)01010101B,(R5)=10101010B,分别写出执行下列指令后结果。