| ad值需要用公式换算会电压值,而且检测的电压值要做降压处理,不能超过参考电压,再根据降压比推算会原来的电压值。 |
baocong2019 发表于 2021-8-6 20:25 哦哦,汇编用习惯了,就觉得高位会变成低位了... 你这样也是对的 但,如果你有看过PCON2的说明,你就会知道,你最初的公式是PCON2的ADRJ位为1时的公式,网上大多是用这个公式的,但ADRJ默认是0的,别人的程序是要设定PCON2的 这就是我提醒你修改PCON2试一下原因 |
Y_G_G 发表于 2021-8-6 18:08 不是PCON2寄存器的问题,是移位出现了问题 |
| 学习了,虽然我不用STC单片机! |
|
ADC_RESL&3 你看一下数据手册,你这个公式对吗? 所以我叫你PCON2改一下试一下 |
1093562897 发表于 2021-8-6 15:27 adc_value_temp = (ADC_RES<<2)|(ADC_RESL&3); 最终问题解决了,是偏移位数的问题,高8位在RES寄存器,低2位在bit1-bit0,所以应该是左移2位,而不是左移8位。 ![]() |
杨天想 发表于 2021-8-6 11:03 标定的供电电压是5v = 5000 然后来测外部通道 |
baocong2019 发表于 2021-8-6 10:58 你是用内部vcc做参考电压的吗 |
munuc_w 发表于 2021-8-6 10:23 adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024; 我就是用这句话来根据这个公式算的 |
csmyldl 发表于 2021-8-6 01:30 adc_value_Vcc=(unsigned long)(5000*(unsigned long)adc_value)/1024; 这句话不就是算电压值的吗? |