完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,伙计们。我正在使用这里提供的代码,我把它改编成一个临时传感器。它工作很好,但我希望能够使用其他引脚,而不仅仅是RB8和RB9,并且还指定了一个不同的时钟值。现在PORTB只有pins就可以了。代码是用asm编写的,我对MIPS asm没有经验。为了方便起见,这里提供了两个感兴趣的片段:master.h定义Asm init函数,我从XC32文档中读取了一些关于如何做一些简单的事情,但是似乎什么也做不了。在运行时C中需要更改的3个参数是在master.h文件中定义的。在主文件中使用I2CyCcLogiDelphi并传递给宏。所以我猜宏不喜欢变量吗?我怎么解决呢?接下来,我独自离开I2CyCcLogyRelp(回到H文件),只是想看看发生了什么。我把ODCB寄存器看作是成功的标志。原始代码只设置RB8和RB9位。对于在asm中访问的c变量,在这个寄存器中还有许多其他的位。最后一次尝试是在asm中声明它们,并在我的c文件中将它们作为外部变量。我可以看到在调试窗口中正确地设置了变量,但是ODCB再次设置了除了RB8和RB9之外的所有类型的位。我不知道如何在ASM中进行单步调试。它只是跳过了ASM标签的调用,任何帮助或建议都非常感谢!!!!
|
|
相关推荐
6个回答
|
|
宏是编译时构造,这就是为什么参数必须是常量的原因。如果将宏修改为变量,则还必须修改代码以将其值加载到CPU寄存器中。
|
|
|
|
换句话说,如果不使用固定引脚,代码必然会变得不那么有效。
|
|
|
|
考虑到代码不可避免地要花费大量的时间来拖延,您最好用C重新编写它(或者找到C实现)。编译器输出将是足够的,除非您真的需要保存Flash的最后一个字节。
|
|
|
|
由于某种原因,使用即时值的指令似乎与常数无关。将所有的“ORI”改为“LW T1,SDAYMASE”,但只要变量在ASM中声明而不是C。!(在最后一个节目中)裸骨手术是可行的。例如,更改为RB6和RB7正确设置了RGS,但是来自传感器的数据是垃圾。一看,我没有发现任何对RB8和RB9的硬编码引用,我失败了。你们知道PIC32还是很容易适应(8位和16位被遗忘很久)的I2C位Bang-Calm,仅主?我想做的最后一件事就是把明显超出我头脑的asm翻译成C。我花了一个月的时间让它在MX和MZ的硬件中正常工作,把它装进了一个图书馆,再也没人提起过:。
|
|
|
|
当然不是。立即值是在指令本身中编码的16位常数。而且,变量是内存位置的别名,当你所追求的是存储在该内存位置的值。我还没有检查gas是如何处理的,但是我假设使用变量作为即时地址将使用地址的下16位。是否初始化了头文件中描述的PIN?
|
|
|
|
我的I2C库的一个版本。支持主模式与从时钟拉伸。
|
|
|
|
只有小组成员才能发言,加入小组>>
5163 浏览 9 评论
2000 浏览 8 评论
1928 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3174 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2226 浏览 5 评论
733浏览 1评论
615浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
505浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
631浏览 0评论
528浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 03:10 , Processed in 2.187825 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号