§2-1MCS-51单片机的组成与结构§2-2MCS-51单片机的引脚及其功能§2-3MCS-51单片机的存储器配置§2-4振荡器与时钟电路及CPU时序§2-5并行I/O端口§2-6MCS-51单片机基本工作系统的组成●教学目的:掌握MCS-51单片机内部的结构及其组成,了解CPU、存储器组织结构、并行输入输出口结构,以及51单片机的引脚信号及CPU时序。通过学习,应对MCS-51单片机的硬件结构以及各部分的组成原理有基本了解,建立起单片机的整体印象,为后续学习打下基础。第二章MCS-51单片机结构原理§2-1MCS-51单片机的组成与结构8位中央处理单元(CPU)128B/256B的数据存储器RAM4KB/8KB的片内ROM/EPROM4个8位并行I/O口P0-P32个定时器/计数器5个中断源1个全双工的UART(通用异步接收、发送器)片内振荡与时钟产生电路1、中央处理单元CPU(8位)用于数据处理、位操作(位测试、置位、复位)2、只读存储器ROM(4KB或8KB)用于永久性存储应用程序,掩膜ROM、EPROM、EEPROM3、随机存取存取器RAM(128B/256B)用于程序运行中存储工作变量和数据用作系统总线、扩展外存、I/O接口芯片4、并行输入/输出口I/O(32线)5、串行输入/输出口UART(二线)串行通信、扩展I/O接口芯片6、定时/计数器T/C(16位增量可编程)它与CPU之间各自独立工作,当它计数满时向CPU中断7、时钟电路fosc分为内部振荡器、外接振荡电路五源中断、两级优先,可编程进行控制。8、中断系统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.7XTAL1XTAL2PSENALEEARESET8051单片机内部结构图返回运算器控制器存储器I/O接口中央处理器(CPU)包含运算器和控制器两部分(1)8位的ALU:(2)8位累加器ACC(A):(3)8位寄存器B:(4)8位程序状态寄存器PSW:(5)布尔处理器:(6)2个8位暂存器:运算器可对4位(半字节),8位(单字节)和16位(双字节)数据进行操作,数据来自两个暂存器。累加器,它是最繁忙的8位特殊功能寄存器,用A表示,ALU的运算结果存在此处。8位程序状态字寄存器,用于存放指令执行后的状态信息,供程序查询和判别。布尔操作器8位寄存器,在乘除运算时,用来存放另一个操作数,并存放一部分结果。(1)程序计数器(PC)(2)指令寄存器(IR)(3)指令译码器(ID)(4)振荡器及定时与控制电路控制器中央处理器(CPU)—控制器由两个8位的计数器(PCL,PCH)组成,PC存储将要执行的下一条指令的地址,16位可容纳的最大数值为65535,为64KB,因此,MCS-51可寻址64KB的程序存储器。改变PC内的值,就可改变程序执行的方向。16位程序计数器-PC由PC内容指定的ROM地址单元中取出的指令,经指令寄存器送至指令译码器进行译码,进而CPU产生相应的控制信号,执行指令所规定的操作。指令存储器及指令译码器MCS-51片内有振荡器OSC,通过单片机的XTAL1,XTAL2连接片外的石英晶体及两个频率微调电容,产生单片机工作所需要的基本时钟—节拍。振荡器及定时控制电路01p.71p.SSV1XTAL2XTALRD73p/.WR63p/.1T53p/.0T43p/.1INT33p/.0INT23p/.TXD13p/.RXD03p/.RST02p.72p.CCV00p.70p.PSENPROGALE/EAVpp/1820181917161514131211109212840393229303180511、电源管脚:Vcc,Vss2、时钟电路管脚:XTAL1,XTAL23、控制信号脚:RST/VPD,ALE/PROGPSEN及Vpp/EA4、I/O管脚P0,P1,P2,P3§2-2MCS-51单片机的引脚及其功能电源管脚Vcc:电源端,为5V,允许电源有偏差;GND(VSS):地。注:为了防止电源脉冲对单片机的影响,一般在VCC和GND之间接上一个1uF的电容。时钟电路管脚XTAL1:芯片内部反相放大器输入端,使用外部振荡器时需接地。XTAL2:芯片内部反相放大器输出端,使用外部振荡时接振荡器输入的信号。XTAL2XTAL1内部振荡方式XTAL2XTAL1外部振荡器外部振荡方式控制线ALE/PROGALE:地址锁存信号端,频率为晶体振荡器的1/6正脉冲信号。当CPU访问片外扩展存储器时,该信号作为锁存低8位地址的控制信号。PROG:当片内有EPROM时,该管脚提供编程写入时的编程脉冲信号输入端。控制管脚RST/VPDRST:复位信号输入端,高电平有效。保持两个机器周期以上,并变为低电平,单片机开始从0000地址执行,即可完成单片机复位。单片机复位不改变片内RAM的值。VPD:备用电源。+5VRESET10uF控制管脚PSENPSEN:程序存储器允许输出信号端。在访问片外程序存储器时,CPU控制该端输出负脉冲作为外部存储器的选通信号,允许CPU读出EPROM中被选中单元中的指令码。该管脚一般连程序存储器的选通信号端(OE)。控制管脚EA/VppEA:外部程序存储器地址允许输入端/固化编程电压输入端。程序存储器允许输出信号端。当EA接高时,前4KB或8KB程序在单片机内,当EA接地时,所有程序均在外存储器。Vpp:对单片机内程序存储器编程时施加的高电平输入端。§2-3MCS-51单片机的存储器配置计算机存储结构:哈佛结构:程序存储与数据存储分开——单片机冯.诺依曼结构:程序与数据存储在一起——通用计算机单片机的存储器结构(ROM+RAM):ROM:常用于存放程序和需要长时间存放的数据,掉电不丢失;RAM:随时可读可写的存储器,掉电后数据立即丢失。00HFFH1、单片机的存储器结构采用哈佛结构,存在4个物理上相互独立的存储器空间:片内程序存储器片外程序存储器片内数据存储器片外数据存储器0FFFH0000H片内4KROM0000HFFFFH片外64KROM片外64KRAM(I/O)0000HFFFFHSFR片内RAM7FH80H0FFFHEA=1EA=0访问片内与片外RAM靠指令区分MOV与MOVX2、单片机的程序存储器常用单片机的程序存储器容量:型号ROMRAM8031/320128B/256B8051/524KB/8KB128B/256B8751/524KB/8KBEPROM128B/256B89X51/524KB/8KBFLASH128B/256BW5164KB256B随着单片机制造技术的发展,现在内部ROM有64KB,RAM达几KB的都有。在进行单片机应用系统开发时,应注意选择,能不扩展的尽量不扩展。(片内128B不包含SFR区)单片机的程序存储器单片机的程序存储器的应用:上电复位时,PC=0000;程序存储器有保留单元:入口单元地址预留目的存储单元范围0000H复位后初始化引导程序00H-02H0003H外部中断0服务程序(INT0)03H-0AH000BH定时器/计数器0溢出中断服务程序0BH-12H0013H外部中断1服务程序(INT0)13H-1AH001BH定时器/计数器1溢出中断服务程序1BH-22H0023H串行口中断服务程序23H-2AH002BH定时器/计数器2溢出中断服务程序2BH-3、单片机的数据存储器单片机的数据存储器最大寻址为64KB,地址为:0000—FFFFH片内为128B的数据存储器,片外为64KB,地址有重叠,靠指令区分00H07H08H0FH10H17H18H1FH2FH30H20H7FH用户RAM区位寻址区3组2组1组0组通用工作寄存器R0—R7低128B的数据RAM高128B的特殊寄存器区SFR区80HFFH单片机的数据存储器数据存储器中的堆栈:堆栈用于保护中断时程序的断点地址,以便中断返回时程序的继续执行;堆栈的特点是先进后出,后进先出;堆栈的指令是:PUSH(压入)和POP(弹出)堆栈寄存器叫SP,其内部的数值叫栈底,初始值为07H,一般应进行设置到50H或60H。MOVSP,#60HPUSHA...........PUSHB………07H60H61H7FH07HSP60HSPA61HSPB单片机的数据存储器低128B的分区:工作寄存器区,R0-R7,共四组,由PSW中的RS1,RS0决定;位寻址区20H-2FH,位地址为:00H-7FH;一般数据存储区;堆栈区(由用户进行设置,初始值为07H)高128B的分区:特殊功能寄存器(SFR):ACC,B,PSW,P0,P1,P2,P3,IP,IE,TCON,SCON—可位寻址(11个)SP,DPTR,TMOD,TH0,TL0,TH1,TL1,SBUF,PCON—不可位寻址(共9个)特殊功能寄存器(SFR)的初始值除P0,P1,P2,P3为FFH,SP为07外,其余均为00H。单片机的特殊功能寄存器(SFR)D7D6D5D4D3D2D1D0CYACF0RS1RS0OV/PPSWPSW—(ProgramStateWord)程序状态字;CY—进位位标志位或借位位标志位;AC—半字节进位位标志位或半字节借位标志位;F0—用户标志位;RS1,RS0—工作寄存器组选择位,00-0区,01-1区,10-2区,11-3区;OV—溢出标志位,当进行补码运算时,如有溢出,超出-128~127范围时置位;/—未定位位,在52中为F1,用户标志位;P—奇偶标志位,每条指令执行完后,跟踪指示A内的1的个数,如为奇数,则P=1,否则为0,常用于校验串行通信中的数据传送是否出错。§2-4振荡器与时钟电路及CPU时序1.振荡器与时钟电路:单片机内部的增益反向放大器通过XTAL1、XTAL2两个引脚外接的反馈石英晶体元件构成自激振荡器。时钟发生器把振荡器的信号进行二分频,向CPU提供了两相时钟脉冲信号P1和P2。时钟信号的周期称为S,它是振荡周期的2倍,在每个时钟周期S的前半周期,P1有效,后半周期,P2有效。§2-4振荡器与时钟电路及CPU时序(续)2.机器周期和指令周期:单片机的一个机器周期由6个S状态周期组成,即S1-S6,每个状态又持续两个振荡周期,即P1和P2两拍,故一个机器周期包含12个振荡周期,即S1P1,S1P2,S2,P1,S2P2,…S6P1,S6P2共12个状态拍。若采用12MHz晶振,则每个机器周期为1us。单片机的指令长度分为1B、2B和3B三种,按CPU执行每条指令的时间分为单周期指令、双周期指令和四周期指令三种。每一条指令的执行包括取指、执指两个阶段。在每个机器周期内ALE两次有效,第一次出现在S1P2和S2P1之期间,第二次出现在S4P2和S5P1期间。§2-4振荡器与时钟电路及CPU时序(续)3.取指、执指的时序:对于单字节单周期指令,只需要进行一次读指令操作。在第两个ALE有效时,由于PC没有加1,读出来的还是原指令,是一次无效操作。对于双字节单周期指令,ALE的两次操作都是有效的,第一次读出的是指令的第一个字节,第二次读出的是第二个字节。对于单字节双周期指令,在两个机器周期内进行四次读指令操作,但只有第一次是有效的,其余三次都是无效的。对于MOVX类单字节双周期指令,CPU先从程序存储器中读取指令,然后执行对外部RAM的读写操作。在第一机器周期内,第一次读指令操作有效,第二次无效;在第二个机器周期内,执行对外部RAM的读写操作,与ALE无关。因此,不产生ALE信号,也就不产生读指令操作。§2-5并行输入/输出端口8051单片机有四个8位的I/O端口,分别称为P0,P1,P2,P3,每个端口均为准双向口,共占32只引脚,每个端口可作为8位