完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我正在试着把一大串值表写进程序存储器,我用PIC16F1824有一个非常奇怪的行为。我用“dt值,值,值”语句,其中值是一个8位数的十进制表示,也就是.1至.255,每行有12个值。我用表“org 0x800”写在第1页上的表。我从FSR0H=0x88开始用线性内存访问读回这些值。我需要超过256个值,所以我写了一个测试程序,看看在FSR0L滚动时是否必须管理FSR0H的增量,我做了,但是很容易。我用模拟器测试了回读表,结果一切正常。现在奇怪的是:如果表有222个值或更多,程序就不在PIC上运行?但是,如果我以221个值截断表,它能正常工作吗?我试着把表拆成两半,然后从0x900开始第二部分,但是那也行不通。我需要“表的结束”指令吗?在程序内存中使用表有限制吗?我将非常感谢在汇编编程领域中的任何提示。谢谢
|
|
相关推荐
8个回答
|
|
发布您的代码。
|
|
|
|
如果有人有一些想法-我发现问题在于我在一个以SUBS CODE开始的代码块中只有一个子例程,并且工具链很友好地在大约0x8E8的某个随机地址插入这段代码,所以就在我的表中间。我删除了那行,一切都很好。
|
|
|
|
听起来像是使用代码指令与绝对模式混合使用ORG指令混合可重定位模式。不要那样做。
|
|
|
|
1和0-确切地说,我试图只使用绝对值,但是我从另一个项目复制了一块代码,没有注意到我获取了CODE指令。发现这个错误很滑稽,因为重新定位的代码可能会上下移动一点,并且表的关键大小似乎会改变。看起来表是在代码之后编写的,所以我的表重写了子程序,程序在第一次调用时丢失了。我的测试程序运行良好,因为子程序从来没有被调用过。
|
|
|
|
好的,我也认为你正在使用可重定位模式组装绝对代码。检查项目属性。
|
|
|
|
再说一遍,刚刚检查了属性和mpasm(全局选项)“在绝对模式下构建”没有检查……我绝对地编写了大多数项目——我想知道这种疏忽有多少次没有伤害到我?谢谢
|
|
|
|
1和0 -我变得非常困惑。我希望您仍然遵循这个线程:如果我用MpASM全局选项构建这个项目,在绝对模式下检查或不检查,项目成功构建,并且两种方式都产生相同的.map文件和.HEX文件,并且两个版本都在调试器下运行。代码中有一些无穷无尽的循环等待传入的SPI字节,在两个版本中,程序都正确地到达并等待。**但是**用绝对模式构建的二进制文件不在我为它编写的测试夹具中运行吗?未选中的复选框内置在测试夹具中运行?我的理解是,这是不可能的?但这可能意味着我在IDE配置中缺少了另一个细节——有什么想法吗?早些时候,你建议我发布我的代码,我没有,因为我不知道如何:我认为有一个标准的方法,包括在这里的代码与一些令牌在开始和结束,所以它是正确的格式,但我不记得如何,我不能找到INS。所以我把它附加为附件。因为我完全是自学的,所以在代码中可能有一些错误,这就留下了很多我不知道的知识空白,但是我已经写了四年的这类东西,并且通过很多错误学习了。
|
|
|
|
在可重新定位模式中构建的HEX文件将包含由.CIMIT部分插入的两个额外的ReLW 0指令。尽管如此,两个十六进制文件应该工作相同;所以我不知道为什么它在测试夹具中不工作,因为您说过十六进制文件是相同的。
|
|
|
|
只有小组成员才能发言,加入小组>>
4824 浏览 9 评论
1829 浏览 8 评论
1747 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
2954 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2059 浏览 5 评论
460浏览 1评论
1111浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
362浏览 0评论
263浏览 0评论
LAN9252使用SQI通信,进行数字复位后读BYTE_TEST异常
1797浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 06:04 , Processed in 1.109578 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号