一、51单片机的硬件结构1. 硬件结构框图说明:○1微处理器(CPU):51单片机含一个8位CPU,与通用的CPU功能基本相同,含运算器和控制器,不仅可以字节处理,还可以位处理。
例如:未处理、查表、状态检测、中断处理等。
○2数据存储器(RAM):51为128B,52为256B;片外最大可扩展到64K。
○3程序存储器(ROM/EPROM):8031没有,8051有4K的ROM,8751有4K的EPROM;片外可扩展至64K。
○4中断系统:5个中断源,2级优先权。
○5定时器/计数器:2个16位定时/计数器,四种工作方式。
○6串行口:1个全双工串行口,四种工作方式。
可进行串口通信,扩展并行I/O口,多机通信等。
○7P1、P2、P3、P0口:四个8位并行I/O口。
○8特殊功能寄存器(SFR):共21个,对片内部件进行管理、控制、监视;实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
2. 引脚排列(1)电源及时钟引脚○1电源引脚:Vcc(40脚)解5V电源、Vss(20脚)接地。
○2时钟引脚:两个始终引脚XTAL1、XTAL2外接晶振,或接晶体与片内反相放大器构成振荡器。
XTAL1(19脚):内部反相放大器的输入端。
若接晶振则应接地;XTAL2(18脚):内部反相放大器的输出端。
若采用外部时钟振荡器,该引脚接收时钟振荡信号。
(2)控制引脚○1RST/Vpd(9脚):复位信号输入,高电平有效。
单片机运行时,此脚持续2个机器周期(24个时钟振荡周期)的高电平,就可复位。
平时应为0.5V低电平;Vpd为第二功能,备用电源输入端。
○2:ALE为地址锁存允许,正常工作时,ALE不断输出正脉冲信号。
当访问外部存储器时,ALE输出信号的负跳变沿用作低8位地址的锁存信号;PROG’为编程脉冲输入端。
○3PSEN’(Program Strobe Enable,29脚):程序存储器允许输出控制端。
低电平是外部程序存储器选通。
○4EA’/Vpp(Enable Address/Voltage Pulse of Programing,31脚):EA’为内外程序存储器选择控制端。
当为高电平时,访问内部程序存储器,超出0FFFH时,自动跳变为低电平访问外部程序存储器;当保持为低电平时,只访问外部程序存储器。
Vpp为第二功能,用于施加较高编程电压。
(2)I/O口引脚○1P0口:8位双向三态I/O口;地址总线低8位及数据总线分时复用。
○2P1口:8位准口双向I/O;可驱动4个TTL负载。
○3P2口:8位准口双向I/O;与地址总线高8位复用。
○4P3口:8位准口双向I/O;双功能复用口。
○5注意:除P0口外,其他三组I/O口内部均有固定上拉电阻,只有P0口有“悬空”状态。
3.微处理器(1) 运算器○1算术逻辑运算单元ALU:可对8位变量进行“与”“或”“异或”运算、循环、求补和清零等基本操作;还可进行加减乘除运算;还有一般微计算机ALU不具备的位操作。
○2累加器A:是一个8位累加器,在CPU中使用最频繁,或叫Acc。
其作用为:是ALU单元的输入之一,因而是数据处理源之一;也是ALU运算结果的存放单元。
○3寄存器B:为执行乘法和除法而设置的。
乘法时,输入为A、B,结果放在BA寄存器对中,B 中放高8位,A中放低8位。
除法时,A为被除数,B为除数,商存在A中,余数存在B中。
不执行乘除法时,可作为普通寄存器使用。
○4程序状态字寄存器PSW:Cy(PSW.7):进位标志,可有软、硬件置位或清零Ac(PSW.6):辅助进位标志,硬件F0(PSW.5):标志位,用户使用,可用软件置1或清0RS1、RS0(PSW.4、PSW.3):4组工作寄存器区选择控制为1和0;用来选择4组工作寄存器去中的哪一组为当前工作寄存器区;4组寄存器如下:OV(PSW.2):溢出标志位,有硬件置1或清0PSW.1位:保留位,未用P(PSW.0):奇偶标志位,表示累加器A中的‘1’的位数,P=1,A中“1”的位数为奇数P=0,A中“1”的个数为偶数在串口通信中用于奇偶校验。
(2) 控制器程序执行顺序:程序存储器中取指令——>指令寄存器——>指令译码器——>定时控制逻辑电路——>产生各种定时信号和控制信号——>各部件执行○1程序计数器PC(Program Counter):MCS-51单片机中PC为16位,决定的其直接寻址范围为2^16=65536=64k;其基本工作方式有以下几种:程序计数器自动加1。
执行有条件或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生改变。
在执行调用子程序指令或响应中断时,单片机自动完成如下操作:PC的现行值,即下一条将要执行的指令的地址,即断点值,自动送入堆栈;将子程序的入口地址或中断向量的地址送入PC,程序流向发生变化,执行子程序或中断子程序。
子程序或中断子程序执行完毕,遇到返回指令RET或RET1时,将栈顶的断点值弹回到PC中,程序的流程又返回到原来的地方,继续执行。
○2指令寄存器IR、指令译码器及控制逻辑电路:IR用来存放指令操作码的专用寄存器。
条件转移逻辑电路主要用来控制程序的分支转移。
2. 存储器的结构(1) 程序存储器(ROM):程序存储器的某些单元被固定用于中断源的终端服务程序的入口地址。
如下:MCS-51单片机复位后,程序存储器PC的内容为0000H,故系统必须从0000H单元开始取指令,执行程序。
程序存贮器中的0000H地址是系统程序的启动地址。
一般在该单元存放一条绝对他跳转指令,跳向用户设计的主程序的起始地址。
(2)内部数据存储器(RAM)00H~1FH的32个单元为4组通用工作寄存器区,每区含8个8位寄存器,编号为R7~R0.用户可以通过指令改变PSW中的RS1、RS0来切换当前的工作寄存器区。
20H~2FH的16个单元可进行共128位的位寻址,这些单元构成了1位处理机的存储空间。
也可进行字节寻址。
30H~7FH的单元为用户RAM区,只能进行字节寻址。
(3)特殊功能寄存器(SFR-Special Function Register)SFR实质上是一些具有特殊功能的片内RAM单元,字节地址为80H~FFH。
特殊功能寄存器的总数为21个,离散分布在该区域中,其中有些SFR还可以进行位寻址。
○1堆栈指针SP:堆栈是在片内RAM中开辟出来的一个区域,其主要是为子程序调用和中断操作而设立的。
其具体功能有两个:保护断点和保护现场,也可用于数据的临时存放。
堆栈指针SP 是一个8位的特殊功能寄存器,其内容指示出堆栈顶在内部RAM中的位置。
他可指向内部RAM00H~7FH的任何单元。
单片机复位后,SP中的内容为07H,即指向07H的RAM单元,使得堆栈事实上有08H单元开始,考虑到08H~1FH单元分别属于1~3组的工作寄存器区,若在程序设计中要用到这些区,则最好把SP值改为1FH或更大的值。
当一个字节数据压入堆栈,SP自动加1;当一个字节数据弹出堆栈后,SP自动减1。
.○2数据指针DPTR:是一个16位的SFR,其高位字节寄存器用DPH表示,低位字节寄存器用DPL 表示;DPTR即可作为一16位寄存器DPTR来用,也可以作为两个独立的8位寄存器DPH和DPL 来用。
○3端口P0~P3:每一个8位I/O口都为RAM的一个单元(8位)。
○4串行数据缓冲器SBUF:用于存放欲发送或已接收的数据,在SFR块中只有一个字节地址,但实际上是有两个独立的寄存器组成,一个发送缓冲器,一个接收缓冲器。
○5定时器/计数器:两个16位定时器/计数器T1和T0,它们各有两个8位寄存器组成,公子哥独立寄存器:TH1、TL1、TH0、TL0可字节寻址,不能当做16位寄存器寻址。
(4)位地址空间在RAM和SFR中共有211个寻址位的位地址,位地址范围在00H~FFH内,其中00H~7FH这128个位处于内部RAM字节地址20H~2FH单元中,如下图:其余83个可寻址位分布在SFR中,有11个可位寻址寄存器,共有位地址88个,其中5个未用,其余83个位的位地址分布于片内字节地址80H~FFH内,其最低的位地址等于其字节地址,并且其字节地址的末位都为0H或8H。
如下图:(5)外部数据寄存器:RAM扩展最大64K。
使用存储器应注意以下几点:○1地址的重叠性:内部与外部存储器地址会重叠,ROM和RAM回地址重叠,通过EA’来控制。
○2ROM和RAM在使用上严格区分,不同操作指令不得混用。
○3位地址空间共有两个区域,即片内RAM中的20H~2FH的128位,以及SFR中的位地址。
○4堆栈指针SP的内容可任设,复位时SP=07H。
○5片外数据存储器中,数据区与用户外部扩展的I/O口统一编址。
51单片机的存储器结构如下:3. 并行I/O端口(1) P0口字节地址为80H,位地址为80H~87H。
每位包含:○1一个数据输出锁存器;○2两个三态的数据输入缓冲器;○3一个多路转接开关MUX,一个输入来自锁存器,另一来自“地址/数据”。
输入转接有“控制”信号控制,传送系统的低8位地址和8位数据;○4数据输出的驱动和控制电路;○5多数情况下都是作为单片机系统的地址/数据线使用;注意:做输入口使用时,应区分读引脚和读端口(或叫做读锁存器)(2)P1口○1P1口只传数据,没有MUX;○2准双向I/O口,无三态;○3字节地址90H,位地址为90H~97H;(3)P2口○1字节地址为A0H,位地址为A0H~A7H;○2为系统提供高位地址,有MUX;○3准双向I/O口,无三态;(4)P2口○1字节地址为B0H,为地址为B0H~B7H;○2P3口无论是作为输入口使用还是第二功能信号的输入,输出电路中的锁存器输出和“第二功能输出信号”线都应保持高电平。
(5)P0~P3口电路小结○1P0~P3口都是并行I/O口,都可以作数据的输入和输出;○2P0口和P2口通常还用来构建系统的数据总线和地址总线,所以都有MUX;○3P0口可作为“地址/数据”复用线使用,需传送系统的低8位地址和8位数据,因此MUX的一个输入端为“地址/数据”信号。
而P2口仅作为高地址线使用,不涉及数据,所以MUX的一个输入信号为“地址”。
○44组口中,只有P0口是真正的双向口,其他三组都是准双向口,原因是他们的输出缓冲器不是三态的。
4.时钟电路与时序(1)时钟电路○1内部时钟方式:C1、C2的取值通常为30pF;晶振范围在1.2MHz~12MHz之间,晶振频率越高系统时钟频率越高,单片机运行速度越快。
晶振常选用6MHz或12MHz,高速单片机时钟频率可达40MHz。
○2外部时钟方式:用于多片单片机同步,要求高电平持续时间大于20μS,一般低于12MHz的方波;由于XTAL2的逻辑电平不是TTL的,故要接一个4.7K~10K的上拉电阻。