51单片机中,怎样将两个字节的二进制数转五位十进制数?
意思是:我想用计数器T0作为一个16位的计数器,这样最高可以计到65535,然后用五位LED数码管显示出来。例如,当计到12000个数时,LED显示12000,这样就需要...
意思是:我想用计数器T0作为一个16位的计数器,这样最高可以计到65535,然后用五位LED数码管显示出来。例如,当计到12000个数时,LED显示12000,这样就需要将两个字节(即TL0和TH0)的二进制数转换成十进制数。转换结果为:个位数据存入43H,十位数据存入44H,百位数据存入45H,千位数存入46H,万位数存入47H。小弟只是刚入门的菜鸟,请不要见笑,程序只会写转换到千位数,万位数不知怎样转,如下面的程序,请哪位大哥帮忙改一下下面的程序,将万位数也转出来,小弟跪谢啦!
(下面的程序个位到千万已经转好,但万位还没有转)
;********将十六进制数转换并组合成BCD码************************
MOV 63H,TH0 ; 读取计数器的高8位数据
MOV 60H,TL0 ; 读取计数器的低8位数据
MOV R2,63H
MOV R3,60H
LCALL BIA
MOV 61H,R5
MOV 62H,R6
LCALL READ
AJMP DIS
BIA:CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,#10H
LOOP:CLR C
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP
RET
;*************将组合的CBD码分开并放入显示缓冲区更新数据*********************
READ:MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV R0,#20H
MOV A,61H
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCH A,@R0
MOV A,62H
INC R0
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCH A,@R0
MOV A,20H
JNZ FF
MOV 20H,#00H ;千位没有时显0
MOV A,21H
JNZ FF
MOV 21H,#00H ;百位没有时显0
MOV A,22H
JNZ FF
MOV 22H,#00H ;十位没有时显0
CLR A
FF:RET
;****************************读取转换结果******************************
MOV 46H,20H ;将千位的数据装入46H中
MOV 45H,21H ;将百位的数据装入45H中
MOV 44H,22H ;将十位的数据装入44H中
MOV 43H,23H ;将个位的数据装入43H中
“浴血前锋”大哥:你好!小弟实在搞不来,可不可以请你帮我把程序改一下?谢谢! 展开
(下面的程序个位到千万已经转好,但万位还没有转)
;********将十六进制数转换并组合成BCD码************************
MOV 63H,TH0 ; 读取计数器的高8位数据
MOV 60H,TL0 ; 读取计数器的低8位数据
MOV R2,63H
MOV R3,60H
LCALL BIA
MOV 61H,R5
MOV 62H,R6
LCALL READ
AJMP DIS
BIA:CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,#10H
LOOP:CLR C
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP
RET
;*************将组合的CBD码分开并放入显示缓冲区更新数据*********************
READ:MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV R0,#20H
MOV A,61H
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCH A,@R0
MOV A,62H
INC R0
SWAP A
XCHD A,@R0
INC R0
SWAP A
XCH A,@R0
MOV A,20H
JNZ FF
MOV 20H,#00H ;千位没有时显0
MOV A,21H
JNZ FF
MOV 21H,#00H ;百位没有时显0
MOV A,22H
JNZ FF
MOV 22H,#00H ;十位没有时显0
CLR A
FF:RET
;****************************读取转换结果******************************
MOV 46H,20H ;将千位的数据装入46H中
MOV 45H,21H ;将百位的数据装入45H中
MOV 44H,22H ;将十位的数据装入44H中
MOV 43H,23H ;将个位的数据装入43H中
“浴血前锋”大哥:你好!小弟实在搞不来,可不可以请你帮我把程序改一下?谢谢! 展开
3个回答
展开全部
可以将二进制的每个位的权查表后以压缩BCD格式相加
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询