12864和1302的万年历问题

[复制链接]
2148|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进制数
}
zjy.zz 发表于 2011-6-18 13:32 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

140

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部