打印

PICC 无符号长整形转BCD码

[复制链接]
3336|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码

使用特权

评论回复
5
yewuyi| | 2011-10-11 15:12 | 只看该作者
很多芯片型号在8.05版本下是不支持的

使用特权

评论回复
6
ayb_ice| | 2011-10-11 18:55 | 只看该作者
估计要上W个周期

使用特权

评论回复
7
kin0001|  楼主 | 2011-10-13 21:05 | 只看该作者
谢谢各位,因为这几天比较忙,一直没有没有回复,程序已经ok了

使用特权

评论回复
8
kin0001|  楼主 | 2011-10-13 21:05 | 只看该作者
谢谢各位,因为这几天比较忙,一直没有没有回复,程序已经ok了

使用特权

评论回复
9
kin0001|  楼主 | 2011-10-13 21:09 | 只看该作者
我就把分给4楼吧,再次感谢各位:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

63

帖子

0

粉丝