完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
大家好,在之前代码的16F887上,我使用了一个LUT,如下所示,根据MENU_NUMBER中的值将数据放入我的LCD中。使用下面的方法确保正确调用tableNow在18F45K80上,无法实现这个想法。有什么建议吗?特里沃
|
|
相关推荐
14个回答
|
|
|
噢,只是注意到你实际上是在做一个计算的GOTO,而不是一个查找表。你仍然可以通过写到PCL来做到这一点,但是正如我已经提到的,你还需要另外两件事情:[1]你还需要设置PCLATU寄存器[2]你需要在写到PCL之前加倍。它必须是你写的一个均匀的值。
|
|
|
|
|
|
18F45K80有16个Kword的程序存储器,所以PCLATU没有必要,除非在别的地方由于0x00的缺省值而改变。对于GOTO指令的跳转表,该值必须是四倍。
|
|
|
|
|
|
两个优点:
|
|
|
|
|
|
谢谢大家,我尝试过下面的方法,但是仍然不能工作。表仍然跳转到错误的BRA指令。生成的BRA例程现在都在LCD上显示MENU_NUMBER以及其它LCD数据。LCD上的MENU_NUMBER是正确的,但是每次都以错误的例程结束我还试着在PCL中加上2或4或6的固定数字,但仍然错了。
|
|
|
|
|
|
它跳到哪一个?您可以通过调试器或模拟器单步执行该代码。
|
|
|
|
|
|
如果你的跳转表不在同一个256字的PCLASE块中,那么你必须要小心携带到PCLATE。
|
|
|
|
|
|
正如一个旁白,这可以缩短到:甚至:
|
|
|
|
|
|
……甚至:
|
|
|
|
|
|
我已经试过下面……它仍然跳转到不同的例程,不仅仅是SPEED_LCD,没有明显的错误模式。现在不知道如何控制它?我以前的…没有帮助…可能错了吗?
|
|
|
|
|
|
现在不确定如何控制?我以前的…没有帮助…可能错了吗?查看汇编程序输出的LIST文件,看看代码在哪里结束。必须确保ADDWF PCL指令与跳转到地址的8-15位的指令在同一页中。如果您从未考虑过,那么您就很幸运了。您可以在这个代码块之前使用ORG指令来强制它从页面的开始处开始。
|
|
|
|
|
|
你前面的一个F87可以有问题。无论如何,试试这个:
|
|
|
|
|
|
谢谢1和0,抱歉还是同样的问题。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------对不起,有点厚。
|
|
|
|
|
|
那么你的问题就在别处。为什么要在高优先级中断向量位置0x00 08分配这个代码?
|
|
|
|
|
|
第一列是程序存储器地址,第二列是指令操作码。你能发布你的真实代码吗?
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:25 , Processed in 3.990139 second(s), Total 100, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1571