采集到的12位AD值怎么处理?

2019-07-15 07:52发布

AD值的高8位在ADRH里,低4位在ADRL里,取过高8位的数据,8次累加取了平均值,但是精度不够,不知道要怎么处理12位的AD值。求帮助,要汇编的


补充内容 (2018-11-5 09:29):
是这样的,我要怎么把这个12位的数据进行累加,然后得出一个平均值
;                mov                        a,ADRL
;                mov                        ADRL_BUFF,A
;                mov                        a,ADRH
;                mov                        ADRH_BUFF,A

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
我爱下载
1楼-- · 2019-07-15 18:35
采样精度本身是否够,如果不够那就不用搞了;如果显示数据不稳定,可以考虑采用滤波算法,网上有一些简单的滤波算法
人中狼
2楼-- · 2019-07-15 21:35
本帖最后由 人中狼 于 2018-11-5 10:35 编辑

measure_times是ADC转换次数
temp_0,temp_1,temp_2是多次ADC转换值的和,temp_0为高字节


                                 mov       r2,#measure_times
measure_ad_1:

                                lcall          adc_convert              ;AD转换
                               mov                a,ADRL
                               mov                ADRL_BUFF,A
                                mov                        a,ADRH
                                mov                        ADRH_BUFF,A

                                mov        a,temp_2
                                add        a,ADRL_BUFF

                               mov        temp_2,a
                                mov        a,temp_1
                                addc        a,ADRH_BUFF

                               mov        temp_1,a
                                 mov        a,temp_0
                                 addc        a,#00h
                                 mov        temp_0,a
                                 djnz        r2,measure_ad_1



人中狼
3楼-- · 2019-07-16 02:21
最后的进位,如果最后累加结果超过2个字节,那么要进位到第3个字节,但是没有其他数值需要与第3个字节相加,所以就加零

一周热门 更多>