完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,作为一个16F系列的新用户,我搞不清楚如何将标签定义为与间接寻址结合使用的数据指针。我使用MPASM,并且我已经使用LABEL数据“xyz123etc”表单中的DATA指令,从0x0100开始将一系列ASCII字符串存储在程序存储器中。PIC16F1719指令集包含一个模糊相关的示例:constantsDW DATA0;第一constantDW DATA1;第二constantDW DATA2DWDATA3my_function;...大量的代码...MOVLW DATA_INDEXADDLW低常数MOVWF FSR1LMOVLW高常数;MSb设置自动调用MOVWF FSR1HBTFSC状态,C;从ADDLW携带?然而,该示例没有用标签引用数据单词,并且包括相当深奥的评论,这些评论相当无用。
|
|
相关推荐
11个回答
|
|
嗯,你到底想知道什么?该示例将加载由“常量”内的DATAZEnK指向的字节,进入W.。
|
|
|
|
是的。常量这个词是一个标签。我个人总是在标签上加上一个冒号后缀,使它显而易见,但是MPASM不需要。哪些深奥的评论?如果您指的是“MSB集自动”,这是MPASM在ROM中用标签自动执行的操作,以使MOVIW命令按预期工作。
|
|
|
|
把它变成
|
|
|
|
谢谢你的回复…来自一个学校,那里的标签、操作码、操作数、&注释都在同一行中,并且被分隔开,阅读替代代码结构有时需要一些破译。我自己的观点是,用作解释(特别是在产品数据表中)的示例代码片段应该在语法上显式而不是泛型,因为从显式表达式向后工作比反向工作更容易。
|
|
|
|
嗨…谢谢你的回复。我假设你是说我应该使用RETLW指令从程序内存中保存的字符串中检索数据字符?我试过使用间接寻址选项,但是似乎没有办法将字符串存储在程序内存中,这样每个ASCII字节都是可访问的,因为MOVIW指令只允许访问存储的单词的下8位。当然,除非我错过了什么!
|
|
|
|
是的,你通常在PIC16上“浪费”6个字。但这不是什么大问题,DT就是这样,如http://www..hip.com/for./FindPost/917329所示。而DT基本上创建了一组相同的RelLW,在字符的基础上。
|
|
|
|
DT指令生成一系列RESLW指令。ReLLW操作码的下8位包含文字值。
|
|
|
|
感谢1和0…我已经花了一个年头找到它,它做的工作!
|
|
|
|
谢谢你,DarioG…你和1和0都认为这是一个很好的解决方案。关于我之前尝试的间接寻址方法,我不得不问,为什么像MOVIW这样的指令只访问存储在程序内存中的单词的下8位,而像“data”这样的指令产生连续的ASCII字节块,但被打包成14位的单词以确保如果使用间接寻址,请访问每第二个字节。
|
|
|
|
还有其他方法来访问程序存储器以获得所有14位(查看EEPROM访问寄存器),但更常见的是只使用8位元素。
|
|
|
|
是的,正如荒山亮所说的。通常不值得努力,除非你把太多的数据压缩到你的照片里。
|
|
|
|
只有小组成员才能发言,加入小组>>
5243 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3208 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2258 浏览 5 评论
778浏览 1评论
669浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
597浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
679浏览 0评论
577浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 08:27 , Processed in 1.521836 second(s), Total 67, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号