AD转换成模拟量,汇编实现问题!
如AD=0FAH(250), 8位精度,5V基准,则此时对应的电压应该是FA/FF*5=250/255*5=4.902V,如何用汇编语言实现这一转换呢?即250*5/255的这个转换?
全部回复(6)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@dxgung
感谢您的关注,我是想知道实现这种算法的原理,比如像怎样移位(左移/右移,移多少次),然后加/减之类的实现算法.我想不同的芯片也仅仅指令的不同吧,但算法应该是一样的,期待您的指点.
大师,你是说在比如数码显示出来,对吗,这样有一个算法
;*******************************************************************************
;文件:频率表——转换
;作者:罗工
;公司:
;日期:25/4/2005
;
;*******************************************************************************
;****************16位二进制数转换为BCD码************
;入口参数: L_BYTE低字节 H_BYTE高字节
;出口参数: W0,W1,W2 BCD的最高位在W0中
BT_BCD:
BCLR FC
B0MOV R,#10H
MOV A,#00H
MOV W0,A
MOV W1,A
MOV W2,A
LOOP16: RLCM L_BYTE
RLCM H_BYTE
RLCM W2
RLCM W1
RLCM W0
DECMS R
JMP LOOP17
RET
LOOP17: CLR Y
B0MOV Z,#1AH
CALL ABCD
B0MOV Z,#1BH
CALL ABCD
B0MOV Z,#1CH
CALL ABCD
JMP LOOP16
ABCD: MOV A,#03H
ADD A,@YZ
MOV W3,A
BTS0 W3.3
MOV @YZ,A
MOV A,#30H
ADD A,@YZ
MOV W3,A
BTS0 W3.7
MOV @YZ,A
RET
;*******************************************************************************
;文件:频率表——转换
;作者:罗工
;公司:
;日期:25/4/2005
;
;*******************************************************************************
;****************16位二进制数转换为BCD码************
;入口参数: L_BYTE低字节 H_BYTE高字节
;出口参数: W0,W1,W2 BCD的最高位在W0中
BT_BCD:
BCLR FC
B0MOV R,#10H
MOV A,#00H
MOV W0,A
MOV W1,A
MOV W2,A
LOOP16: RLCM L_BYTE
RLCM H_BYTE
RLCM W2
RLCM W1
RLCM W0
DECMS R
JMP LOOP17
RET
LOOP17: CLR Y
B0MOV Z,#1AH
CALL ABCD
B0MOV Z,#1BH
CALL ABCD
B0MOV Z,#1CH
CALL ABCD
JMP LOOP16
ABCD: MOV A,#03H
ADD A,@YZ
MOV W3,A
BTS0 W3.3
MOV @YZ,A
MOV A,#30H
ADD A,@YZ
MOV W3,A
BTS0 W3.7
MOV @YZ,A
RET
0
回复
提示