第2章单片机硬件结构2.1逻辑结构及信号引脚2.2内部存储器2.3并行输入/输出口电路2.4时钟电路与时序2.5系统复位与工作方式2.1.1结构框图组成2.1.2内部逻辑结构2.1.3信号引脚2.1逻辑结构及信号引脚2.1.180C51单片机结构框图外部事件计数80C51CPU振荡器和时序OSC64KB总线扩展控制器数据存储器256BRAM/SFR2×16位定时器/计数器可编程I/O程序存储器4KBFLASHROM可编程全双工串行口外中断内中断控制并行口串行通信外部时钟源2.1.180C51结构组成1、一个8位的微处理器CPU。用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。2、片内数据存储器(RAM128B/256B):用以存放程序、一些原始数据和表格。3、片内4kB程序存储器FlashROM(4KB):4、四个8位并行I/O(输入/输出)接口P0~P3:每个口可以用作输入,也可以用作输出。2.1.180C51结构组成每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。5、两个或三个定时/计数器:可实现单片机与单片机或其它微机之间串行通信。6、一个全双工UART的串行I/O口:但需外接晶振和电容。7、片内振荡器和时钟产生电路:8、五个中断源的中断控制系统。9、具有节电工作方式:休闲方式及掉电方式。P0驱动器P2驱动器P0锁存器P2锁存器RAM地址寄存器128BRAM4KBROMB寄存器暂存器1暂存器2ACCSP程序地址寄存器缓冲器PC增1PCDPTR中断、串行口和定时器PSWP1锁存器P1驱动器P3锁存器P3驱动器定时控制指令寄存器指令译码器OSCALUP0.0-P0.7P2.0-P2.7P3.0-P3.7P1.0-P1.7XTAL1XTAL2PSENALEEARESET80C51单片机内部逻辑结构运算器控制器存储器I/O接口1.中央处理器CPU运算部件以算术逻辑运算单元ALU为核心,包含累加器ACC、B寄存器、暂存器、标志寄存器PSW等部件,它能实现算术运算、逻辑运算、位运算、数据传输等处理。算术运算单元ALU是一个8位的运算器,它不仅可以完成8位二进制数据加、减、乘、除等基本的算术运算,还可以完成8位二进制数据逻辑“与”、“或”、“异或”、循环移位、求补、清零等逻辑运算,操作结果在PSW保存。ALU可以对一位二进制数据进行置位、清零、求反、测试转移及位逻辑“与”、“或”等处理。这对于控制方面很有用。2.1.280C51内部逻辑结构组成(1)运算电路(2)控制电路:控制部件是单片机的控制中心,它包括定时和控制电路、指令寄存器、指令译码器、程序计数器PC、PC加1寄存器、振荡电路、中断串行口定时器等。它先以振荡信号为基准产生CPU的时序,从ROM中取出指令到指令寄存器,然后在指令译码器中对指令进行译码,产生指令执行所需的各种控制信号,送到单片机内部的各功能部件,指挥各功能部件产生相应的操作,完成对应的功能。2.内部数据存储器(RAM)2.1.280C51内部逻辑结构组成80C51用户RAM均为128B,地址为00H~7FH。用于存放运算的中间结果、数据暂存以及数据缓冲等。这128B的RAM中有32个字节单元可指定为工作寄存器。片内还有21个特殊功能寄存器(SFR),它们同128字节RAM统一编址,地址为80H~FFH。后面详细介绍。3.内部程序存储器(ROM)2.1.280C51内部逻辑结构组成80C51用户RAM均为128B,地址为00H~7FH。用于存放运算的中间结果、数据暂存以及数据缓冲等。这128B的RAM中有32个字节单元可指定为工作寄存器。片内还有21个特殊功能寄存器(SFR),它们同128字节RAM统一编址,地址为80H~FFH。后面详细介绍。4.并行I/O接口2.1.280C51内部逻辑结构组成80C51有四个8位并行I/O接口P0~P3。它们都是双向端口,每个端口各有8条I/O线。P0-P3口四个锁存器同RAM统一编址,可作为SFR来寻址。5.定时器/计数器2个16位定时器/计数器,以结果对单片机控制。6.中断控制电路5个中断,2个外部中断,2个定时/计数中断,一个串口中断,分高低2个优先级别。图2-380C51的引脚结构2.1.380C51单片机引脚功能一、电源引脚:Vcc和Vss二、时钟电路引脚:XTAL1和XTAL2三、控制信号引脚RST、ALE、PSEN和EA四、I/O端口P0、P1、P2和P3一、电源引脚:Vcc和Vss1.Vcc(40脚):电源端,为+5V。2.Vss(20脚):接地端。二、时钟电路引脚:XTAL1和XTAL2XTAL2(18脚):接外部晶体和微调电容的一端;在片内它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。80C51正常工作时,该引脚应有脉冲信号输出。若需采用外部时钟电路时,该引脚悬空。XTAL1(19脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反向放大器的输入端,在采用外部时钟时,该引脚引入。三、控制信号引脚:RST、ALE、PSEN和EARST/VPD(9脚):RST:复位信号输入端,高电平有效。当此输入端保持两个机器周期的高电平时,就可以完成复位操作。VPD:RST引脚的第二功能,备用电源输入端。当主电源Vcc发生故障,降低到低电平规定值时,将+5V电源自动接入该引脚,为RAM提供备用电源,以保证RAM中的信息不丢失,使得复位后能继续正常运行。ALE/PROG(30脚):ALE:地址锁存允许信号端。正常工作时,该引脚以振荡频率的1/6固定输出正脉冲。CPU访问片外存储器时,该引脚输出信号作为锁存低8位地址的控制信号。它的负载能力为8个LS型TTL负载。PROG:是对片内带有4KBROM的80C51编程写入时的编程脉冲输入端。三、控制信号引脚:RST、ALE、PSEN和EAPSEN(29脚):程序存储器允许信号输出端。在访问片外ROM时,定时输出负脉冲作为读片外ROM的选通信号,接片外ROM的OE端。它的负载能力为8个LS型TTL负载。EA/Vpp(31脚):EA:外部程序存储器地址允许输入端。当该引脚接高电平时,CPU访问片内ROM并执行片内程序存储器中的指令,但当PC值超过0FFFH(片内ROM为4KB)时,将自动转向执行片外ROM中的程序。当该引脚接低电平时,CPU只访问片外ROM并执行外部程序存储器中的程序。Vpp:对80C51片内FlashROM固化编程时,编程电压输入端(12-21V)三、控制信号引脚:RST、ALE、PSEN和EA四、I/O端口P0、P1、P2和P3P0口:漏极开路8位准双向I/O口,每位能驱动8个LS型TTL负载。P0口可作为一个数据输入/输出口;在CPU访问片外存储器时,P0口为分时复用的低8位地址总线和8位数据总线。P1口:带内部上拉电阻的8位准双向I/O端口,每位能驱动4个LS型TTL负载。P2口:带内部上拉电阻的8位准双向I/O端口,每位能驱动4个LS型TTL负载。在CPU访问片外存储器时,它输出高8位地址。P3口:带内部上拉电阻的8位准双向I/O端口,每位能驱动4个LS型TTL负载。P3口除作为一般I/O口外,每个引脚都有第二功能。表2-1P3端口引脚与复用功能表口线替代的第二功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2INT0(外部中断0输入)P3.3INT1(外部中断1输入)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(写选通控制输出)P3.7RD(读选通控制输出)2.2.1内部数据存储器低128单元2.2.2内部数据存储器高128单元2.2.3堆栈操作2.2.4内部程序存储器2.2.5存储器结构特点2.2内部存储器80c51存储物理结构图片内程序存储器片外程序存储器片内数据存储器片外数据存储器80C51存储器程序存储器ROM数据存储器RAMMCS—51单片机存储器可以分成两大类:RAM,CPU在运行时能随时进行数据的写入和读出,但在关闭电源时,其所存储的信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈。ROM是一种写入信息后不易改写的存储器。断电后,ROM中的信息保留不变。用来存放固定的程序或数据,如系统监控程序、常数表格等。低128单元是单片机的真正RAM存储器。2.2.1内部数据存储器低128单元(1)寄存器区寄存器通常用于存放操作数及中间结果,由于它们的功能及使用不做预先规定,因此称为通用寄存器,在任一时刻,CPU只能占用其中的一组寄存器,并且把正在使用的那组寄存器称为当前寄存器。(2)位寻址区通常在使用中,“位”有两种表示方式。一是,以位地址的形式:如位寻址区的第一位是00H;二是以存储单元地址加位的形式表示,如20H.0。(3)用户RAM区在内部RAM低128单元中,通用寄存器占32个单元,位寻址区占去16个单元,还剩余80个单元,作为用户使用的一般RAM区。对于用户RAM区,只能以存储单元的形式来使用,其他没有任何规定和限制,但一般在应用中常把堆栈开辟在这个区域中。分为三个区域:1.寄存器区:4组寄存器(寄存器阵列),即4个工作寄存器0区~3区。每组8个寄存单元(每单元8位),以R0~R7作寄存器名,暂存运算数据和中间结果。字节地址为00H~1FH。2.位寻址区:字节地址为20H~2FH,既可作RAM,也可位操作。共有16个RAM单元,共128位,位地址为00H~7FH。3.用户RAM区:32个单元,地址为30H~7FH,在一般应用中常作堆栈区。字节地址位地址组RS1RS0R0R1R2R3R4R5R6R700000H01H02H03H04H05H06H07H10108H09H0AH0BH0CH0DH0EH0FH21010H11H12H13H14H15H16H17H31118H19H1AH1BH1CH1DH1EH1FH工作寄存器地址表由四组(32个)工作寄存器组成,每组8个寄存器(R0-R7),共占32个单元。通过程序状态寄存器PSW中RS1、RS0两位设定来选择CPU的当前工作寄存器组。复位时,第0组为当前的工作寄存器。若不需要四组,则其余可作为一般RAM单元。2.2.2内部数据存储器高128单元1.有21个特殊功能功能寄存器。2.地址分布在80H~FFH的RAM空间。3.有11个具有位寻址能力。11个SFR的字节地址正好能被8整除。4.位寻址只有83个位有效,中断允许控制寄存器(IE)2个位未定义,中断优先级控制寄存器(IP)3个位未定义。5.除21个定义的特殊寄存器外,其余的空闲单元不对用户使用。6.只能使用直接寻址方式,命令中可使用寄存器名称或地址。7.PC是一个特殊的16位寄存器,物理上独立,不在RAM之列,无地址空间。1概述特殊功能寄存器名称符号地址位地址与位名称D7D6D5D4D3D2D1D0P0口P080H8786858483828180堆栈指针SP81H数据指针低字节DPL82H数据指针高字节DPH83H定时/计数器控制TCON88HTF18FTR18ETF08DTR08CIE18BIT18AIE089IT088定时/计数器方式TMOD89HGATEC/TM1M0GATEC/TM1M0定时/计数器0低字节TL08AH定时/计数器0高字节TH08BH定时/计数器1低字节TL18CH定时/计数器1高字节TH18DHP1口P190H9796959493929190电源控制PCON87HSMODGF1GF0PDIDL串行口控制SCON98HSM09FSM19ESM09DREN9CTB89BRB89ATI99RI98串行口数据SBUF99HP2口P2A0HA7A6A5A4A3A2A1A0中断允许控制IEA8HEAAFET2ADESACET1ABEX1AAET0A9EX0A9P3口P3B0HB7B6B5B4B3B2B1B0中断优先级控制IPB8HPT2BDPSBCPT1B