完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,MCU=PIC12F675我想知道如何将ADC读数从0到255或0到1023转换为0到31等步或0到63等步数。我用3.7伏特给PIC供电,10KPOT。也许我可以用表格和查找找出需要的步数,表格消耗更多的内存。有没有其他方法可以使用公式转换成汇编语言所需的步骤。如果有人能分享汇编代码,我将不胜感激。
|
|
相关推荐
11个回答
|
|
为了“缩小比例”,您只需要划分(或右移位,如果情况是这样):即0..1023到0.63意味着除以16(或右移位4次)。
|
|
|
|
嗨,Thankyou,MCU的输出将达到ADC值16(0或1)。如何在1到15和16到32到2之间得到值1?
|
|
|
|
0..15等于0,16..31等于1等等。如果你想要一些上舍入,你可以加上8(在本例中),这样0..7将给出0,8..23将给出1等等……
|
|
|
|
是否可以用汇编语言计算ADC值* 2/1024,得到准确的值。只是我试图找到一些公式,以达到理想的ADC输出步骤。
|
|
|
|
乘以2的幂是向左移位,除以2的幂是向右移位的数。用纸和铅笔试试看。
|
|
|
|
此外,ADC*2/1024==ADC/512。这不是浮点数学
|
|
|
|
谢谢您的时间,我会尽量达到ADC输出的步骤。
|
|
|
|
由于减少了值的数量,我建议使用“ADFM=0”,所以只需要处理一个字节中的8个高阶位(ADRESH)。如果希望舍入到8位,可能必须检查低阶结果(ADRESL)的高阶位,但IIRC希望结果少于8位。请注意,舍入可能会溢出所需的宽度.GP。
|
|
|
|
考虑AdRESH,8位数据和右转数三次,我应该得到0到31的值。这个方法会降低ADC的效率吗?你能解释一下“四舍五入可以溢出你想要的宽度吗?”
|
|
|
|
这取决于你所说的“效率”的意思。我认为他的意思是,如果你在进行某种舍入运算,你需要小心你的计算,以确保在使用8位变量时不会出现溢出。
|
|
|
|
对A/D的结果进行计算与A/D性能无关。让我们以您的示例为例,将A/D设置为左对齐的结果会在ADRESH中产生最大值255。为了得到一个0到31的值,你将把AdRESH分成8个(或者右移ADRESH 3位)。对于舍入,在分割之前,您将添加0.5。也就是说,(ADRESH + 4)/ 8。如您所见,为舍入添加ADRESH 4可能导致溢出。
|
|
|
|
只有小组成员才能发言,加入小组>>
5178 浏览 9 评论
2003 浏览 8 评论
1931 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3177 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2228 浏览 5 评论
737浏览 1评论
622浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
509浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
635浏览 0评论
533浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 13:09 , Processed in 1.644841 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号