发 帖  
[问答] 关于万年历的一些小问题
2018-4-12 05:10:44  690
收藏 0 收藏 推荐 0 推荐
分享

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 05:10:44   评论 邀请回答
7个回答
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码是什么楼主自己在百度上面搜索一下。
2018-4-12 11:22:26 评论

举报

2018-4-12 12:54:53 评论

举报

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

举报

勇哥-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-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 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

2018-4-14 09:56:13 评论

举报

看看,来这里学习的
2018-4-16 17:56:18 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

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

提问题
关闭

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

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

推荐专区

技术干货集中营

专家问答

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

工程师杂谈

项目|工程师创意

招聘|求职}工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

电路设计论坛

电子元器件论坛

传感技术

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

-

EDA设计论坛

multisim论坛

PCB设计论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

Orcad论坛

-

综合技术与应用

电机控制

工程资源中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

物联网技术

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

-

IC设计论坛

芯片测试与失效分析

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

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

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

高校联盟

深圳大学电子协会

西藏民族学院电子设计协会

西安电子科技大学西电实验室

桂林电子科技大学机电工程协会

鉴鹰电子科技协会

广东海洋大学科技创新协会

福建农林大学电子科技创新协会

湖北理工学院电子技术协会

深圳职业技术学院电子精英训练营

浙江科技学院Zuster

湘潭大学电子科技协会

青岛理工大学琴岛学院天宏开发团队

河南理工大学大学生电器开发部

广西科技大学电气信息创新协会

浙江机电职业技术学院电子制作协会

郑州大学西亚斯国际学院爱电工作室

新乡学院电子创新工作室

洛阳理工学院SmartTeam

苏州工业职业技术学院创新工作室

浙江工业大学GC315团队

杭电-微芯大学生科技创新孵化器

西安工业大学电信科协

商洛学院科技创新协会

大连民族学院创新工作室

南京信息工程大学帆木工作室

-

供求信息发布

方案交易

供需广告

芯片求购|供应发布区