英锐恩单片机论坛,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://enroobbs.com/)
Powered by Discuz! X3.2