[问答] 关于万年历的一些小问题

[复制链接]
发表于 2018-4-12 05:10:44   340 查看 7 回复 显示全部楼层 倒序浏览
分享

switch(count)

                          {

                                  case 1:

                          temp=ds1302_read_byte(0x80);  //读取秒数

                                                  temp=temp+1;  //秒数加1

                          up_flag=1;    //数据调整后更新标志

                                                  if((temp&0x7f)>0x59)   //超过59秒,清零

                          temp=0;                                                                  

                                                  break;

                           case 5:

                          temp=ds1302_read_byte(0x86);  //读取日数

                                                  temp=temp+1;  //日数加1

                          up_flag=1;

                                                  if(temp>0x31)

                                                  temp=1;

                                                  break;

                           case 6:

                          temp=ds1302_read_byte(0x88);  //读取月数

                                                  temp=temp+1;  //月数加1

                                                  up_flag=1;

                                                  if(temp>0x12)

                                                  temp=1;

                                                  break;

                           case 7:

                          temp=ds1302_read_byte(0x8c);  //读取年数

                                                  temp=temp+1;  //年数加1

                          up_flag=1;

                                                  if(temp>0x85)

                                                  temp=0;

                                                  break;

                               default:break;


请问 if(temp>0x85)   if(temp>0x12)   if(temp>0x31)   if((temp&0x7f)>0x59) 该怎么理解呢?

temp=temp-1;  //年数减1

if(temp==-1)

temp=0x85

甚至还有这个????59这个整数怎么变成进制0x59来比较的??不是应该temp大于十进制的59的吗


奖励10积分

人中狼 2018-4-12

DS1302的时钟数据没有其他标志位的情况下是BCD编码,BCD编码就是4位二进制数代表一个十进制数,数字范围是0-9,所以一个字节8位就有2个BCD码,就是两位十进制数,比如0X59代表59秒,这个要拆开看,5在前,是高4位,就代表十进制的50,9在后,是低四位,就代表十进制的9,加起来就是十进制的59了

高级工程师

发表于 2018-4-12 05:10:45  
DS1302的时钟数据没有其他标志位的情况下是BCD编码,BCD编码就是4位二进制数代表一个十进制数,数字范围是0-9,所以一个字节8位就有2个BCD码,就是两位十进制数,比如0X59代表59秒,这个要拆开看,5在前,是高4位,就代表十进制的50,9在后,是低四位,就代表十进制的9,加起来就是十进制的59了
回复

点赞 举报

高级工程师

发表于 2018-4-12 11:22:26  
DS1302读出来的是BCD码,至于BCD码是什么楼主自己在百度上面搜索一下。
回复

点赞 举报

版主

发表于 2018-4-12 12:54:53  
码制不一样
回复

点赞 举报

助理工程师

发表于 2018-4-13 09:07:38  
年份的0x85没看懂,0x59就是59秒,0x31就是一个月最多有31天,0x12也是12个小时
回复

点赞 举报

发表于 2018-4-13 15:34:20    楼主|
勇哥-lzu 发表于 2018-4-13 09:07
年份的0x85没看懂,0x59就是59秒,0x31就是一个月最多有31天,0x12也是12个小时

0x59 16进制不是其他数吗,我知道这是59秒,可是到底是怎么搞成等于10进制的59秒的?按照道理来说16进制的59和10进制的59不是两个完全不同的数吗,怎么居然可以作为10进制的59来比较了?不应该是大于59然后什么什么的
回复

点赞 举报

助理工程师

发表于 2018-4-14 09:56:13  
异世界的投影 发表于 2018-4-13 15:34
0x59 16进制不是其他数吗,我知道这是59秒,可是到底是怎么搞成等于10进制的59秒的?按照道理来说16进制的59和10进制的59不是两个完全不同的数吗,怎么居然可以作为10进制的59来比较了?不应该是大于59然后什么什么的

这只是一种编码方式,做一个简单的转换就行了;用来做比较的时候没有10进制的数,用0x59表示十进制的59,比较的时候也是和0x59做比较的,0x0A是十进制的10,直观上不好看,把他转换成0x10表示,直观上看起来就容易了,但是0x10在做比较的时候,0x10就是十进制的16

评分

参与人数 1积分 +5 收起 理由
异世界的投影 + 5 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

回复

点赞 举报

发表于 7 天前  
看看,来这里学习的
回复

点赞 举报

高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区