首先, 寄存器(通常意义上的"内存") 和 特殊功能寄存器, 不是同一个概念. 也不是同一个东西。
特殊功能寄存器并不是“内存”, 之所以说 在 0x80~0xff 这个直接地址,是给你一个 访问路径, 让你可以用 MOV指令 对0x80 这个直接地址的读写操作,作用到 P0 总线上,并不是说这个地址的背后,是一个“内存”,你可以把这个直接地址当作是一个电话号码,当特殊寄存器列表没有 列出最终目标,比如 0xf1~0xff 时,它极大的概率是空号。对这些地址的读写是一个无效操作。即无法保存你写入的值,也无法取回你以为已经写入的值。
而正因为给了特殊寄存器“占用”了0x80~0xff的直接地址。 因此,有256字节标准寄存器的51系列单片机对于高位的 80~ff 地址的“内存”,只能使用间接地址@R1方式访问。
|