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


9

一些背景。我将MPLABx与PicKit2结合使用来对不同类型的图片进行编程。目前是16F887。我尝试坚持使用高科技PICC Lite工具链,但对某些组件的组装方式越来越不满意。相对较快的操作(考虑8Mhz的500ns指令周期)最多需要20us才能完成。因此,我开始插入自己的ASM代码来处理它。

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

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

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

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

Answers:


8

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

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

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


因此,如果我说“ MOVWF 0x0005”,那么PIC会知道我正在引用数据存储器中的地址0x0005,而不是程序空间吗?
迈克尔

@迈克尔:是的。指令中的地址是指程序存储器还是数据存储器取决于指令。针对每个操作码进行了描述。基本上,如果它处理数据(如MOVWF),则它将访问数据存储器。如果它处理程序地址(如GOTO),则它将访问程序存储器。
奥林·拉斯罗普

谢谢。我猜我以前用HC11组装von Neumann arch。我刚学习时,经常会出现重写指令代码的问题。再次感谢你。
迈克尔(Michael)

3

戴夫所说的,但我还要指出,程序存储器从0开始,而不是5。复位时,处理器将PC设置为0并开始运行。发生中断时,处理器有效地引起对位置4的调用,并关闭全局中断使能位。程序存储器的位置5并不特殊,否则,如果您有中断例程,它将是中断例程的第二条指令。


是的,这是可以理解的。我的意思是5是第一个通用指令地址。
迈克尔

@Michael:不,也不是。正如我所说,程序存储器位置5并没有什么特别的。标签优先的通用指令地址对此毫无意义。第一条指令地址为0,由于中断,4也有些特殊。其余的实际上并不特殊,在这种情况下,“泛型”是没有意义的。
奥林·拉斯洛普

好吧,它的第一个非复位,非中断向量地址如何?我的意思是说我理解您要说的是什么。
迈克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.