您的位置:首页单片机义隆单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

EM78系列单片机--5位BCD数转换成一个16位二进制数

[日期:2008-07-01 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
这个程序是将5位BCD数转换成一个16位二进制数,5位BCD数依次存放于R0、R1、R2、MSD在R0的最右端,将16进制数转出示存器H-byte和L-byte
一般转换方法是:转入换数X=abcde(5位BCD数)
X= abcde=10[10[10[10a+b]+c]+d]+e
采用此方式,以高次向低位依次进行二进制的处理调整。
定义 H-byte=0X10
L-byte=0X11 
     R0   =0X12
R1   =0X13
R2   =0X14
H-temp=0x15
L-temp=0X16
BCDTOB  CLR  H-byte
MOV A ,R0
and A ,@0X0FH
mov L-byte  A
call  Mpy10b  ; 结果=10a+b
swapaA  R1
call  Mpy10b   ;结果=10[10a+b]
mov  A, R1
call  Mpy10b;结果=10[10[10a+b]+c]
swapA  R2
call Mpy10b ;结果=10[10[10[10a+b]+c]+d]
mov  A, R2
and  A,@0X0FH
add  L-byte, A
JBC  STATUS,C
  JZ H-byte;果=10[10[10[10a+b]+C]+d+e
     RET        ;BCD 到BIN转换结束 Mpy10b and  A,@OXOFH
     add  L-byte,A
    JBC  STATUS,C
     JZ   H-byte
Mpy10a  BC STATUS,C;单元及进行除2处理
    RLCA  L-byte
     MOV   L-TEMP,A
    RLCA  H-byte      ;最低位调整,
    MOV   H-temp,A        ;
    BC    STATUS,C  逐步进行除2处理
    RLC   L-byte
  

       RLC   H-byte
       BC  STATDS,C 进行第三位二进制处理
       RLC   L-byte
       RLC   H-byte
       BC    STATUS,C  ;进行第四位三进制处理
       RLC   L-byte
       RLC   H-byte    ;一直到第四位
       MOV   A,L-temp
       ADD   A,L-byte
       JBC   STATUS,C
       INC   H-byte
       MOV   A,H-temp
       ADD   H-byte,A
       RET         
主程序
   main  mov  A, @0x60
         mov  R0, A
         mov  A, @0x55
         mov  R1, A
         mov  A, @0x35
         mov  R2, A
         call   BCDTOB
   self   goto  self
              end
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告