返回列表 发帖

学习DS1302,碰到十六进制转十进制问题

学习DS1302,碰到十六进制转十进制问题,请高手给个编程思路好吗?谢谢了

电子园商城推荐:


把问题说具体点?

TOP

C的还是汇编的啊?

TOP

TOP

谢谢老王啊! 要是把程序里的“除以16改成向右移动4位”可以吗?

TOP

C的还是汇编的啊? sunhm 发表于 2009-6-27 18:37

 

用C。 觉得疑惑的地方时,我把16进制数从变量里取出,转换为十进制数后,再存到变量里,不还是以16进制数形式存储的吗?

TOP

用除法来做,

TOP

LZ的意思应该是hex转bcd,看看下面的怎么样:

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

谢谢楼上的同学们。找到了个例子。转换时好像得乘以16才行

例:十六进制数FFFF转换为十进制数

      十六进制数F80F按权展开形式如下:

(F80F)16=15×163+8×162+0×161+15×160=(61440+2048+0+15)10=(63503)10结果为: (F80F)2=(63503)10

TOP

其实应该很简单啊。我写DS1302的时候这么写的
uchar changebcd(uchar timer)
{
        uchar rechangebcd,ge,shi;
ge=timer%16;
        shi=timer/16;

        rechangebcd=shi*10+ge;

        return rechangebcd;
}

TOP

1302是 BCD码呀...

TOP

假设ucSetArray【1】为某个值
ucSetArray[1]>>4)%10     十位
ucSetArray[1]&0x0f)%10   个位
http://shop35044302.taobao.com出售51学习板-带无线模块,代做设计,提供技术支持

TOP

谢谢老王啊! 要是把程序里的“除以16改成向右移动4位”可以吗? zjzj_007 发表于 2009-6-28 09:32
当然可以了,右移一位就相当于除以2,四位就是除以16...

TOP

返回列表

站长推荐 关闭


“AVR事无巨细系列”PDF版正式发布!欢迎下载支持(更新)

花了1个月时间,终于把这个系列写完了,在此留念一下。CEPARK AVR也准备要出售了,这个系列就是为之量身打造的,希望大家多多支持论坛发展。 之前也没有玩过AVR ...


查看