由于采用改进型哈佛架构,51单片机具备独立的程序存储器ROM、数据存储器RAM,两者地址空间独立,且独立编址,如下是单片机的存储器结构图。
程序存储器ROM,用于存储用户代码,由于程序计数器PC是16位的,因此系统具备64kB寻址能力,地址空间为0x0000 ~ 0xFFFF,厂商在单片机内部实现一部分程序存储器,例如4kB、8kB,剩余的根据用户需要可以外部扩展。访问程序存储器使用MOVC A, @A + DPTR,MOVC A, @A + PC指令,只能进行读取访问,无法写入。
数据存储器分为RAM和外部RAM,两者地址空间独立,且独立编址。以子系列52为例,由于具备256B寻址能力,编址空间为0x00~0xFF。RAM除了临时存储用户数据外,还用于CPU通用寄存器,位寻址区,堆栈等。可以使用MOV指令对RAM进读写访问。外部RAM具备64kB寻址能力,用于用户临时数据存放,但是需要用户外部扩展。可以使用MOVX指令访问外部RAM,外部RAM访问由地址总线触发,数据总线读写,P0、P2用于生成16地址,P0还时分复用兼用于数据总线。
SFR属于特殊寄存器区,它既不属于ROM,也不属于RAM,地址空间为0x80~0xFF,只能以直接寻址方式访问,是片上外设的核心控制区域和输入输出的咽喉要塞。它是用来配置外设的工作参数的,属于外设寄存器,例如串口波特率、收发控制,定时器定时时间、模式,中断系统中断使能、优先级等。
学习一种单片机或者微控制器,首先了解它的架构、总线结构,然后熟悉存储器映射图、分区,最后详细研究它的片上外设例如UART、Timer、中断系统以及输入输出电路。根据自己的职业,工作类型,研究不同的层次。