pic16f690 除法运算 溢出 后果不可预测

2020-02-07 09:36发布

最近在搞湿度测试,湿敏电阻下拉接地,对应的AD值为const unsigned int RH_Data[15]= {9,12,17,23,32,44,60,87,126,189,282,475,603,768,887};

计算程序:        ADCON0=0b10100001;//选择AN8,  
                GODONE=1; //启动转换
                     while(GODONE);//等待转换完成
                 RH_A_Cache = (ADRESH<<8)|ADRESL;//取AD值   
                for(y=0;y<15;y++)
                        {if(RH_A_Cache > RH_Data[y])
                                {if(y==0){RH_A_Cache = 20;break;}       
                                  RH_A_Cache = 10 - (RH_A_Cache - RH_Data[y])*10  /  (RH_Data[y+1] - RH_Data[y]);
                                  RH_A_Cache = y*5+20 ;
                                }
                        }

程序里红 {MOD}部分导致运算结果溢出进而导致程序运行混乱了,我想请教大家这个问题有没有办法解决(编译器PICC16-9.8PRO和谐)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
fangjikun
1楼-- · 2020-02-07 13:09
在淘宝上淘到可以在直流环境下用的湿敏电阻,却没有参数表(万用表20K档测  当前湿度1.3K,对嘴哈气电阻值飙升到1M多)
zhuxm
2楼-- · 2020-02-07 16:24
if (RH_Data[y+1] > RH_Data[y])
RH_A_Cache = 10 - (RH_A_Cache - RH_Data[y])*10  /  (RH_Data[y+1] - RH_Data[y]);
else
RH_A_Cache = 10 + (RH_A_Cache - RH_Data[y])*10  /  (RH_Data[y] - RH_Data[y+1]);

一周热门 更多>