📄 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
;无符号长型转换成压缩BCD码
;输入参数: 转换后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
让大伙也学学!
这是一个调用外部汇编的例子 [KK] [31次] 2001-2-11 20:05:37
只需在应用文件中定义ltoa的函数声明,然后直接使用即可,不要忘了加入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 + -