完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
DS1302写入数据和读数据 求解
问题一:DS1302写数据写BCD码还是十进制?下面是一段初始化DS1302的程序,这么写对吗? 问题二:DS1302读数据的时候,读出来的是BCD码,以下有段程序这么转化后的结果是不是十进制数值呢? 我疑惑了很久,请假大虾。小弟不胜感激! 以下是一段初始化DS1302数据的,请问这么写对吗? void init1302() { //写入2013-02-27星期三 23:58:51 write1302(0x8e0x00); write1302(0x800x51); //写入51秒 write1302(0x820x58); //写入58分 write1302(0x840x23); //写入23时 write1302(0x860x27); //写入27日 write1302(0x880x02); //写入2月 write1302(0x8c0x13); //写入13年,2013 write1302(0x8a0x03); //写入星期三 write1302(0x8e0x80); } 以下是一段读取DS1302数据的程序,返回的m值是不是就是十进制数值呢? uchar read1302(uchar cmd) {uchar mkjdat; ds1302_rst=0; _nop_(); _nop_(); ds1302_rst=1; _nop_(); _nop_(); write1302byte(cmd); dat=read1302byte(); ds1302_sclk=1; ds1302_rst=0; j=dat>>4; //右移4位,将高4位取出得到十位数 k=dat 0x0f; //舍去高位保留低4位得到个位数 m=j*10+k; // m=dat/16*10+dat%16; //这个是网上看到的,对吗? return m; } |
|
相关推荐
1个回答
|
|
上面的全部正确,
一开始 ds1302 写入的是 bcd 码接下来读出来的也是 bcd 码,然后通过右移转换成10进制数网上看到的那个方法也对,自己用个数据带入算一下,右移4位 = 除以16 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
195 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
172 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
453 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
697 浏览 2 评论
602 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11977 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 22:15 , Processed in 0.684063 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号