在51单片机中,使用汇编语言,如何将十六进制数转换成十进制。

提前是不知道这个十六进制的,是由计数器得到的,送到数码管显示十进制计数结果。... 提前是不知道这个十六进制的,是由计数器得到的,送到数码管显示十进制计数结果。 展开
 我来答
sting549
推荐于2018-03-29 · TA获得超过201个赞
知道答主
回答量:63
采纳率:0%
帮助的人:70.6万
展开全部
程序经过仿真调试通过,如下所示:

MOV R0, TL0
MOV R1, TH0
CLR A
MOV R2, A, ;先清零
MOV R3, A,
MOV R4, A,
MOV R5, #16 ;共转换十六位数
LOOP:
CLR C
MOV A, R0 ;从待转换数的高端移出一位到Cy
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R4 ;送到BCD码的低端
ADDC A, R4 ;带进位加。自身相加,相当于左移一位
DA A ;十进制调整,变成BCD码
MOV R4, A
MOV A, R3
ADDC A, R3
DA A
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP ;共转换十六位数
;-------至此,已经把TH1 TL1中的数字,转换成BCD码,送到了R2 R3 R4。
;-------下面,分别存入R4 R3 R2 R1 R0。
MOV A, R4
MOV B, #16
DIV AB
MOV R1, A
MOV R0, B

MOV A, R2
MOV R4, A

MOV A, R3
MOV B, #16
DIV AB
MOV R3, A
MOV R2, B
RET
;完
追问
看不懂啊,感觉有点不对呀
追答
下面是十六进制转十进制程序,原理是:
例:十六进制的2AF5=十进制的5*16+F*16+A*16*16+2*16*16*16;

unsigned char ret4,ret3,ret2,ret1;//定义位的值
ret4=ret/0x1000; //取出千位的值,注意0x1000是个十六进制数
ret=ret<<4; //ret变量左移四位
ret3=ret/0x1000; //取出百位的值
ret=ret<<4;
ret2=ret/0x1000; //取出十位的值
ret=ret<<4;
ret1=ret/0x1000; //取出个位的值
ret=ret1+ret2*16+ret3*16*16+ret4*16*16*16;//各位的值乘以位权,完成十六转十进制
return(ret);

C语言看得清楚啊,希望对你有帮助,祝你成功&顺利!
百度网友a22d405
2011-04-30 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:34.7万
展开全部
把数值送到寄存器A中,
mov b,#10
div ab
得到的a即是商,也就是十位,b中是余数,也就是个位。
如果位数更多的话,例如三位六进制数,100关到b中,相除,得到的a中就是最高位,先存放到别的寄存器中,再
mov a,b
mov b,10
div ab
得到的a就是十位喽,b中自然是个位
就是这个原理,再想想,不难的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wocaogoogle222
2011-05-02
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
楼主可以到网上搜索一下,很多这样的子程序。在使用时要注意这段子程序占用了哪些存储单元,程序的入口和出口分别是什么。你可以把计数器得到的数值赋给转换子程序的入口单元,转换结束后就可以从出口的存储地址得到结果,然后做一下处理送到数码管显示。
这类程序有很多,楼主只要注意它使用了哪些存储地址即可顺利使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Binzzo
2011-04-28 · 超过11用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:32.4万
展开全部
unsigned char code seg_code[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, // 0--9
0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00}; // A, b, C, d, E, F

是几就点亮相应的LED脚。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友97ef061
2011-04-28 · 超过31用户采纳过TA的回答
知道答主
回答量:167
采纳率:0%
帮助的人:70.2万
展开全部
共阳数码管显示数字吗?0~9:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式