时钟芯片16进制时间转换问题

时钟芯片16进制时间转换问题

很多时钟芯片的时间显示是16进制的,比如0x15就表示15点。如果用系统自带的printf的话就会增大系统内存,甚至是不能使用,比如本人在扬尘监测系统中就碰到这个问题,在向服务器发送的数据中需要时间,但是主板当时没有做上,想想也是多此一举,你数据接收到的时候,把这个时间记录下来,不就行了么?非要我们发送,但是没办法,协议就是这么要求,于是我只能外接一个时钟模块了,原来用的pcf8563,但是用完了,着急用,手头只有ds1302,就用了这种。
这两种都是十六进制显示时间,这就遇到我开头的问题,由于程序很大,使用printf后竟然说超了,没办法,只能自己写了个小程序,效果不错,有需要的可以用用。
u8 hextoint(u8 x)
{
u8 v;
if(x>=0x10 && x<=0x19) v=x-6; else v=x;
if(x>=0x20 && x<=0x29) v=x-12;
if(x>=0x30 && x<=0x39) v=x-18;
if(x>=0x40 && x<=0x49) v=x-24;
if(x>=0x50 && x<=0x59) v=x-30;
if(x>=0x60 && x<=0x69) v=x-36;

return v;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值