51单片机结构组成相关知识点

51单片机

一、结构组成

内部结构

  • 8位CPU
  • 1个片内振荡器和时钟电路
  • 4KB片内程序存储(ROM)
  • 256字节(2KB)片内数据存储(RAM)
  • 2个16位定时/计数器(T/C)
  • 可寻址64KB程序存储空间 + 64KB数据存储空间的总线计数器
  • 4个8位双向并行IO口
  • 1个全双工串行口
  • 5个中断源

控制器

  1. 程序计数器PC:16位,存放下一条执行指令的首地址(这个地址指向的是程序存储空间0000H~0FFFH为片内的4KB,超出时便转向片外
    系统复位之后自动赋值为0000H。
  2. 指令寄存器IR:8位
  3. 指令译码器ID:对指令寄存器中的指令进行译码,转变为电信号
  4. 数据指针DPTR:16位,由两个8位寄存器(DPH、DPL)拼装而成,
    配合相关指令实现对最高64KB片外RAM和ROM的访问

只要是16位的,必然会涉及到对片外或片内RAM或ROM的访问,这也是为什么片尾RAM和ROM是64KB的原因

运算器

  1. 累加器ACC:8位,存放操作数或中间结果

  2. 通用寄存器B:8位,配合ACC进行乘法或除法运算,也可以当作普通寄存器

  3. 算数逻辑部件ALU:进行运算,结果状态传给PSW

  4. 程序状态字寄存器PSW:8位,存放运算过程的各种状态信息
    其中:
    CY(PSW7):进位标志位,硬件控制,1表示进位

    AC(PSW6):辅助进位标志位,如果运算结果的低四位向高四位发生进位,则硬件置1
    F0(PSW5):用户标志位,用户自定义作用
    RS1、RS0(PSW4,PSW3):工作寄存器组指针。
    OV(PSW2):溢出标志位,溢出由硬件置1
    F1(PSW1):用户标志位,同F0;
    P(PSW0)奇偶标志位

引脚

51单片机共40个引脚

  1. 电源:VCC,接+5V,VSS,接地
  2. 外接晶振:XTAL1(19),XTAL(18)
  3. 复位/备用电源:RST/VPD:RST的使用方法是给与足够长时间的脉冲信号
  4. A L E / P R O G ‾ ALE/\overline {PROG} ALE/PROG:地址锁存使能输出/编程脉冲输入:
    ALE:如果你想输出片外ROM地址,那么给这个引脚高电平可以让你将第八位地址所存到P0口。
  5. P S E N ‾ \overline {PSEN} PSEN :29脚,如果你从片外ROM读取指令,这个引脚将会在每个机器周期出现两次负跳变脉冲,用作片外ROM芯片的使能信号
  6. E A ‾ / V p p \overline {EA}/V_{pp} EA/Vpp : 31脚,当 E A ‾ = 1 \overline {EA} = 1 EA=1或者悬空时,CPU从片内ROM读指令。当PC超出4KB范围时会自动访问片外ROM。如果 E A ‾ = 0 \overline {EA} = 0 EA=0或接地时,单片机只会访问片外ROM
  7. IO共32引脚,P0~P3都可以用来输出,P0和P2可以用来输出地址,P3具有第二功能

二、单片机的存储结构

存储器划分方法

51单片机物理上共4个存储空间,分别是:

  • 片内ROM: E A ‾ = 1 \overline {EA} = 1 EA=1时访问,共4KB
  • 片内RAM:共256B
  • 片外ROM: E A ‾ = 0 \overline {EA} = 0 EA=0时访问,加上片外的60KB共64KB
  • 片外RAM:共64KB

逻辑上只有三个,因为EA引脚控制了ROM的片内外寻址,也就是说片内外的ROM逻辑上是一个。

程序存储器

指的是ROM,弄清 E A ‾ \overline {EA} EA在什么状态下可以访问片内和片外的ROM。

E A ‾ = 1 \overline {EA} = 1 EA=1的时候,只能访问片内, E A ‾ = 0 \overline {EA} = 0 EA=0时既可以访问片内也可以访问片外。

数据存储器

指的是RAM,类似于缓存,存放中间变量,标志位等。
片内的RAM只有256B,其中低128B(00H7FH)**区为**普通寄存器区域**,高**128B(80HFFH)特殊功能寄存器区域,但是只有21字节有定义

低128B RAM区
  • 在低128B 的RAM区域中,具有00H~1F共32个单元(字节),分成四组,每组有8个单元(字节)作为寄存器,受到PSW中的RS1和RS2来选定其中的分组。复位后默认第0组。
  • **20H2FH**地址区域可以按**字节存取或者按位存取**。按位编址为00H7FH
  • 30H~7FH的80字节单元为用户RAM区,只能按字节存取
高128B RAM区

字节地址为80H~FFH。

三、单片机的复位与时序

单片机复位

复位条件:RST引脚出现满足复位时间的高电平。

复位后,除了SP的值回复为07H以及所有IO变为FFH,其他寄存器有意义的值全部变为0

单片机时序
  • 单片机执行指令的过程:取指令、分析指令、执行指令
  • 时钟信号的两种产生方式:内部时钟,外部时钟方式。
    内部时钟:
    需要XTAL1和XTAL2两个引脚连接震荡电路;
    C1和C2取值一般为30pF;
    震荡频率越高,时钟频率越高,运行速度越快;
    外部时钟:多个单片机一起工作的时候,如果想要保证所有单片机时钟频率一致
    需要连接XTAL2到公用的外部震荡信号上,XTAL1接地。
时钟周期

P表示,最小的时序单位,其与晶振频率f的关系如下:
P = 1 / f P = 1/f P=1/f

状态周期

一个状态周期由两个时钟周期组成:
1 状态周期 = P 1 + P 2 1状态周期 = P1 + P2 1状态周期=P1+P2

机器周期

一个机器周期由6个状态周期组成。
1 机器周期 = 1 / 时钟频率 1机器周期 = 1/时钟频率 1机器周期=1/时钟频率
晶振频率fOSC,与其他的周期关系:
时钟周期 = 1 / f O S C 状态周期 = 2 / f O S C 机器周期 = 12 / f O S C 指令周期 = 1   4 机器周期 时钟周期 = 1/f_{OSC}\\ 状态周期 = 2/f{OSC}\\ 机器周期 = 12/f_{OSC}\\ 指令周期 = 1 ~ 4机器周期 时钟周期=1/fOSC状态周期=2/fOSC机器周期=12/fOSC指令周期=1 4机器周期

指令周期

执行一条指令所需要的时间称为指令周期。1个指令周期由1~4个机器周期组成,指令周期是最大的时序单位。

D触发器

分为两种:正边沿D触发器、负边沿D触发器

正边沿D触发器

当CLK出现正脉冲时会进行D(输入端)和 Q ‾ / Q \overline {Q}/Q Q/Q (输出端)的同步。

负边沿D触发器

与正边沿相反。

四、并行IO口

P1

  • 内部总线的电平可以由P1口输出,也可以所存在P1口中
  • P1口如果想要作为输入口需要先写1,作为输出口无条件,因此被称作准双向口

P3

  • 当“第二输出功能”端保持在“1”状态时,P3口处在通用IO状态,称作准双向口
  • 锁存器Q保持“1”时,P3口工作在第二功能口状态

其各个引脚第二功能如下:


P3.0 RXD 串行数据输入
P3.1 TXD 串行数据输出
P3.2 I\N\T\0\ 外部中断0
P3.3 I\N\T\1\ 外部中断1
P3.4 T0 定时器/计数器0的外部中断
P3.5 T1 定时器/计数器1的外部中断
P3.6 W\R\ 外部数据储存器的写远通信号,W\R=0时远通
P3.7 R\D\ 外部数据储存器的读选通信号,R\D=0时选通


P0

  • P0口也是准双向口
  • 作为通用IO时,必须外接上拉电阻
  • P0口连接外部存储器时,P0工作在地址/数据分时复用方式,此时为真正双向口

P2

  • P2口可以实现通用IO地址输出两种功能,他是真正的双向口

总结:P1P3无需外接上拉电阻,P0需要外接上拉电阻,P0P3都可以作为准双向口;当需要外接存储器时,P2可作为地址线接口,P0可作为地址/数据线复用接口,此时它是真正的双向口