单片机结构 | 人体结构 | 详情 |
---|---|---|
CPU | 大脑负责思考的部分 | 包括运算器和控制器 |
存储器 | 大脑负责记忆的部分 | 包括数据存储器和程序存储器 |
时钟与震荡器 | 相当于心脏 | 频率与性能相关 |
IO接口 | 类似神经反射中的感受器和效应器 | 包括串行和并行接口 |
总线 | 人体的神经和血管 | 包括数据总线,地址总线,控制总线 |
下面根据这个框图对每个部分的结构进行讲解
CPU内部的结构可以大致分成3个部分:运算器,控制器,和一些通用寄存器
组成部件 | 描述 |
---|---|
算术逻辑单元ALU | 进行算术运算,逻辑运算 |
累加器ACC(8位) | 需要ALU处理的数据和运算结果多经过A |
寄存器B(8位) | 与A配合执行乘除运算,也可以作为通用寄存器 |
程序状态字PSW(8位) | 存放ALU运算过程的标志转台CY,AC,F0,RS1,RS0,OV,F1,P |
工作寄存器R0-R7(8位)
暂时存储运算数据和中间结果,有四个工作寄存器区,通过PSW.4(RS0)和PSW.3(RS1)来切换,选用
组成部分 | 描述 |
---|---|
时钟电路 | 分内部时钟电路和外部震荡源 |
复位电路 | 使电路恢复称起始状态 |
指令寄存器 | 存放指令代码 |
指令译码器 | 对指令进行译码,译码之后有定时和控制电路发出相应的控制信号 |
程序计数器PC(16位) | PC用来存放CPU下一条要执行的指令地址,PC内容送到地址总线,CPU读取指令,PC自动加1,复位时PC=0000H |
堆栈指针SP(8位) | MCS-51的堆栈设在片内RAM,用于子程序调用及返回和中断处理断点的保护和返回。 数据入栈出栈时,SP自动加减1,其内容始终为栈顶地址,复位时SP=07H |
数据指针DPTR(16位) | 存放片外存储器地址,作为片外存储器的指针,可以分为两个八位寄存器DPH,DPL使用 |
单片机的存储器可以分为三个部分:程序存储器(64KB),内部数据存储器(256B),外部数据存储器(64KB)
(存储器及其大小的理解,以程序存储器为例子,程序存储器就相当于一栋大楼,这栋大楼一共有64K( 2 16 2^{16} 216)个房间,每个房间可以存放一个字节(8个2进制数)的数据,相当于有8个床位(有人是1,没人是0)
对于8051来说, 程序存储器(ROM)的内部地址为 0000H~0FFFH, 共 4 KB; 外部地址为 1000H ~ FFFFH, 共 60 KB。 当程序计数器由内部 0FFFH执行到外部 1000H 时, 会自动跳转。
按字节存放,64K的地址,存储空间是64KB
也有一些没有内部程序存储器,如8031.
补充说明:ROM(read only menmory),这种存储单元不会因为掉电而消失,ROM有MASKROM.PROM,EPROM,EEPROM,FLASH,当需要需要频繁的重写,就要采用EEPROM,或是FLASH,因为FLASH擦写速度快,所以一般采用FLASH。
从00H到0FFH一共256个字节,低128个字节(00H-7FH)为整整的RAM区,高128字节(80H-FFH)为特殊功能寄存器SFR
在低128个字节RAM中,00H-1FH共32个单元是4个通用工作寄存器区。每一个区有8个通用寄存器R0-R7,地址对应关系如下
可以当成一般的开放区使用,也可以通过地址映射表进行位操作
这部分区域“痛快的”开放给用户使用,用户直接对该区域进行写入与读取。
各个特殊功能寄存器在内存(80H-0FFH)的分布如下,但是要注意,这部分寄存器是分散地分布,但是没有被占用的地址一般不会用作一般开放区,因为这些地址有可能不存在。
位符号 | 名称 | 功能 |
---|---|---|
CY | 进位标志位 | 最高位向前进位借位时,CY为1 |
AC | 辅助进位标志位 | 用于十进制调整,低四位向高四位进位借位时,AC为1 |
F0 | 用户标志位 | 可以用指令置位,复位 |
RS1、RS0 | 寄存器组选择位 | 选择寄存器组 |
OV | 溢出标志位 | 带符号加减运算,结果溢出,OV为1,乘积超过255,OV为1,出发无意义,OV为1 |
/ | 无定义 | |
P | 奇偶标志位 | 累加器A中为奇数,P为1 |
外部数据存储器一般由静态RAM构成,其容量大小由用户根据需要而定, 最大可扩展到 64 KB RAM , 地址是 0000H~0FFFFH。
CPU通过MOVX指令访问外部数据存储器, 用间接寻址方式, R0、R1和 DPTR都可作间接寄存器。
注意, 外部RAM和扩展的I/O接口是统一编址的, 所有的外扩I/O 口都要占用 64 KB中的地址单元。
·MCS-51单片机有4个双向8位并行的IO口;P0-P3
·每一个口都是一个8位的锁存器
·复位后状态都是1
三态指0,1,高阻态
既可以作为并行IO口,也可以作为数据总线口
当外部拓展了存储器或是IO端口,则只能作数据总线和地址总线低8位
引脚 | 功能 |
---|---|
端口线(4*8) | 前面的IO端口介绍 |
电源线 | VCC电源线,VSS接地线 |
控制线(6条) | 进行一些控制 |
符号 | 名称 |
---|---|
A L E / P R O G ‾ ALE/\overline{PROG} ALE/PROG | 地址锁存允许/编程线 |
E A ‾ / V P P \overline{EA}/VPP EA/VPP | 允许访问片外存储器/变成电源线 |
P S E N ‾ \overline{PSEN} PSEN | 片外ROM选通线 |
R S T / V P D RST/VPD RST/VPD | 复位/备用电源线 |
X T A L 1 / X T A L 2 XTAL1/XTAL2 XTAL1/XTAL2 | 片内震荡电路输入输出线 |