用PICC如何实现16位二进制数转化为BCD码?
我是说要求代码少,速度快。我发现用一般的除以10000,1000,100,10这样运算占用的空间太大了。 定义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 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]