时钟芯片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;
}