Pic装配如何

时间:2017-09-12 21:25:36

标签: assembly pic

我正在尝试编写一个包含大型列表(大约4.8千字节)的程序。代码是汇编代码,但有更大的数据表(大约5.4千字节)。

2 个答案:

答案 0 :(得分:3)

查看数据表的内存组织(第3章),您将看到一个字(一条指令)使用14位而不是您在程序中习惯的8位。通过将8位写入一个字而不是14位,您的存储量将增加75%,这是一个大问题。

困难的部分是创建一个能够将8位字节拆分为14位字的函数。您可以使用带有位域的结构来执行此操作,或者您可以采用简单的方法并使用8个字的第一位1个字节,依此类推。您需要使用特殊指令来读取单词的高6位。

最简单的方法是仅使用14位中的12位,并将第3位字节分成奇数位和偶数位。这样做的好处是你的代码很容易,通过检查奇数甚至你知道如何解码。 读取14位有点棘手,可以使用asm(INSTRUCTION NAME)或微芯片提供的c函数来完成。 (例如,查找有关读取和写入闪存的应用说明)。

我不知道您的数据的性质,但可能会找到允许压缩的模式。一些基本的压缩算法并不像它们看起来那么难。

答案 1 :(得分:2)

PIC12LF1840器件具有4K程序存储器字。一个程序存储器字有14位。

  • 以字节为单位的程序存储器总数为:4096 * 14 bit / 8 = 7168 bytes

  • 您的表长度为4800字节,因此代码的其余部分为:7168 - 4800 = 2368字节或2368 * 8/14 = 1353个程序字。

    所以没什么可不做的!

  • 检入数据表间接程序存储器寻址,第3.6节

  • 使用位寻址从程序存储器表中提取单字节, 因为程序字是14位。