数据存储器和PIC18F4321上的指令

时间:2015-10-17 00:46:16

标签: memory microcontroller pic

我们正在研究PIC18F4321,在某些时候,我的教授在电路板上绘制了以下图表:

data memory

他看起来像指令(例如ADDLW 0X02,MOVWF 0X24等)将在数据存储器中占用两个地址,因为PIC18F4321中的存储器地址只占用一个字节,指令是16位宽。

但是在PIC18F4321的数据表中,我找不到这些16位指令将存储在数据存储器中的位置。在他说之前,我记得数据存储器用于存储寄存器值,而不是完整的指令。另一方面,我知道还有程序存储器,但程序存储器不是8位宽,这使得他的绘图更加混乱。

1)16位指令是否曾存储在数据存储器中?

2)我发现尝试解释图片的一种方法是,可能所讨论的存储器不一定是8位宽,只是每个地址只能占用8位。所以< 8>只是说明你可以在该地址中保留多少位。这是一个合理的解释吗?

1 个答案:

答案 0 :(得分:1)

  

1)16位指令是否曾存储在数据存储器中?

没有。数据存储器不用于存储指令 - 您无法从数据存储器执行任何代码。所有指令都存储在程序存储器中,程序存储器由16位指令字组成。数据表详细说明了不同指令的格式和布局。有些指令是单字,有些则需要多个字。程序存储器由21位程序计数器寻址,该计数器包含2M字节空间,但对于PIC18F4321,只有8K字节的程序存储器,相当于4096个单字指令。

数据存储器由8位字节组成,由12位总线寻址,允许最多4096字节的数据存储器,尽管PIC18F4321只有512字节的数据存储器,分成两组256字节。该数据存储器包含您在应用中使用的SFR(特殊功能寄存器)和通用寄存器(GPR)。

所有这些都有更详细的解释in the datasheet for this device,特别是第5节。

程序计数器(PC)寻址程序存储器的方式通过强制PC的最低有效位为零来强制执行16位指令字对齐,这会强制以两个字节的倍数进行访问。引自数据表:

  

PC寻址程序存储器中的字节。防止PC出现   变得与字指令不一致,最不重要的一点   PCL的值固定为值“0”。 PC增加2到地址   程序存储器中的顺序指令。

我建议您仔细阅读链接数据表的第5部分,看看您是否还有疑问。它包含了很多细节,但它描​​述得很好,即使完全理解它也需要不止一个阅读。