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
回復