打印

12864和1302的万年历问题

[复制链接]
1470|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sdu_yqc|  楼主 | 2011-4-28 21:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uiTempDat=RDS1302(YEAR|0x01);
//读取年
(*sys).Year=(uiTempDat>>4)*10+(uiTempDat&0x0f);

uiTempDat=RDS1302(MONTH|0x01);   //读取月
(*sys).Month=((uiTempDat&0x1f)>>4)*10+(uiTempDat&0x0f);


看了网上的例程,上面两句是GetTime的前两句,只是不懂右移四位再乘以10,是什么意思?还有下面的
((uiTempDat&0x1f)>>4)*10,求解。。。

相关帖子

沙发
NE5532| | 2011-4-28 22:26 | 只看该作者
看不懂还不如自己想想该如何写。

使用特权

评论回复
板凳
原野之狼| | 2011-4-28 23:29 | 只看该作者
A1:
查下啥是BCD码
A2:
同样看看BCD是啥,并且看下月份是怎么表达的,提示一下,月份最大为12

使用特权

评论回复
地板
sdu_yqc|  楼主 | 2011-4-30 09:50 | 只看该作者
A1:
查下啥是BCD码
A2:
同样看看BCD是啥,并且看下月份是怎么表达的,提示一下,月份最大为12
原野之狼 发表于 2011-4-28 23:29

由BCD转为10进制,可由下面的函数实现,,可月份为什么不能这样写?

uchar BcdToBin(uchar val)
{
val = (val >> 4) * 10 + (val & 0x0f);//将BCD码转换为10进制数
return val;         //返回10进制数
}

使用特权

评论回复
5
zjy.zz| | 2011-6-18 13:32 | 只看该作者
学习了

使用特权

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

本版积分规则

0

主题

140

帖子

1

粉丝