ble112蓝牙芯片 十六进制取平均值计算

2019-07-18 15:46发布

下面是程序adc模块的代码 现在主要问题在将一组十六进制相加后除以总个数 ,app读取出来的结果与我实际计算的结果不一致。说明我的十六进制数计算存在问题,想请教我该如何计算。谢谢!
event hardware_adc_result(input, value)

        # 1.设定采样总时间 Xs,设定记录counter 0-X/10(ms)的ad数据值,
        #  平均counter(20:X/10)(ms)的数据,同时重置counter为初值状态。
       
        if counter < 100 then
                counter = counter + 1
               
                # 交换AD采样的数据高低位字节。               
                adc_buf1 = (value >> 8) & $00ff
                adc_buf2 = (value << 8)        & $ff00
                adc_buf = adc_buf1 | adc_buf2
               
                #write adc value               
                call attributes_write(c_adc_data, 0, 2, adc_buf)       
               
                #十六进制数累加
                adc_val = adc_val + adc_buf
               
                       
        else
                if counter = 100 then
                       
                        #平均一组16进制值
                        adc_result = (adc_val >> 4)/16
                        #write adc value               
                        call attributes_write(c_adc_result, 0, 2, adc_result)                                                       
                       
                        #关闭 ad采样                       
                        call hardware_set_soft_timer(0, 0, 0)       
                                                                                                                       
                        #关闭IO端口
                        call hardware_io_port_write(1,  pin_select_mask, $ff)
                       
                        #重置counter值为初始状态
                        counter = 0
                       
                end if
        end if

end

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
七夜一夕
1楼-- · 2019-07-18 19:23
顶一下。。。。

一周热门 更多>