0809算法程序分析

来源:本站
导读:目前正在解读《0809算法程序分析》的相关信息,《0809算法程序分析》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《0809算法程序分析》的详细说明。
简介:下面给大家讲解一下0809算法程序分析,希望对大家的学习有所帮助。

用AD0809测量电压,电压范围是0--+5V,程序中把测得的数据进行了以下处理,就得到了电压值的BCD码,假设测得数据为200

(再此用十进制表示)

org 0000h

main:

mov a,#200

mov b,#51

p ab; a=3,b=47

mov r1,a; 个位数放入R1(3)

mov a,b; a=47,b=47

clr f0

subb a,#26;余数大于25,F0为1,乘法益出,结果加5 (a=21)

mov f0,c

mov a,#10

mul ab; ,c=1,a=214,[a=470(1d6h)]

mov b,#51;b=51

p ab;a=4,b=10

jb f0,loop4

add a,#5;益出结果加5

loop4: mov r2,a;小数后第一位放入R2=9

mov a,b;a=10

clr f0

subb a,#26

mov f0,c

mov a,#10

mul ab

mov b,#51

p ab

jb f0,loop5

add a,#5

loop5: mov r3,a;小数后第二位放R3

end

我不理解,为什么要把测得的数据除以51?而得到的余数为什么又要减26?(26+25=51),我如果选参考电压为+10伏,

有应该如何处理呢?

请各位大虾不吝赐教,谢谢!!!

请讲的详细些,不胜感激!!!

首先,将采集过来的16进制的数值转换成10进制,再将此10进制数值除以255,然后才乘以5,最后得出最终的实际电压值。

但是考虑到在单片机中实现浮点数的计算比较困难,所以采用了下面的方法来实现:

(X)16 = (Y)10

FF 255

Z1=(X)16 *5/FF = X/33H

Z=(5*Y)/255

这里可以得出个位的数值

(X)16 = (Z2)10

33H 10 Z2=(X)16*0AH/33H

=(X)16/5H

这里可以得出小数点后一位的值。

Z3 = (X)16*2H

这里可以得出小数点后第二位的值。

说明的是在程序中,只使用到小数点后一位的值,但是可以根据具体的要求再对程序进行修改,使程序能够达到实际的要求。

上面一段跟你说的程序的原理应该差不多,毕竟33H=55

提醒:《0809算法程序分析》最后刷新时间 2024-03-14 01:07:59,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《0809算法程序分析》该内容的真实性请自行鉴别。