怎样将十六进制数转成BCD码 点击:6601 | 回复:10



东方

    
  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 67回
  • 年度积分:0
  • 历史总积分:215
  • 注册:2007年7月11日
发表于:2008-10-24 22:12:14
楼主

向各位请教一个问题,用8051单片机。将片内的十六进制数转成BCD码,并在端口上输出的汇编程序。




qq444

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 424回
  • 年度积分:0
  • 历史总积分:2532
  • 注册:2004年10月20日
发表于:2008-10-24 22:57:28
1楼
一个位对应着 一个8421

轻凡

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-11-17 22:13:35
2楼

;假设一个十六进制数为7A

     MOV R0,7A

    MOV A,R0

    ANL A,#0FH;取低4位

    CJNE A,#9,L1;(A)不等于9跳转到L1

    MOV R2,A

    SJMP L4

L1:JNC L2;C等于0跳转到L2,即(A)大于9

    MOV R2,A

    SJMP L4

L2 :CJNE A,#0DH,L3;(A)不等于13跳转到L3

    MOV R2,#19

    SJMP L4

L3:ANL A,#5

    ADD A,#16

    MOV R2,A

L4:MOV A,R0

    SWAP A

    ANL A,#0FH

    CJNE A,#9,L5

    MOV R3,A

    SJMP L8

L5:JNC L6

    MOV R3,A

    SJMP L8

L6:CJNE A,#ODH,L7

    MOV R3,#19

    SJMP L8

L7:ANL A,#5

    ADD A,#16

    MOV R3,A

L8:MOV A,R2

    ANL A,#0F0H

    JNZ L9;判断A即R2高4位是否为0,A不为0跳转到L9

    MOV A,R3;当R2的高4位为零执行下面几条指令,将R3的低4位移到R2高4位

    SWAP A

    ANL A,#F0H

    ADD A,R2

    MOV R2,A

    MOV A,R3;以下几条指令用来将R3的高4位移到低4位

    SWAP A

    ANL A,#0FH

    MOV R3,A

L9:MOV P0,R2;输出转换后的BCD码

    MOV P2,R3

老狼

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 821回
  • 年度积分:0
  • 历史总积分:1588
  • 注册:2008年3月01日
发表于:2008-11-20 20:23:56
3楼
楼上的不错,但要求速度时就要建一个256双字节表格了

lclzg

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 26回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2008年8月28日
发表于:2008-11-30 01:00:15
4楼

我有现成的子程序;char型 int型 long型 带正负 bin 与dec 互转 汇编的速度挺快 楼主可告诉我邮箱 我给你发过去QQ:525019550 email:lclzg@163.com

亚星

  • 精华:0帖
  • 求助:1帖
  • 帖子:3帖 | 97回
  • 年度积分:0
  • 历史总积分:504
  • 注册:2008年11月17日
发表于:2008-12-31 16:22:21
5楼
楼上  好人呀。。。。

伏牛

  • 精华:1帖
  • 求助:0帖
  • 帖子:26帖 | 176回
  • 年度积分:0
  • 历史总积分:515
  • 注册:2005年6月26日
发表于:2009-01-07 21:19:05
6楼

;假设一个十六进制数在7AH中

mov a,7ah

mov b,#100

div ab

mov p0,a

mov  a,b

mov b,#10

div ab

swap a

orl a,b

mov p1,a

;将7AH转换为BCD码,百位输出到P0.0--P0.3,十位输出到P1.4--P1.7,个位输出到P1.0--P1.3

 

 

cgy918

  • 精华:0帖
  • 求助:1帖
  • 帖子:32帖 | 1169回
  • 年度积分:0
  • 历史总积分:376
  • 注册:2008年2月19日
发表于:2009-01-12 16:36:54
7楼
2楼的已经很详细了         

东方

  • 精华:2帖
  • 求助:0帖
  • 帖子:33帖 | 67回
  • 年度积分:0
  • 历史总积分:215
  • 注册:2007年7月11日
发表于:2009-07-11 09:56:53
8楼

谢谢大家………………………………!

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2009-07-14 16:29:36
9楼

注意‘DA A’指令                             

yutian_gongkong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2009年7月16日
发表于:2009-08-04 15:38:23
10楼
欢迎加入单片机QQ群 90850907

讨论单片机方面的技术问题

或上http://www.eehome.cn/?a=include下载单片机方面的资料

热门招聘
相关主题

官方公众号

智造工程师