2020年2月26日星期三9时26分6秒第2章MCS-51单片机的硬件结构2020年2月26日星期三9时26分6秒MCS-51单片机组成MCS-51单片机的组成:1.8位CPU2.片内ROM/EPROM、RAM3.片内并行I/O接口片内全双工串行I/O口4.片内16位定时器/计数器5.片内中断处理系统不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。2020年2月26日星期三9时26分7秒片内结构如图所示:2020年2月26日星期三9时26分6秒2020年2月26日星期三9时26分7秒CPU运算部件控制部件BRAMP0口P2口ROM(EPROM)串行口C/T中断系统SFRP1口8P3口888XTAL1XTAL2PSENALEEARESETVccVss按功能可分成8个部件,通过片内单一总线连接起来1.微处理器2.数据存储器3.程序存储器4.I/O口5.串行口6.定时/计数器7.中断系统8.特殊功能寄存器控制方式:SFR对各功能部件集中控制片内总线2020年2月26日星期三9时26分6秒介绍各功能部件:1.CPU(微处理器)2.数据存储器(RAM)片内为128个字节(52子系列的为256个字节)3.程序存储器(ROM/EPROM)8031:无此部件;8051:4K字节ROM;8751:4K字节EPROM;89C51/89C52/89C55:4K/8K/20K字节闪存。4.中断系统5.定时器/计数器2020年2月26日星期三9时26分6秒6.串行口1个全双工的异步串行口,具有四种工作方式。7.P1口、P2口、P3口、P0口为4个并行8位I/O口。8.特殊功能寄存器(SFR)共有21个,是一个具有特殊功能的RAM区。2020年2月26日星期三9时26分6秒MCS-51的CPU由运算器和控制器所构成运算器对操作数进行算术、逻辑运算和位操作。1.算术逻辑运算单元ALU2.累加器A使用最频繁的寄存器,可写为Acc。A的作用:(1)是ALU单元的输入之一,又是运算结果存放单元。(2)数据传送大多都通过累加器A。(3)A的进位标志Cy同时又是位处理机的位累加器。2020年2月26日星期三9时26分6秒3.寄存器B为执行乘法和除法操作设置的。在不执行乘、除的情况下,可当作一个普通寄存器来使用。2020年2月26日星期三9时26分6秒4.程序状态字寄存器PSW(1)Cy(PSW.7)进位标志位(2)Ac(PSW.6)辅助进位标志位(3)F0(PSW.5)标志位由用户使用的一个状态标志位。(4)RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制位1和位0。2020年2月26日星期三9时26分6秒工作寄存器区的选择18~1FH3区1110~17H2区1008~0FH1区0100~07H0区00R0~R7地址寄存器组RS1RS018~1FH3区1110~17H2区1008~0FH1区0100~07H0区00R0~R7地址寄存器组RS1RS02020年2月26日星期三9时26分6秒(5)OV(PSW.2)溢出标志位指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂,将在第3章介绍。(6)PSW.1位:保留位,未用(7)P(PSW.0)奇偶标志位P=1,A中“1”的个数为奇数P=0,A中“1”的个数为偶数2020年2月26日星期三9时26分6秒5.堆栈指针SP指示出堆栈顶部在内部RAM块中的位置复位后,SP中的内容为07H。(1)保护断点(2)现场保护堆栈向上生长满堆栈2020年2月26日星期三9时26分6秒6.数据指针DPTR16位特殊功能寄存器,高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。2020年2月26日星期三9时26分6秒控制器1.程序计数器PC(ProgramCounter)存放下一条要执行的指令在程序存储器中的地址。基本工作方式:(1)程序计数器自动加1(2)执行有条件或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。(3)执行子程序调用或中断调用时完成下列操作:①PC的当前值保护②将子程序入口地址或中断向量的地址送入PC。2020年2月26日星期三9时26分7秒2.指令寄存器IR、指令译码器及控制逻辑电路2020年2月26日星期三9时26分6秒MCS-51存储器的结构普林斯顿结构:程序和数据共用一个存储器逻辑空间,统一编址。哈佛结构:程序与数据分为两个独立存储器逻辑空间,分开编址。2020年2月26日星期三9时26分6秒哈佛(Har-vard)结构存储器空间可划分为5类:1.程序存储器空间8031无内部程序存储器。2.内部数据存储器空间3.特殊功能寄存器4.位地址空间211个可寻址位。5.外部数据寄存器空间片外可扩展64K字节RAM。2020年2月26日星期三9时26分7秒MCS-51单片机存储器空间分配2020年2月26日星期三9时26分6秒程序存储器存放应用程序和表格之类的固定常数。分为片内和片外两部分,由EA*引脚上所接电平确定程序存储器中的0000H地址是系统程序的启动地址2020年2月26日星期三9时26分6秒内部数据存储器共128个字节,字节地址为00H~7FH。00H~1FH:32个单元,是4组通用工作寄存器区20H~2FH:16个单元,可进行128位的位寻址30H~7FH:用户RAM区,只能进行字节寻址,用作数据缓冲区以及堆栈区。2020年2月26日星期三9时26分6秒位地址空间211个(128个+83个)寻址位。位地址范围为:00H~FFH。内部RAM的可寻址位128个(字节地址20H~2FH)见表2-3(P24)。特殊功能寄存器SFR为83个可寻址位,见表2-4(P24)。2020年2月26日星期三9时26分6秒表2-3内部的可寻址位及位地址2020年2月26日星期三9时26分6秒特殊功能寄存器(SFR)CPU对各种功能部件的控制采用特殊功能寄存器集中控制方式,共21个。有的SFR可进行位寻址,其字节地址的末位是0H或8H。表2-2SFR的名称及其分布2020年2月26日星期三9时26分6秒SFR中的某些寄存器1.堆栈指针SP指示出堆栈顶部在内部RAM块中的位置复位后,SP中的内容为07H。(1)保护断点(2)现场保护堆栈向上生长2.数据指针DPTR16位特殊功能寄存器,高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。3.I/O端口P0~P3P0~P3分别为I/O端口P0~P3的锁存器。2020年2月26日星期三9时26分6秒4.寄存器B为执行乘法和除法操作设置的。在不执行乘、除的情况下,可当作一个普通寄存器来使用。5.串行数据缓冲器SBUF存放欲发送或已接收的数据,一个字节地址,物理上是由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。6.定时器/计数器两个16位定时器/计数器T1和T0,各由两个独立的8位寄存器组成:TH1、TL1、TH0、TL0,只能字节寻址,但不能把T1或T0当作一个16位寄存器来寻址访问。2020年2月26日星期三9时26分6秒表2-4SFR中的位地址分布2020年2月26日星期三9时26分6秒外部数据存储器最多可外扩64K字节的RAM或I/O。几点注意:(1)地址的重叠性程序存储器与数据存储器全部64K字节地址空间重叠(2)程序存储器与数据存储器在使用上是严格区分的(3)位地址空间共有两个区域(4)片外与片内数据存储器由指令来区分(5)片外数据存储区中,RAM与I/O端口统一编址。所有外围I/O端口的地址均占用RAM地址单元,使用与访问外部数据存储器相同的传送指令。多路开关1)功能:用于控制选通I/O方式还是地址/数据输出方式2)方式控制:由内部控制信号产生输入锁存器两个输入缓冲器(BUF1和BUF2)推拉式I/O驱动器并行I/O端口共有4个8位双向I/O口,共32口线。每位均有自己的锁存器(SFR),输出驱动器和输入缓冲器。P0口位图内部结构BUF2BUF15、P0R2为读引脚信号,执行“MOVA,P0”时该信号有效6、读引脚(端口)时,输出锁存器应为“1”说明:1、当控制信号为0时,P0口做双向I/O口,为漏极开路(三态)2、控制信号为1时,P0口为地址/数据复用总线(用于口扩展)3、P0W为端口输出写信号,用于锁存输出状态4、P0R1为读锁存器信号,执行“ANLP0,#0FH”时该信号有效QQDCVcc控制AD0P0R1P0R2D0P0W图1、P0口内部结构读锁存器读引脚锁存器内部总线写锁存器地址/数据P00多路开关102020年2月26日星期三9时26分7秒P1口内部结构VccP10QQDCP1R1P1R2D0P1WR*图2、P1口内部结构•P1口内部结构如图2所示•输出部分有内部上拉电阻R*约为20K。•其他部分与P0端口使用相类似(读引脚时先写入1)。写数据读端口P10VccP118051K1D1R1图2.1、P1口应用2020年2月26日星期三9时26分7秒P2口内部结构2、当控制信号为1时P2口输出地址信息,此时单片机完成外部的取指操作或对外部数据存储器16位地址的读写操作。3、当P2口作为普通I/O口使用时用法和P1口类似。说明:1、P2可以作为通用的I/O,也可以作为高8位地址输出。QQDCVcc控制地址P2R1P2R2D0P2WP20图3、P2口内部结构R*2020年2月26日星期三9时26分7秒2.5.4P3口内部结构说明:1、做普通端口使用时,第二功能应为“1”。QQDCVcc变异输出P3R1P3R2D0P3WP30图3、P3口内部结构R*变异输入2、使用第二功能时,输出端口锁存器应为“1”。3、变异功能()P3.0TXDP3.4T0P3.1RXDP3.5T1P3.2INT0P3.6WRP3.3INT1P3.7RD1输出I/O口1读I/O口112020年2月26日星期三9时26分6秒2.5.5P0~P3端口功能总结使用中应注意的问题:P0~P3口都是并行I/O口,但P0口和P2口还可用来构建数据总线和地址总线,所以电路中有一个MUX,进行转换。而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。只有P0口是一个真正的双向口,P1~P3口都是准双向口。原因:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;否则应处于隔离状态。为此,P0口的输出缓冲器应为三态门。P3口具有第二功能。因此在P3口电路增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。2020年2月26日星期三9时26分6秒MCS-51的引脚40只引脚双列直插封装(DIP)。2020年2月26日星期三9时26分6秒2020年2月26日星期三9时26分6秒44只引脚方形封装方式(4只无用)2020年2月26日星期三9时26分6秒40只引脚按功能分为3类:(1)电源及时钟引脚:Vcc、Vss;XTAL1、XTAL2。(2)控制引脚:PSEN*、EA*、ALE、RESET(即RST)。(3)I/O口引脚:P0、P1、P2、P3,为4个8位I/O口的外部引脚。2.2.1电源及时钟引脚1.电源引脚(1)Vcc(40脚):+5V电源;(2)Vss(20脚):接地。2020年2月26日星期三9时26分6秒2.时钟引脚(1)XTAL1(19脚):如果采用外接晶体振荡器时,此引脚应接地。(2)XTAL2(18脚):接外部晶体的另一端。2.2.2控制引脚提供控制信号,有的引脚还具有复用功能。(1)RST/VPD(9脚):复位与备用电源。(2)ALE/PROG*(30脚):第一功能ALE为地址锁存允许,可驱动8个LS型TTL负载。PROG*为本引脚的第二功能。为编程脉冲输入端。2020年2月26日星期三9时26分6秒(3)PSEN*(29脚):外部程序存储器的读选通信号。可以驱动8个LS型TTL负载。(4)EA*/VPP(EnableAddress/VoltagePu