PICC 无符号长整形转BCD码

[复制链接]
4193|8
 楼主| kin0001 发表于 2011-10-11 09:26 | 显示全部楼层 |阅读模式
void BCDFunction(unsigned long Value)
{
   BCD_k=(Value%1000000)/100000;
   BCD_h=(Value%100000)/10000;
   BCD_t=(Value%10000)/1000;
   BCD_o=(Value%1000)/100;
}

//编译不能通过,使用的是PICC V8.05,请指教
Light_David 发表于 2011-10-11 09:36 | 显示全部楼层
:L天!这Code,编译过了,MCU可能就**了,
yewuyi 发表于 2011-10-11 12:10 | 显示全部楼层
芯片型号?
兰天白云 发表于 2011-10-11 13:52 | 显示全部楼层
说实在的LZ太懒

方法很多
1:用移位+调整的方法,不但代码量小(编译后),执行速度也快
2:用LZ的方法也可以,效率太低,但LZ的代码确实不对

无符号长整形,应该是无符号长整型  即最大0xffffffff,4字节,转换成10进制应该有4294967295,多达10位
LZ的BCD码变量定义可能有问题,采用压缩BCD码,需要5字节,我想LZ不需要这么大的数吧
1:先判断范围,如果溢出则另行处理
   
举个例子(1000以内),例 0x023b(571)
2:先除以一个数,比如100,得到商=5
3:把上一步的余数保留=71
4:把余数再除以10,得到商=7,再保留余数=1
5:两个商+最后的余数就得到了BCD码
yewuyi 发表于 2011-10-11 15:12 | 显示全部楼层
很多芯片型号在8.05版本下是不支持的
ayb_ice 发表于 2011-10-11 18:55 | 显示全部楼层
估计要上W个周期
 楼主| kin0001 发表于 2011-10-13 21:05 | 显示全部楼层
谢谢各位,因为这几天比较忙,一直没有没有回复,程序已经ok了
 楼主| kin0001 发表于 2011-10-13 21:05 | 显示全部楼层
谢谢各位,因为这几天比较忙,一直没有没有回复,程序已经ok了
 楼主| kin0001 发表于 2011-10-13 21:09 | 显示全部楼层
我就把分给4楼吧,再次感谢各位:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

63

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部