本帖最后由 chenengood 于 2013-2-19 22:37 编辑
DS1302写入数据和读数据 求解
问题一:DS1302写数据写BCD码还是十进制?下面是一段初始化DS1302的程序,这么写对吗?
问题二:DS1302读数据的时候,读出来的是BCD码,以下有段程序这么转化后的结果是不是十进制数值呢?
我疑惑了很久,请假大虾。小弟不胜感激!
以下是一段初始化DS1302数据的,请问这么写对吗?
void init1302()
{ //写入2013-02-27星期三 23:58:51
write1302(0x8e,0x00);
write1302(0x80,0x51); //写入51秒
write1302(0x82,0x58); //写入58分
write1302(0x84,0x23); //写入23时
write1302(0x86,0x27); //写入27日
write1302(0x88,0x02); //写入2月
write1302(0x8c,0x13); //写入13年,2013
write1302(0x8a,0x03); //写入星期三
write1302(0x8e,0x80);
}
以下是一段读取DS1302数据的程序,返回的m值是不是就是十进制数值呢?
uchar read1302(uchar cmd)
{uchar m,k,j,dat;
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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>