winnie 发表于 2009-3-28 14:18:42

用PICC如何实现16位二进制数转化为BCD码?

我是说要求代码少,速度快。
我发现用一般的除以10000,1000,100,10这样运算占用的空间太大了。

winnie 发表于 2009-3-28 14:18:52

定义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:33

8K的ROM还是不够用。
可以用减法的
while(var>=10000){
   var=var-10000;
   i=i+1;
}
   bcd=i;
   i=0;
while(var>=1000){
   var=var-1000;
   i=i+1;
}
   bcd=i;
   i=0;
while(var>=100){
   var=var-100;
   i++;
}
   bcd=i;
   i=0;
while(var>=10){
   var=var-10;
   i++;
}
   bcd=i;
   bcd=var;
}
页: [1]
查看完整版本: 用PICC如何实现16位二进制数转化为BCD码?