2010-6-262010-6-2611第二章第二章MCS-51系列单片机的结构和原理的结构和原理有关MCS-51机的性能特点,在第一章已作了简单介绍,本节将进一步详细介绍它的结构,使大家对它的性能有更深入的了解。MCS-51的典型产品是8051、8031、8751。8051是ROM型单片机,内部有4KROM;8031无片内ROM,8751片内有4KEPROM;89C51片内有4KFPEROM。除此以外,它们的内部结构及引脚完全相同。2010-6-262010-6-2622本章将以MCS-51系列的8051为典型例子,详细介绍单片机的结构、性能、存储器结构及工作原理等内容。通过对这些内容的掌握,可以起到举一反三、触类旁通的作用。§2.1MCS-51单片机的结构以8051为例给出的单片机功能方块图如下。由图可见,在这一块芯片上,集成了一台微型计算机的各个部分。其中主要有CPU、存储器、可编程I/O、定时/计数器、串行口等。各部分通过内部总线相连。2010-6-262010-6-2633时钟OSCCPU各种I/O定时器/计数器程序存储器ROM数据存储器RAMRAMRAMRAM中断MCS-51单片机组成框图2010-6-262010-6-26448051的内部结构展开图128128128128××××8888RAMRAMRAMRAMRAM地址寄存器地址寄存器地址寄存器地址寄存器P3P3P3P3口口口口P1P1P1P1口口口口P2P2P2P2口口口口P0P0P0P0口口口口锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器锁存器中断控制中断控制中断控制中断控制定时定时定时定时////计数器计数器计数器计数器串行串行串行串行I/OI/OI/OI/O口口口口SP寄存器寄存器寄存器寄存器BBBB累加器累加器累加器累加器AAAA暂存器暂存器暂存器暂存器1111暂存器暂存器暂存器暂存器2222程序状态程序状态程序状态程序状态字字字字PSWPSWPSWPSW指令寄存器指令寄存器指令寄存器指令寄存器IRIRIRIR指令译码器指令译码器指令译码器指令译码器ID数据指针数据指针数据指针数据指针DPTRDPTRDPTRDPTR缓冲器缓冲器缓冲器缓冲器程序计数器程序计数器程序计数器程序计数器PCPCPCPC增增增增1111程序地址寄存器程序地址寄存器程序地址寄存器程序地址寄存器ARARARAR定时与控制定时与控制定时与控制定时与控制4K×8ROMALUCPU2010-6-262010-6-26552.1.1CPU运算器CPU算术/逻辑部件ALU(ArithmeticLogicUnit)累加器ACCACCACCACC(Accumulator)程序状态字寄存器PSWPSWPSWPSW(ProgramStatusWord)暂存寄存器寄存器B控制器定时控制与条件转移逻辑电路程序计数器PCPCPCPC指令寄存器IR指令译码器ID2010-6-262010-6-26662.1.28051的片内片内片内片内存储器 8051单片机与一般微机的存储器配置方式很不相同。一般微机通常只有一个逻辑空间,可以随意安排ROM或RAM。访问存储器时,同一地址对应唯一的存储单元,可以是ROM也可以是RAM,并用同类访问指令。而MCS-51则不同:2010-6-262010-6-26778051在物理结构上设计成程序存储器与数据存储器独立分开的结构:片内程序存储器4KB(ROM0000H~0FFFH)片内数据存储器128B(RAM00H~7FH)2.1.38051的I/O端口8051有四个8位并行双向I/O口P0、P1、P2、P3,一个串行口。2010-6-262010-6-26882.1.48051的特殊功能寄存器SFR8051内部有21个特殊功能寄存器,分别叫SP、IE、IP、PCON......(与内部RAM统一编址80H~FFH)★§2.2MCS-51单片机的存储器组织8051在物理结构上有四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。new2010-6-262010-6-269964KBROMEA=0EA=10000H0FFFH1000HFFFFH4KBROMFFH80H7FH00HSFRRAM64KBRAM(I/O)0000HFFFFH片内片外片外程序存储器数据存储器2010-6-262010-6-2610108051在逻辑上,即从用户角度上8051有三个存储空间:片内外统一编址的程序存储器片内外不统一编址的数据存储器特殊功能寄存器(片内)★访问这几个不同的逻辑空间时,采用的指令:片内外程序存储器空间----MOVC片内数据存储器空间和SFR----MOV片外数据存储器地址空间----MOVX2010-6-262010-6-2611112010-6-262010-6-261212一、程序存储器及地址空间作用--程序存储器用于存放编好的程序和表格常数。①8051片内有4K字节ROM,片外用16位地址线最多可扩展64K字节ROM,两者是统一编址的。★如果EA端保持高电平,8051执行片内前4KBROM地址(0000H~0FFFH)中的程序。当寻址范围超过4KB(1000H~FFFFH)时,则从片外存储器取指令。★当EA端保持低电平时,8051的所有取指令操作均在片外程序存储器中进行,这时片外存储器可以从0000H开始编址。2010-6-262010-6-261313②在程序存储器中,有6个单元具有特殊功能0003000300030003HHHH:外部中断0入口。000000000000BHBHBHBH:定时器0溢出中断入口。0013001300130013HHHH:外部中断1入口。001001001001BHBHBHBH:定时器1溢出中断入口。0023002300230023HHHH:串行口中断入口。使用时,通常在这些入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断程序起始地址,或者从0000H起始地址跳转到用户设计的初始程序上。0000000000000000HHHH:8051复位后,PC=0000H,即程序从0000H开始执行指令。2010-6-262010-6-261414二、数据存储器及地址空间数据存储器片外RAM64KB,地址范围0000H~FFFFH片内RAM128B,地址范围00H~7FH使用时只能用MOVXMOVXMOVXMOVX指令访问使用MOVMOVMOVMOV指令访问,可以进行堆栈操作2010-6-262010-6-261515片内数据存储器空间分布图通用RAM区(80B)位地址区(16B)寄存器区4组(32B)7FH7FH7FH7FH寄存器3组寄存器2组寄存器1组寄存器0组寄存器区4组(32B)....................................①由PSW中的2位RS1、RS0来决定选哪一组为当前工作寄存器:RS1、RS0=00选0组RS1、RS0=01选1组RS1、RS0=10选2组RS1、RS0=11选3组②在位地址区,每一个BIT都有一个地址,共16×8=128位00H00H00H00H30H30H30H30H2FH2FH2FH2FH20H20H20H20H1FH1FH1FH1FH............2010-6-262010-6-261616片内数据存储器空间分布图通用RAM区(80B)位地址区(16B)7FH7FH7FH7FH寄存器3组寄存器2组寄存器1组寄存器0组寄存器0组寄存器区4组(32B)....................................RS1RS1RS1RS1、、、、RS0=RS0=RS0=RS0=00000000R7R6R5R4R3R2R1R000H00H00H00H01H01H01H01H02H02H02H02H03H03H03H03H04H04H04H04H05H05H05H05H06H06H06H06H07H07H07H07H00H00H00H00H30H30H30H30H2FH2FH2FH2FH20H20H20H20H1FH1FH1FH1FH............2010-6-262010-6-2617172010-6-262010-6-261818片内数据存储器空间分布图通用RAM区(80B)位地址区(16B)7FH7FH7FH7FH寄存器3组寄存器2组寄存器1组寄存器0组寄存器1组R7R6R5R4R3R2R1R008H08H08H08H09H09H09H09H0AH0AH0AH0AH0BH0BH0BH0BH0CH0CH0CH0CH0DH0DH0DH0DH0EH0EH0EH0EH0FH0FH0FH0FH寄存器区4组(32B)....................................RS1RS1RS1RS1、、、、RS0=RS0=RS0=RS0=0101010100H00H00H00H30H30H30H30H2FH2FH2FH2FH20H20H20H20H1FH1FH1FH1FH............2010-6-262010-6-261919片内数据存储器空间分布图通用RAM区(80B)位地址区(16B)7FH7FH7FH7FH寄存器3组寄存器2组寄存器1组寄存器0组寄存器2组R7R6R5R4R3R2R1R010H10H10H10H11H11H11H11H12H12H12H12H13H13H13H13H14H14H14H14H15H15H15H15H16H16H16H16H17H17H17H17H寄存器区4组(32B)....................................RS1RS1RS1RS1、、、、RS0=RS0=RS0=RS0=1010101000H00H00H00H30H30H30H30H2FH2FH2FH2FH20H20H20H20H1FH1FH1FH1FH............2010-6-262010-6-262020片内数据存储器空间分布图通用RAM区(80B)位地址区(16B)7FH7FH7FH7FH寄存器3组寄存器2组寄存器1组寄存器0组寄存器3组R7R6R5R4R3R2R1R018H18H18H18H19H19H19H19H1AH1AH1AH1AH1BH1BH1BH1BH1CH1CH1CH1CH1DH1DH1DH1DH1EH1EH1EH1EH1FH1FH1FH1FH寄存器区4组(32B)....................................RS1RS1RS1RS1、、、、RS0=RS0=RS0=RS0=1111111100H00H00H00H30H30H30H30H2FH2FH2FH2FH20H20H20H20H1FH1FH1FH1FH............2010-6-262010-6-262121片内数据存储器空间分布图通用RAM区(80B)位地址区(16B)7FH7FH7FH7FH寄存器3组寄存器2组寄存器1组寄存器0组位地址区20H20H20H20H21H21H21H21H22H22H22H22H23H23H23H23H24H24H24H24H25H25H25H25H26H26H26H26H27H27H27H27H28H28H28H28H29H29H29H29H2AH2AH2AH2AH2BH2BH2BH2BH2CH2CH2CH2CH2DH2DH2DH2DH2EH2EH2EH2EH2FH2FH2FH2FH00H00H00H00H01H01H01H01H02H02H02H02H03H03H03H03H04H04H04H04H05H05H05H05H06H06H06H06H07H07H07H07H08H08H08H08H0FH0FH0FH0FH10H10H10H10H7FH7FH7FH7FH78H78H78H78H70H70H70H70H68H68H68H68H60H60H60H60H58H58H58H