第2章MCS-51单片机结构及原理2.1MCS-51单片机结构2.2MCS-51的存储器结构2.3单片机的复位、时钟与时序2.4并行I/O口2.1MCS-51单片机结构2.2.1MCS-51的基本结构时钟电路总线控制CPUROM/EPROM/FLASH4K字节RAM128字节SFR21个定时/计数器2个中断系统5中断源、2优先级串行口全双工2个并行口4个RSTEAALEPSENXTAL2XTAL1P0P1P2P3VCCVSS串行通信接口全双工1个ROMTXDRXD中断系统并行通信接口4×8bit定时/计数器n×16bitRAM时钟电路CPU总线控制MCS-51单片机主要由以下功能部件组成:(1)8位微处理器(CPU);(2)128B数据存储器(RAM),片外可扩展到64KB;(3)4KB程序存储器(ROM/FLASH),片外可扩展到64KB;(4)21个特殊功能寄存器(SFR);(5)4个8位并行I/O口(P0口、P1口、P2口、P3口);(6)1个全双工异步串行口(UART);(7)2个16位定时器/计数器(T0,T1);(8)5个中断源的中断系统(X0,T0,X1,T1,S)。MCS-51的内部结构128×8RAMRAM地址寄存器P3口P1口P2口P0口锁存器锁存器锁存器锁存器中断控制定时/计数器串行I/O口SP寄存器B累加器A暂存器1暂存器2程序状态字PSW指令寄存器IR指令译码器ID数据指针DPTR缓冲器程序计数器PC增1程序地址寄存器AR定时与控制4K×8ROMALUCPU51的微处理器运算器P20CPU算术/逻辑部件ALU(ArithmeticLogicUnit)累加器ACC(Accumulator)程序状态字寄存器PSW(ProgramStatusWord)暂存寄存器寄存器B控制器P19定时控制与条件转移逻辑电路程序计数器PC指令寄存器IR指令译码器IDALU实现8位数据的算数运算、逻辑运算和位运算。1、运算器累加器A用于向ALU提供操作数和存放运算的结果。·最常用的一个专用寄存器·大部分单操作数指令的操作数取自A·很多双操作数指令的一个操作数取自A·算术运算和逻辑运算的结果放在A或AB对中·指令系统采用A作为累加器的标识符例:INCA;执行A中的内容加1操作ADDA,#data;执行A(A)+#data操作寄存器B·8位寄存器·与累加器A配合使用,一般用于乘除法运算·寄存器B存放第二操作数、乘积的高8位字节除法的余数部分例:MULAB;执行(A)×(B)BADIVAB;执行(A)/(B)商A余B作一RAM单元用B余B程序状态字PSW·8位寄存器,存放ALU运算结果的特征CYD7D6D5D4D3D2D1D0ACF0RS1RS0OVP格式如下:进/借位标志CY(PSW.7)加法运算时,如果D7有进位,则CY=1,否则CY=0减法运算时,如果D7有借位,则CY=1,否则CY=0PSWD7••••••D0CY辅助进位标志AC(PSW.6)8位加法运算时,如果低半字节的D3向D4有进位,则AC=1,否则AC=08位减法运算时,如果低半字节的D3向D4有借位,则AC=1,否则AC=0标志F0(PSW.5)·由用户定义·可用软件来使它置“1”、或清“0”·可由软件测试F0来控制程序流向D7~D4D3~D0AC工作寄存器区选择位RS1、RS0(PSW.4、PSW.3)通过软件来改变RS1、RS0的组合,以确定当前工作寄存器区。工作寄存器区地址RS1RS02区10H~17H103区18H~1FH110区00H~0007H1区08H~010FHPSW.4PSW.3用布尔操作来改变OV=C6C7+溢出标志OV(PSW.2)·作为有符号数加、减法时由硬件置位或清除,以指示运算结果是否溢出·执行加/减法指令时,用Ci表示i位向i+1有进/借位a)第6位向第7位有进/借位,而第7位不向CY进/借位时b)第6位不向第7位进/借位,而第7位向CY有进/借位时OV=1,否则OV=0·若OV=1,意味着加/减法的结果已超出了一个字节有符号补码数所表示的范围(-128~+127)a)OV=10b)OV=01D7D6D5D4D3D2D1D0例:01010110(+86)(正)00110010(+50)(正)00010001此时C6´=1、C7´=0则D7D6D5D4D3D2D1D010010110(-106)(负)110111001(+136)(正)(-197)(负)OV=C6´C7´=1++此时C6´=0、C7´=1则OV=C6´C7´=1++符号位110100101(-91)(负)Cy奇偶标志P(PSW.0)·每个指令周期都由硬件置位或清零,以表示累加器A中值为“1”的位数的奇偶性·该标志可用于串行数据通讯,验证数据传输的可靠性P=1A中1的个数为奇数0A中1的个数为偶数程序计数器PC2、控制器16位专用寄存器,寻址范围64KB此时的程序是顺序执行的通电时自动复位,运行时可手动复位,复位后,PC的内容自动清零用来存放下一条指令地址。CPU取指令时,将PC内容经地址总线送到程序存储器,从该地址单元取回指令,译码并执行;同时,PC自动加1如果程序需要转移,可在程序中安排转移或条件转移指令PC0000H系统的启动地址指令寄存器IR保存当前正在执行的一条指令。定时与控制控制取指令、执行指令、存取操作数或运算结果等操作,向其它部件发出各种微操作控制信号,协调各部件的工作。PC管理程序执行顺序的过程:74H08H24H04H02H22H00H78H74HPC0000HPCMOVA,#08HADDA,#04HLJMP2200HMOVR0,#74H0004H0003H0002H0001H0000H2200H2201H0005H0006H0007H存储器······××指令寄存器74HPC0001H08HPC0002H24HPC0003H04HPC0004H02HPC22HPC00HPC0005H0006H0007HPC2200H78HPC2201H74HPC2202H2202HMOVA,#08HADDA,#04HLJMP2200HMOVR0,#74H下一条指令RST/VPDP3.1P3.2P3.3P3.4P3.5P3.6P3.7P3.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P2.6P2.5P2.4P2.3P2.2P2.1P2.0P2.7P0.1P0.2P0.3P0.4P0.5P0.6P0.7P0.0RXDTXDINT0INT1T0WRRDT1XTAL2XTAL1VssVccEA/VPPALE/PROGPSEN803180518751403938373635343332313029282726252423222112345678910111213141516171819202.2.2MCS-51的引脚及功能51单片机40脚Vcc,Vss2XTAL1,XTAL22RESET1EA/Vpp1ALE/PROG1PSEN1P0.0—P0.78P1.0—P1.78P2.0—P2.78P3.0—P3.78I/O口线P0、P1、P2、P3共32条电源Vcc、Vss共2条时钟XTAL1、XTAL2共2条控制口线PSEN、ALE、EA/VPP、RESET共4条80C51的40只引脚管脚的功能(1)电源与时钟Vcc:接+5V电源端Vss:接地端XTAL1:片内振荡电路输入端XTAL2:片内振荡电路输出端时钟电路:内时钟方式外时钟方式复位信号:高电平复位CPU,低电平CPU工作EA/VPPALEPSEN片外取指信号(片外程序存储器读)输出端低电平有效。通过P0口读回指令或常数。控制的是片外程序存储器名称功能RESET地址锁存信号。ALE低电平时,P0口出现数据信息;ALE高电平时,P0口出现地址信息。⑵控制引脚程序存储器选择信号EA=0时,选外部ROM;1,地址小于4k时,选内部ROM地址大于4k时,选外部ROMP0口是数据/地址复用口用下降沿锁存P0口的低8位地址到外部锁存器一、存储器的划分方法8051单片机与一般微机的存储器配置方式很不相同。一般微机通常只有一个逻辑空间,可以随意安排ROM或RAM。访问存储器时,同一地址对应唯一的存储单元,可以是ROM也可以是RAM,并用同类访问指令。而MCS-51则不同。2.2MCS-51的存储器结构计算机的两种不同结构——普林斯顿结构:中央处理器(CPU)输入/输出部件存储器逻辑部件(ALU)控制部件计算机的两种不同结构——哈佛结构:中央处理器(CPU)输入/输出部件程序存储器逻辑部件(ALU)控制部件数据存储器片内程序存储器4KB(ROM0000H~0FFFH)片内数据存储器128B(RAM00H~7FH)仅用来访问外部程序存储器和外部数据存储器存储器数据存储器程序存储器对单片机来讲,ROM和RAM的寻址机构和寻址方式是分开的。ROM、EPROME2ROM或FLASHRAM按地址访问的一维线性(逻辑)空间按地址访问的一维线性(逻辑)空间PSENWRRD单片机常驻普林斯顿结构哈佛结构普林斯顿结构一、程序存储器4KB地址:0000H~0FFFHEA=1内部外部EA=00000H0FFFH0FFFH0000H1000H外部FFFFH4KB接地64KB64KB在程序存储器中,有6个单元具有特殊功能:0003H:外部中断0入口。000BH:定时器0溢出中断入口。0013H:外部中断1入口。001BH:定时器1溢出中断入口。0023H:串行口中断入口。0000H:8051复位后,PC=0000H,即程序从0000H开始执行指令。使用时,通常在这些入口地址处存放一条绝对跳转指令,使程序跳转到用户安排的中断程序起始地址,或者从0000H起始地址跳转到用户设计的初始程序上。一、程序存储器4KB地址:0000H~0FFFH低128BRAM区(00H—7FH)00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区通用RAM区位寻址区工作寄存器区SFR分布在80H-FFH其中83个位可位寻址80HFFH所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器MCS-51128字节高128BRAM区(80H—FFH)二、数据存储器0FH08H17H10H2FH20H7FH30H0区(8字节)1区(8字节)2区(8字节)3区(8字节)位寻址区数据缓冲区80个字节RAM只能按字节寻址16个字节分为128个RAM位可按位亦可按字节寻址四个工作寄存器区R7R0~R7R0~R7R0~R7R0~00H1FH07H00H1FH18H布尔处理器每个区,8个工作寄存器R0~R7亦可作普通RAM使用1、低128BRAM区⑴工作寄存器区32个RAM单元共4个区,每个区8个通用工作寄存器R0~R7工作寄存器区地址RS1RS02区10H~17H103区18H~1FH110区00H~0007H1区08H~010FH“区”的选择由程序状态字PSW中的RS1和RS0确定⑵位寻址区(16个RAM单元VS11个SFR)·字节地址:20H~2FH·16个RAM字节共128个RAM位·位地址:00H~7FH·11个SFR中的83位具有位寻址功能·布尔处理机数据存储器的主要组成部分直接地址能被8所整除的布尔处理机位寻址区83个SFR位128个RAM位共211位构成其中5位无定义00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区7F7E7D7C7B7A797827H22H21H20H26H24H25H23H28H2FH单元字节地址07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A39384746454443424140位地址位地址(3)用户RAM区(数据缓冲区)共