需要一些帮助来理解 PIC 内存映射

电器工程 图片 记忆 集会 实验室 高科技编译器
2022-01-27 09:32:48

一些背景。我使用 MPLABx 和 PicKit2 来编程不同类型的图片。目前是16F887。我尝试坚持使用 Hi-Tech PICC Lite 工具链,但我对某些东西的组装方式越来越不满意。应该相对快速的操作(考虑到 8Mhz 的 500ns 指令周期)最多需要 20us 才能完成。所以我开始插入我自己的 ASM 代码来处理它。

但是,我很难理解第 20 页数据表中提供的内存映射。

程序存储器从 0005h 开始。然而,第 23 页显示了专用寄存器的文件地址,例如端口 A。端口 A 的地址显示为“05h”。

我很困惑如何区分内存位置 0005h 和位于 05h 的专用寄存器。如何引用特殊用途寄存器?

我已经为较旧的 HC11 芯片完成了相当广泛的汇编程序编程,但这是我第一次尝试 PIC asm 编码。这里的任何帮助将不胜感激。

2个回答

PIC 使用所谓的“哈佛架构”,这意味着它具有用于指令和数据的独立地址空间。

地址是指寄存器还是指令取决于使用它的上下文。

第 2.1 节“程序存储器组织”中的图表是关于程序存储器或指令地址空间的。第 2.2 节“数据存储器组织”中的图表是关于寄存器和特殊功能寄存器或数据存储器地址空间的。

Dave 说了什么,但我还想指出程序内存从 0 开始,而不是 5。在复位时,处理器将 PC 设置为 0 并开始运行。发生中断时,处理器有效地调用位置 4 并关闭全局中断使能位。程序存储器位置 5 并不特殊,除此之外,如果您有中断程序,它将是中断程序的第二条指令。