DS1302真是麻烦啊,里面的bcd转换我看的头都大了

2019-07-15 15:41发布

正常不是把用户输出的十进制数据转为BCD码才能被DS1302识别吗
  1. <blockquote>/*------------------------------------------------
复制代码前面数组定义是
unsigned char time_buf1[8] = {20,15,11,6,20,59,00,5};//空年月日时分秒周
unsigned char time_buf[8] ;
麻烦大家看一下这个函数吧,这个函数的功能应该就是把十进制的时间改为二进制然后写入DS1302
所以注释的BCD码处理应该指的就是十进制转bcd码,可是安装这个算法完全算不出来BCD码,我们取i=1吧,那么就是
                tmp=time_buf1[1]/10;                            //15/10=1=tmp
                time_buf[1]=time_buf1[1]%10;             //15%10=5=time_buf[1]
                time_buf[1]=time_buf[1]+tmp*16;       //5+1*16=21=time_buf[1]
这个21很明显绝不是BCD码啊,还是我里面什么想错了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
ymw501817897
1楼-- · 2019-07-15 17:57
 精彩回答 2  元偷偷看……
呵呵哒哒哒你妹
2楼-- · 2019-07-15 19:19
啊勒,代码怎么被屏蔽了
ymw501817897
3楼-- · 2019-07-15 23:57
其实你程序应该是对的:15H = 21,所以15H转换为BCD码就是21H.


例如:11H要转换为BCD码,结果应该为11H = 17(十进制) ->17H(BCD码);
所以,可以这么算:11H/10 =1;11H%10 = 7; BCD码等于1*16+7=17H。
程序应该为
unsigned char Hex2BCD(unsigned char hex)
{
        unsigned char res;
        res = hex/10*16+hex%10;
        ruturn res;
}
gusk
4楼-- · 2019-07-16 03:37
路过,我是来学习的,楼  下继续哈
taiheth
5楼-- · 2019-07-16 07:42

我给你的不是海誓山盟,而是一颗不变的心!楼主可以参考一下。。

http://www.taiheth.com   
http://www.dgkjly.com
http://www.jinluodz.com
http://www.konuaer.com
http://www.kangbidz.com  
呵呵哒哒哒你妹
6楼-- · 2019-07-16 12:30
 精彩回答 2  元偷偷看……

一周热门 更多>