完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
void ADC_init()
{ P1ASF = 0xff; ADC_RES = 0; ADC_CONTR = 0xe0; delay_ms( 5 ); AUXR1 = 0x00; P1M0|=0x01; //开漏模式 1_0= #00000000B P1M1|=0x01; } u16 ADC_process() { //int vol; ADC_CONTR = 0xe8; _nop_(); _nop_(); _nop_(); _nop_(); while ( ! ( ADC_CONTR & ADC_FLAG ) ); ADC_CONTR = 0x00; //vol = ( ADC_RES * 100 ) / 256; //vol *= 5; //return vol; return ADC_RES; } |
|
|
|
AD值是一个经过计算的变量?
|
|
|
|
帮顶.....
|
|
|
|
|
|
变量没设置好,AD读回所要赋值的变量要用能用浮点型的。
|
|
|
|
跟我之前用stc12C5204AD的情况一样
|
|
|
|
是AD的RESL和RESL的取回值要用浮点型变量装载?我试了下,没用啊
|
|
|
|
虽然不是那个问题,但是我找到了,是乘法过多的问题,方向对了,万分感谢
|
|
|
|
|
|
|
|
我最近也在用个这个单片机学习AD 也是 遇到这样的问题。请教楼主如何解决的么?
|
|
|
|
是不是因为寄存器长度有限,要分步计算?我以前遇到过问题,分步计算就正确了。
|
|
|
|
具体问题不知道,只是用串口发送调试,一步一步,发现有的数据计算问题,数据没有溢出应该,但是算起来就是不对,不断的换计算公式,换计算函数,就对了最后,没总结出问题的共性
|
|
|
|
void ADC_init()
{  1ASF = 0xff; ADC_RES = 0; delay_ms( 5 ); AUXR1 = 0x00;  1M0|=0x01; //开漏模式 P1_0= #00000000B  1M1|=0x01; } u16 ADC_process( u8 ch ) { u16 vol; u8 adc_l; ADC_CONTR = ch + 0xe8; _nop_(); _nop_(); _nop_(); _nop_(); while ( ! ( ADC_CONTR & ADC_FLAG ) ); ADC_CONTR = 0x00; vol = ADC_RES; vol = vol * 4; adc_l = ADC_RESL & 0x03; vol = vol + adc_l; return vol; } 不好意思,这个才对,前一个是错的。 |
|
|
|
只有小组成员才能发言,加入小组>>
3269 浏览 9 评论
2947 浏览 16 评论
3446 浏览 1 评论
8967 浏览 16 评论
4041 浏览 18 评论
1084浏览 3评论
562浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
556浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2294浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1850浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 15:02 , Processed in 1.384284 second(s), Total 75, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号