?? hex to bcd 的算法程序.txt
字號:
一個 hex to bcd 的算法程序 [xiaoqi.] [77次] 2001-2-10 20:08:52
HEX_BCD:CLR A
MOV 30H,A
MOV 31H,A
MOV 32H,A
MOV R2,#15
H_B0: MOV A,R1
RLC A
MOV R1,A
MOV A,R0
RLC A
MOV R0,A
MOV A,32H
RLC A
ACALL BCD_ADJ
MOV 32H,A
MOV A,31H
RLC A
ACALL BCD_ADJ
MOV 31H,A
MOV A,30H
RLC A
ACALL BCD_ADJ
MOV 30H,A
DJNZ R2,H_B0
MOV A,R0
RLC A
MOV A,32H
RLC A
MOV 32H,A
MOV A,31H
RLC A
MOV 31H,A
MOV A,30H
RLC A
MOV 30H,A
RET
BCD_ADJ:PUSH PSW
PUSH ACC
CJNE A,#50H,$+2
JC B1
POP ACC
ADD A,#30H
PUSH ACC
B1: ANL A,#0FH
CJNE A,#5,$+2
JC B2
POP ACC
ADD A,#3
PUSH ACC
B2: POP ACC
POP PSW
RET
周立功的。
看我的ltoa() [KK] [59次] 2001-2-11 1:21:24
;無符號長型轉(zhuǎn)換成壓縮BCD碼
;輸入?yún)?shù): 轉(zhuǎn)換后BCD碼存儲指針 無符號長型值
;void ltoa(unsigned char data *BCDptr, unsigned long value);
; BCD_ptr = R7 value = ?_LTOA?BYTE
_LTOA:
MOV R6,AR7
MOV R7,#24
MOV R1,#00H
MOV R2,#00H
MOV R3,#00H
MOV R4,#00H
MOV A,?_LTOA?BYTE+4
JNZ ?L00001
MOV A,?_LTOA?BYTE+3
JNZ ?L00001
MOV A,?_LTOA?BYTE+2
JNZ ?L00001
SJMP ?L0000A
?L00001:
CLR C
MOV A,?_LTOA?BYTE+4
RLC A
MOV ?_LTOA?BYTE+4,A
MOV A,?_LTOA?BYTE+3
RLC A
MOV ?_LTOA?BYTE+3,A
MOV A,?_LTOA?BYTE+2
RLC A
MOV ?_LTOA?BYTE+2,A
MOV A,R1
ADDC A,R1
DA A
MOV R1,A
MOV A,R2
ADDC A,R2
DA A
MOV R2,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,?L00001
?L0000A:
MOV R0,AR6
; MOV R7,AR4
; LCALL BCD_TO_ASC ; No:12
MOV R7,AR3
LCALL BCD_TO_ASC ; No:34
MOV R7,AR2
LCALL BCD_TO_ASC ; No:56
MOV R7,AR1
LCALL BCD_TO_ASC ; No:78
MOV R5,#5 ; Test first 6 bit
MOV R0,AR6
?L00002:
MOV A,@R0
JNZ ?L00003
MOV @R0,#0AH
INC R0
DJNZ R5,?L00002
?L00003:
RET
能不能把C程序放到上面來! [逆風飛揚] [17次] 2001-2-11 15:41:19
讓大伙也學學!
這是一個調(diào)用外部匯編的例子 [KK] [31次] 2001-2-11 20:05:37
只需在應用文件中定義ltoa的函數(shù)聲明,然后直接使用即可,不要忘了加入Bl51連接
中。
用C編的,很粗糙。測試成功的。 [方塘] [5次] 01-6-5 下午 01:07:29
#define uchar unsigned char
void hex2bcd(uchar xhex,uchar data *BCDptr)
{
BCDptr[0] = xhex/100; //百位
BCDptr[1] = (((xhex%100)/10)<<4)|((xhex%100)%10); //十個位
}
點擊這里回復這篇貼子>>
_____________________________________________________________________________
Copyright?,C51BBS論壇 2000-2001
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -