单片机C51如何将ADC0809转换过来的值0--255处理成0到100

我不知道该怎样转换成0到100,所以就减少了输入信号的值,如果不改变输入信号,请问如何进行?做除法会出现小数,或除不尽,怎么办?乘法会出现大于255的数,接下来该怎么做呢?数据处理这块我是一点不懂,哪位好心人呢可以给个详细的解说呢 ?DPTR中可以放入65535个数,但是在进行乘除法时如何显示出想要的书呢?怎么运用DPTR呢?感谢各位高手啦!

如果C51 .这其实是一件很简单的事..

采集回来的数十val 最后转成的舒适 ddd
那么

ddd = val * 100 /255 就可以了
如果觉得这样计算量比较大的话.那么
损失一点精度用 移位
ddd = val * 100 >> 8; 就可以了.

你说说的dptr那是用汇编写的结果.
用c语言这些东西都不需要考虑的.
/////////////////////////////
如果用汇编也没有那么麻烦.
mul ab 不是吧结果存在 a和b里面啊 ...2个几寄存器给你用..可以操过255不是.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-08
你可以计算:
在0v时adc输出0,5v时adc输出255,所以你计算好你需要比较参考的电压的大小,比如2.5v,对应的数字量为127左右。然后用adc输出的数值与参考数值比较大小即可,比较一般使用减法,然后判断差值为正还是负,这样就能得到大小的结论了。
你说的是怎么回事?不明白,给个原理图,仔细讨论一下吧。
相似回答