首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pic组装方法

Pic组装方法
EN

Stack Overflow用户
提问于 2017-09-13 05:25:36
回答 2查看 354关注 0票数 3

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

EN

回答 2

Stack Overflow用户

发布于 2017-09-13 05:55:11

看看数据表的内存结构(第3章),你会发现一个字(指令)使用14位,而不是你在程序中习惯的8位。通过向一个字写入14位而不是8位,你可以多出75 %的存储空间,这是一个很大的问题。

困难的部分将是创建一个函数,该函数能够将您的8位字节分割为14位字。您可以使用带位字段的结构来完成此操作,也可以采用更简单的方法,将8个字的第一位用于1个字节,依此类推。您将需要使用特殊指令来读取该字的高6位。

最简单的方法是只使用14位中的12位,并将第3个字节拆分为奇数位和偶数位。这样做的好处是,您的代码是容易的,通过检查奇数或偶数,您知道如何解码。读取14位比较棘手,这可以使用asm(指令名)或microchip提供的C函数来完成。(有关读取和写入闪存的示例,请查看应用笔记)。

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

票数 3
EN

Stack Overflow用户

发布于 2017-09-13 06:14:23

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

  • 程序内存总量(字节)为: 4096 * 14位/8= 7168字节

  • 你的表有4800字节长,所以代码的其余部分是: 7168 - 4800 = 2368字节或2368 *8/ 14 = 1353个程序字。

所以没有什么是不可能做的!

  • Check in datasheet indirect program memory addressing,第3.6节

  • 使用位寻址从程序内存表中提取单字节,因为程序字是14位。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46185549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档