英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: 用PICC如何实现16位二进制数转化为BCD码? [打印本页]

作者: winnie    时间: 2009-3-28 14:18
标题: 用PICC如何实现16位二进制数转化为BCD码?
我是说要求代码少,速度快。
我发现用一般的除以10000,1000,100,10这样运算占用的空间太大了。
作者: winnie    时间: 2009-3-28 14:18
定义Count1,Count2一下就可直接调用  
  
  ;----------------------------------------
;-------BIN CONVERT BCD CODE PROGRAM-----
;---IN:Count1(个位)     OUT:Count2(十位)
;----------------------------------------

BIN_BCD:
          movwf   Count1
          CLRF    Count2
LOOP10:
          MOVLW   .10
          SUBWF   Count1,W
          BTFSS   STATUS,C
          GOTO    BIN_BCD90       ;Count1<10

          INCF    Count2,F           ;Count1>=10
          MOVLW   .10
          SUBWF   Count1,F
          GOTO    LOOP10
BIN_BCD90:
          swapf   Count2,W
          andlw   0F0h
          iorwf   Count1,W      
          return
作者: winnie    时间: 2009-3-28 14:19
8K的ROM还是不够用。
可以用减法的
while(var>=10000){
   var=var-10000;
   i=i+1;
}
   bcd[0]=i;
   i=0;
while(var>=1000){
   var=var-1000;
   i=i+1;
}
   bcd[1]=i;
   i=0;
while(var>=100){
   var=var-100;
   i++;
}
   bcd[2]=i;
   i=0;
while(var>=10){
   var=var-10;
   i++;
}
   bcd[3]=i;
   bcd[4]=var;
}




欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://www.enroobbs.com/) Powered by Discuz! X3.2