芯片的硬件结构:

1 寄存器vs锁存器 ALU附近的存储资源基本全部都是寄存器,锁存器基本只有一处地方: 地址锁存器 (74HC573)实现地址总线和数据总线的分时复用,这个模块不在芯片封装之内,而是外围的独立芯片。51单片机访问外部存储,不论是程序空间还是数据空间都需要经过地址锁存器。

2 CPU内部主要寄存器及用途

  1. A(accumulator)累加器:运算前作为操作数输入,运算后保存运算结果。累加器可以直接通过数据总线,从ram,I/O获取数据
  2. 数据寄存器(DR) cpu内部工作寄存器,是内部总线和外部数据总线的缓冲寄存器。用来缓冲外来数据。
  3. 寄存器组(R) …… 整理到一半发现,不能用理解一般微处理器结构的思维去理解8051!

8051的存储

存储哲学:程序和数据分立,程序存在ROM/数据存在寄存器/RAM

数据存储:

内部存储是芯片内的ram,外部存储是需要接线连接的ram,两者拥有不同的地址空间。两者访问机制也不同,内部ram使用MOV命令,走的是内部数据总线。 外部ram,芯片外接,需要通过p0/p2作为地址总线。

DPTR 数据指针:位于SFR的82H,83H,一共16位,分为DPL,DPH,在访问外部RAM(MOVX),访问外部程序存储(MOVC)使用。 如果需要访问外部RAM:

MOVX A,@DPTR
MOVX A,@R0

DPTR很好理解,R0属实有点迷惑了 实际上,第二条指令,访问的地址R0只提供低八位,高八位由P2口的锁存值决定。为什么这样设计呢?:

**这样的设计访问更快,指令更短,用于访问固定页内数据

如果需要访问外部ROM:

MOVC A,@A+DPTR
MOVC A,@A+PC

振荡周期,机器周期,指令周期 振荡周期:外部晶振的周期,系统基本时序单位 机器周期:单片机完成一个基本操作所需的时间 指令周期:执行一条指令所需的时间,是机器周期的整数倍 Tmachine=12ToscT_{machine} = 12*T_{osc} 指令周期=N机器周期(N=1,2,4)指令周期 = N机器周期 (N = 1,2,4)