1 CPU
51单片机是 8 位机,代表总线宽 8 位(严格的说,是指ALU单元一次能处理数据的宽度),数据总线。但地址总线是 16 位的。
在物理上有 3 个存储空间:片内、片外统一编址的 64KB 程序存储器, 64KB 片外数据存储器,256B 片内数据存储器。
程序、数据分开编址,是哈佛结构。
一般的存储器在物理结构上是一个存储空间,ROM、RAM可任意安排在其中,用同类指令访问,是冯诺依曼(普林斯顿)结构。
2 指令
8051 指令系统设计了不同数据传送指令区别不同逻辑空间;
MOVC:片内 / 片外ROM
MOV:访问片内RAM
MOV A, 20H
片外RAM与片外ROM空间相同,由指令的不同来区分。
MOVX:访问片外RAM
MOV R0, #20h
MOVX A, @R0
3. Flash



工作寄存器 Rn 实际上就是 RAM 单元的一部分
一般8051芯片,内部RAM只有128B,0x80-0xFF则是 SFR(CPU和外设在此)。
8052,内部RAM有256B,高位RAM 与 SFR 都在 0x80-0xFF,区别在于间接寻址与直接寻址,即寻址方式不同。
4. RAM
data:00-7F,直接寻址
bdata:20-2F,可位寻址
idata:00-FF(低 128 可直接寻址或间接寻址,高 128 间接寻址)
pdata:间接访问片外RAM低256B
xdata:用DPTR访问片外RAM 0000-FFFF
code:片内 64K ROM
访问片外 xdata 时,由于是 16 位寻址,所以需要 DPTR 寄存器来辅助。
普通51单片机中,引脚 EA 上的电平选择 低4k ROM 是用片内还是片外
5. SFR
21 个特殊功能寄存器:P0~P3,PSW,ACC,B,SP,DPL,DPH,PCON,TCON,TMOD,TL0,TH0,TL1,TH1,IE,IP,SCON,SBUF
PC 是一个 16 位计数器,是程序存储器中指令机器码的地址指针,是将要执行的下一条指令的机器码的地址。在物理上是独立于 SFR 的。
DPTR 是一个数据指针,
0000H单元放的是程序复位时PC,所以可以放跳转指令,如跳转到 main 所在的地址。中间则可以放向量表。
6. 关于指针的大小
uint8_t xdata * xdata a;
uint8_t idata * data a;
前面指定数据大小,后面指定指针存放的位置。
如果已经指定了数据的大小,那么指针的大小就已经确定了,如 xdata 是外部 64k,则指针的大小是 2 字节,data、idata 是内部,所以指针的大小占 1字节;
uint8_t * idata a;
这样未指定变量 a 的存储空间,则指针占 3字节,由编译器分配位置,第1个字节是存储区类型,第 2 ~ 3 字节是变量地址。

1万+

被折叠的 条评论
为什么被折叠?



