没写完。
目录
- 51单片机应用从0开始
- 第一章单片机基本概念
- 特点
- 第二章 MCS-51单片机的指令系统
- 第5章MCS - 51单片机的中断
- 第6章 MCS - 51单片机内部定时器/ 计数器及串行接口
- 第三章 第一个单片机系统
51单片机应用从0开始
第一章单片机基本概念
定义
把中央处理器CPU(Central Processing Unit)、存储器(Memory)、定时器/计数器、中断、输入/输出I/O(Input/Output)接口电路等功能部件集成在一块集成电路芯片上的微型计算机。
单片机的功能部件
中央处理器CPU
计算机的核心部件 由运算器和控制器组成 主要完成计算机的运算和控制功能
1. 运算器——中央处理器CPU
- 算术逻辑单元ALU
- 累加器ACC(Accumulator)
- 寄存器B
- 程序状态字PSW(Programe State Word)
PSW👇
RS1、 RS0与片内工作寄存器组的对应关系👇
2. 控制器——中央处理器CPU
- 时钟电路
- (a)内部时钟电路
- (b)外部振荡源
- 复位电路
- (a)上电复位电路
- (b)开关复位电路
- 复位后内部寄存器状态
3. 指令寄存器和指令译码器——中央处理器CPU
指令寄存器中存放指令代码。CPU执行指令时, 由程序存储器中读取的指令代码送入指令存储器, 经译码器译码后由定时与控制电路发出相应的控制信号, 完成指令所指定的操作。
4. 程序计数器PC(Program Counter)
PC用于存放CPU下一条要执行的指令地址, 是一个 16 位的专用寄存器, 可寻址范围是0000H~0FFFFH共 64 KB。 程序中的每条指令存放在ROM区的某一单元, 并都有自己的存放地址。 CPU 要执行哪条指令时, 就把该条指令所在 的单元的地址送上地址总线。 在顺序执行程序中, 当PC的 内容被送到地址总线后, 会自动加 1, 即(PC)← (PC)+1, 又指向CPU下一条要执行的指令地址。
5. 堆栈指针SP(Stack Pointer)——中央处理器CPU
堆栈操作是在内存RAM区专门开辟出来的按照“先进后出”原则进行数据存取的一种工作方式, 主要用于子程序调用及返回和中断处理断点的保护及返回, 它在完成子程序嵌套和多重中断处理中是必不可少的。为保证逐级正确返回, 进入栈区的“断点”数据应遵循“先进后出”的原则。SP用 来指示堆栈所处的位置, 在进行操作之前, 先用指令给SP赋值, 以规定栈区在RAM区的起始地址(栈底层)。当数据推入栈 区后, SP的值也自动随之变化。MCS - 51 系统复位后, SP初始化为07H。
6. 数据指针寄存器DPTR——中央处理器CPU
数据指针DPTR是一个 16 位的专用寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。既可作为一个 16 位寄存器DPTR来处理, 也可作为两个独立的 8 位寄存器DPH和DPL来处理。
DPTR 主要用来存放 16 位地址, 当对 64 KB外部数据存储器空间寻址时, 作为间址寄存器用。在访问程序存储器时, 用作基址寄存器。
存储器
具有记忆功能的电子部件,分为程序存储器和数据存储器两类
程序存储器:存储程序、表格等相对固定的信息
数据存储器:存储程序运行期间所用到的数据信息
1. 程序存储器ROM
- 对于8051来说, 程序存储器(ROM)的内部地址为0000H~0FFFH, 共 4 KB; 外部地址为 1000H~FFFFH, 共 60 KB。 当程序计数器由内部 0FFFH执行到外部 1000H 时, 会自动跳转。 对于 8751 来说, 内部有 4 KB的EPROM, 将它作为内部程序存 储器; 8031 内部无程序存储器, 必须外接程序存储器。 8031 最多可外扩 64 KB程序存储器, 其中 6 个单元地址具有特殊用途, 是保留给系统使用的。0000H是系统的启动地址, 一般在该单元中存放一条绝对跳转指令。0003H、000BH、 000BH、001BH和 0023H对应 5 种中断源的中断服务入口地址。
2. 内部数据存储器
- MCS-51 单片机片内RAM的配置如下图所示。片内RAM为 256 字节, 地址范围为00H~FFH, 分为两大部分: 低 128 字节(00H~7FH)为真正的RAM区; 高 128 字节 (80H~FFH)为特殊功能寄存器区SFR。 在低 128 字节RAM中, 00H~1FH共 32 单元是 4 个通用
工作寄存器区。每一个区有 8 个通用寄存器R0~R7。寄存器和RAM地址对应关系如表 。
寄存器与RAM 地址对照表👇
RAM中的位寻址区地址表👇
SFR特殊功能寄存器地址表1👇
SFR特殊功能寄存器地址表2👇
SFR特殊功能寄存器地址表3👇
3. 外部数据存储器
外部数据存储器一般由静态RAM构成,其容量大小由用户根据需要而定, 最大可扩展到 64 KB RAM , 地址是 0000H~0FFFFH。 CPU通过MOVX指令访问外部数据存储器, 用间接寻址方式, R0、R1和 DPTR都可作间接寄存器。注意, 外部RAM和扩展的I/O接口是统一编址的, 所有的外扩I/O 口都要占用 64 KB中的地址单元。
并行输入/输出接口
CPU与相应的I/O设备(如: 键盘、鼠标、显示器、打印机等)进行信息交换的桥梁,
主要功能是协调、匹配CPU与外设的工作
1. P0口
P0 口内部一位结构图👇
2. P1、P2和P3口
P1、P2 和P3 口为准双向口, 在内部差别不大, 但使用功能有所不同。
P1口是用户专用 8 位准双向I/O口, 具有通用输入/输出功能, 每一位都能独立地设定为输入或输出。当有输出方式变为输入 方式时, 该位的锁存器必须写入“1”, 然后才能进入输入操作。
P2口是 8 位准双向I/O口。外接I/O设备时, 可作为扩展系统的地址总线, 输出高8位地址, 与P0 口一起组成 16 位地址总线。 对于 8031 而言, P2 口一般只作为地址总线使用, 而不作为I/O线 直接与外部设备相连。
P3口的第二功能👇
单片机的引脚及其功能👇
- (a) 管脚图;
- (b) 8031 引脚功能分类
串行口
实现单片机和其他设备之间的串行数据传送
即可作为全双工异步通用收发器使用,又可作为同步移位寄存器使用。
定时器/计数器
用于实现定时或计数功能
并以其定时或计数结果对操作对象进行控制
中断控制系统
为满足各种实时控制的需要而设置
是重要的输入输出方式
8051单片机中有5个中断源,可分为高级和低级两个优先级别。
时钟电路
主要由振荡器和分频器组成
为系统各工作部件提供时间基准
串口、中断、定时/计数是单片机重要的内部资源
为CPU控制外部设备、实现信息交流提供了强有力的支持
1. 机器周期和指令周期——单片机工作的基本时序
-(1)振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。
-(2)状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。
-(3)机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。
-(4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS 51 系统中, 有单周期指令、双周期指令和四周期指令。
2. MCS - 51 指令的取指/执行时序
3. 访问外部ROM和RAM的时序
读外部程序ROM时序👇
读外部数据RAM时序 👇
写外部数据RAM的时序👇
总线
计算机各工作部件之间传送信息的公共通道
按功能可分为
- 数据总线DB(Data Bus)
- 地址总线 AB(Address Bus)
- 控制总线 CB(Control Bus)
三类分别传送数据信息、地址信息和控制信息
总结_MCS -51单片机硬件结构&MCS - 51单片机的内部结构
特点
- 严格区分ROM和RAM
- 程序存储器(ROM)只存放程序、固定常数及数据表格
- 数据存储器(RAM)用作工作区及存放用户数据
- 小容量的数据存储器能以高速RAM形式集成在单片机内,以 加速单片机的执行速度
- 采用面向控制的指令系统
- 为满足控制的需要,单片机有强大的逻辑控制能力,特别是 具有很强的位处理能力。
- I/O引脚通常为多功能
- 引脚处于何种功能,可由指令来设置或由机器状态来区分
- 解决实际引脚数和需要的信号线的矛盾
- 外部扩展能力强
- 在内部的各种功能部件不能满足应用需要时,均可在外部进 行扩展
- (如扩展ROM、RAM,I/O接口,定时器/计数器, 中断系统等)
- 与许多通用的微机接口芯片兼容
- 给应用系统设计带来极大的方便和灵活性。
- 结构功能优化
- 能方便灵活地组成各种智能测控仪器仪表和设备
- 可靠性高
- 单片机芯片按工业测校环境要求设计
- 产品在120°C温度条件下经44小时老化处理,并通 过电气测试及最终质量检验
- 可以适应各种恶劣的工作环境。
第二章 MCS-51单片机的指令系统
1. 指令系统定义
- 指令是规定计算机完成一个特定功能的命令 • MCS-51单片机设有传送、算术运算、逻辑运算、控制转移、位操作共5 类111条指令
- 用户可以通过立即寻址、寄存器寻址、寄存器间接寻址、直接寻址、变址 寻址、相对寻址、位寻址等7种寻址方式规定操作数
- 深入理解不同寻址方式的特点及功能,全面掌握各条指令的格式、功能及 使用方法是灵活运用指令系统的关键。
2. 单片机指令
2.1MCS-51单片机指令——分类
2.1.1 按指令所占的字节数
- 单字节指令(49条)
- 双字节指令(46条)
- 三字节指令(16条)
2.1.2 按指令的执行时间
- 单周期指令(65条)
- 双周期指令(44条)
- 四周期指令(2条)
2.1.3 按指令的功能
- 数据传送类指令(29条