51单片机
一、结构组成
内部结构
- 8位CPU
- 1个片内振荡器和时钟电路
- 4KB片内程序存储(ROM)
- 256字节(2KB)片内数据存储(RAM)
- 2个16位定时/计数器(T/C)
- 可寻址64KB 程序存储空间 + 64KB数据存储空间的总线计数器
- 4个8位双向并行IO口
- 1个全双工串行口
- 5个中断源
控制器
- 程序计数器PC:16位,存放下一条执行指令的首地址(这个地址指向的是程序存储空间 ,0000H~0FFFH为片内 的4KB,超出时便转向片外 )
系统复位之后自动赋值为0000H。 - 指令寄存器IR:8位
- 指令译码器ID:对指令寄存器中的指令进行译码,转变为电信号
- 数据指针DPTR:16位,由两个8位寄存器(DPH、DPL)拼装而成,
配合相关指令实现对最高64KB片外RAM和ROM的访问
只要是16位的,必然会涉及到对片外或片内RAM或ROM的访问,这也是为什么片尾RAM和ROM是64KB的原因
运算器
-
累加器ACC:8位,存放操作数或中间结果
-
通用寄存器B:8位,配合ACC进行乘法或除法运算,也可以当作普通寄存器
-
算数逻辑部件ALU:进行运算,结果状态传给PSW
-
程序状态字寄存器PSW :8位,存放运算过程的各种状态信息
其中:
CY(PSW7):进位标志位,硬件控制,1表示进位AC(PSW6) :辅助进位标志位,如果运算结果的低四位向高四位发生进位,则硬件置1
F0(PSW5):用户标志位,用户自定义作用
RS1、RS0 (PSW4,PSW3):工作寄存器组指针。
OV(PSW2) :溢出标志位,溢出由硬件置1F1(PSW1):用户标志位,同F0;
P(PSW0) :奇偶标志位
引脚
51单片机共40个引脚
- 电源:V~CC~,接+5V,V~SS~,接地
- 外接晶振:XTAL1(19),XTAL(18)
- 复位 /备用电源:RST/V~PD~:RST的使用方法是给与足够长时间的脉冲信号
- A L E / P R O G ‾ ALE/\overline {PROG} ALE/PROG:地址锁存使能输出 /编程脉冲输入:
ALE :如果你想输出片外ROM地址,那么给这个引脚高电平可以让你将第八位地址所存到P~0~口。 - P S E N ‾ \overline {PSEN} PSEN :29脚,如果你从片外ROM读取指令,这个引脚将会在每个机器周期出现两次负跳变脉冲,用作片外ROM芯片的使能信号
- 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
- 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(00H~7FH)**区为**普通寄存器区域**,高**128B(80H~FFH)为特殊功能寄存器区域,但是只有21字节有定义
低128B RAM区
- 在低128B 的RAM区域中,具有00H~1F共32个单元(字节),分成四组,每组有8个单元(字节)作为寄存器,受到PSW中的RS1和RS2来选定其中的分组。复位后默认第0组。
- **20H~2FH**地址区域可以按**字节存取或者按位存取**。按位编址为00H~7FH
- 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/时钟频率
晶振频率f~OSC~,与其他的周期关系:
时钟周期 = 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 和地址输出 两种功能,他是真正的双向口
总结:P1~P3无需外接上拉电阻,P0需要外接上拉电阻,P0~P3都可以作为准双向口;当需要外接存储器时,P2可作为地址线接口,P0可作为地址/数据线复用接口,此时它是真正的双向口