完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
你好,我用MPLab X 3.26和XC8 v1.37在PIC18F46K22上工作,我必须生成一个串行时钟和至少10kHz的串行数据。我将内部时钟配置为8MHz,在处理数据信号之前我必须做一个掩码。.=./2;//在右边移动1这个操作需要很多时间,生成的信号是2.5kHz,而不是更高。是否有可能进行这个操作,即将1向右移动到8位字,从而避免花费这么长的时间?非常感谢你的帮助。
|
|
相关推荐
18个回答
|
|
|
在C中,你可以使用Shift——“& gt;& gt”,而不是除法。您需要确保变量是无符号的。这可以用一个汇编结构“rrncf”来完成。我不知道您在做什么,但是展开循环可能更快。
|
|
|
|
|
|
因为你看到的频率是你期望的4,你认为指令时钟是2MHz?FoCC/4=8MHz/4=2MHz
|
|
|
|
|
|
我不使用XC8,但是我希望编译器已经把它翻译成移位指令。你怎么知道这个语句需要时间,而不是其他东西?
|
|
|
|
|
|
编译器优化器足够聪明,能够使用移位来代替二进制除法。x=x/2;应该生成与X=X>>1相同的代码;
|
|
|
|
|
|
再次公布所有的代码,你可以消除很多猜测。
|
|
|
|
|
|
***
|
|
|
|
|
|
你好,谢谢你的答复。关于这个部门造成的延误,我确信这是这条指令,因为我用PicKit3逐步调试它。此外,当我使用MPLab的模拟器时,我也得到了相同的结果。我已经用.=.>>1进行了测试,这非常好,在模拟器中只需要3us。相比之下,.=./2需要384us……有什么原因吗?非常感谢你的回答。
|
|
|
|
|
|
猜猜看?免费版本不执行优化。如果它是Eval或付费版本,那么它是Bug。其他可能性是:char.=0b10000000;它应该有符号的char.=0b10000000;移位有符号数字可能不像除法那么简单。在你的情况下,它应该是未签名的字符,字符将是错误的。
|
|
|
|
|
|
我认为原因是因为被移位的值被声明为字符,这是一个带符号的值。如果该值被声明为无符号字符,那么它可能会被优化为移位。
|
|
|
|
|
|
这在自由模式下似乎不是真的,除以2不会被转换为字符或无符号字符的移位,至少在我使用XC8 1.38的简单测试中是这样。
|
|
|
|
|
|
实际上,普通字符的类型是XC8的无符号字符。
|
|
|
|
|
|
这是一个愚蠢的编译器;你必须稍微帮助它:生成一个RRCF指令。
|
|
|
|
|
|
这应该更好一些:
|
|
|
|
|
|
掩码/=2;移位,但掩码=掩码/ 2;不是吗?这听起来像是一个bug,或者未来需要的增强。
|
|
|
|
|
|
对的。
|
|
|
|
|
|
希望MadC aka Jeff能停下来评论一下。我不知道他这个星期是否在师父。
|
|
|
|
|
|
你好,谢谢你的回答。你说得对,掩码>>=1更好。事实上,掩码/=2和掩码=掩码/2之间是有区别的。第一个选项保留一个字符,所以与8位单词匹配(需要144us)。第二个选项在16位单词上使用int,所以需要更多的时间(需要382us)。此外,对于简单的指令,我们可以检查反汇编代码,我们可以看到./=2有3条指令(因此3us),而.=./2有5条指令(因此5us)。2个命令。
|
|
|
|
|
|
你似乎在这里给出两个不同的时间?这是什么?Irc,当我看这个时,掩码/=2确实移位,掩码=掩码/ 2调用一个16位除法函数。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
508 浏览 0 评论
5813 浏览 9 评论
2351 浏览 8 评论
2238 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3544 浏览 3 评论
1161浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1122浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
890浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
508浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 16:17 , Processed in 1.866831 second(s), Total 113, Slave 96 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
799