51单片机系列学习笔记
1.51的结构
2. 51引脚与工作方式
3. 51单片机的寻址方式和指令系统
1 单片机简介
2 部件详细介绍
2.1 CPU
包含运算部件 控制部件
2.1.1 运算部件
B寄存器称为辅助累加器 完成乘除运算
标志寄存器PSW
C:(carry)进位借位标志位 进位借位时置1 否则清零
AC:辅助进位或借位标志位 当低四位向高四位有进位或借位时置1 否则清零
OV:溢出标志位
P:偶校验标志位 当A寄存器中的数为奇数时置1 否则清零
F0:用户标志位 用户自己使用的
RS0和RS1共同作用用来选择工作寄存器的
2.1.2 控制部件
- 程序指针PC 16位寄存器 CPU通过PC 从程序存储区(ROM)取指令
- 堆栈指针SP 8位寄存器 用于堆栈空间的操作
- 数据指针DPTR 16位寄存器 对片外64KB数据存储空间(RAM)的操作 分为高八位DPH 和低八位DPL
2.2 程序存储器
正好对应前文片内4KB ROM
片外扩展 由EA引脚决定 低电平使能
一般不片外扩展
有七个特殊地址 默认的 我们无法改变
但是单片机复位时 都是从0000H开始执行程序 就会执行后面的特殊程序 怎么办呢?
可以在0000H 单元处放一个绝对转移指令 直接转移到后面的某一个地方(一般我们用0100H) 从而避开这些特殊地址
2.3 数据存储器
两个块地址重叠了?会有影响吗?
不会 因为访问指令不同
2.3.1 随机存储块
2.3.1.1 工作寄存器组区
2.3.1.2 位寻址区
这里让我想到了stm32中的位扩展技术
2.3.1.3 一般RAM区
一般ram区中还有堆栈区
入栈时 先将sp+1->sp 再将数据放入堆栈区 所以说堆栈实际从08H开始的
出栈时 先将数据移出堆栈区 再将sp-1->sp
注意顺序
但是07H是工作寄存器组区 所以 一般通过对SP赋值,可以使堆栈区设定在RAM中的某一区域(一般在一般RAM区 这段连续 适合堆栈生长)