问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ds1302读不了数值啊,感觉那个time[]全是0 啊,求高手解答

发布网友 发布时间:2022-07-18 05:07

我来回答

1个回答

热心网友 时间:2023-10-09 14:34

void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数)
{
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
{
DS1302_IO = ACC0; //相当于汇编中的 RRC
DS1302_CLK = 1;
DS1302_CLK = 0;
ACC = ACC >> 1;
}
}

unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1; //相当于汇编中的 RRC
ACC7 = DS1302_IO;
DS1302_CLK = 1;
DS1302_CLK = 0;
}
return(ACC);
}

void Write1302(unsigned char ucAddr, unsigned char ucDa)//ucAddr: DS1302地址, ucData: 要写的数据
{
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(ucAddr); // 地址,命令
DS1302InputByte(ucDa); // 写1Byte数据
DS1302_CLK = 1;
DS1302_RST = 0;
}

unsigned char Read1302(unsigned char ucAddr)//读取DS1302某地址的数据
{
unsigned char ucData;
DS1302_RST = 0;
DS1302_CLK = 0;
DS1302_RST = 1;
DS1302InputByte(ucAddr|0x01); // 地址,命令
ucData = DS1302OutputByte(); // 读1Byte数据
DS1302_CLK = 1;
DS1302_RST = 0;
return(ucData);
}

void DS1302_SetProtect(bit flag) //是否写保护
{
if(flag)
Write1302(0x8E,0x10);
else
Write1302(0x8E,0x00);
}

void DS1302_SetTime(unsigned char Address, unsigned char Value) // 设置时间函数
{
DS1302_SetProtect(0);
Write1302(Address, ((Value/10)<<4 | (Value%10)));
}

void DS1302_GetTime(SYSTEMTIME *Time)
{
unsigned char ReadValue;
ReadValue = Read1302(DS1302_SECOND);
Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MINUTE);
Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_HOUR);
Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_DAY);
Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_WEEK);
Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MONTH);
Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_YEAR);
Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
}

void DateToStr(SYSTEMTIME *Time)
{
Time->DateString[0] = Time->Year/10 + '0';
Time->DateString[1] = Time->Year%10 + '0';
Time->DateString[2] = '-';
Time->DateString[3] = Time->Month/10 + '0';
Time->DateString[4] = Time->Month%10 + '0';
Time->DateString[5] = '-';
Time->DateString[6] = Time->Day/10 + '0';
Time->DateString[7] = Time->Day%10 + '0';
Time->DateString[8] = '\0';
}

void TimeToStr(SYSTEMTIME *Time)
{
Time->TimeString[0] = Time->Hour/10 + '0';
Time->TimeString[1] = Time->Hour%10 + '0';
Time->TimeString[2] = ':';
Time->TimeString[3] = Time->Minute/10 + '0';
Time->TimeString[4] = Time->Minute%10 + '0';
Time->TimeString[5] = ':';
Time->TimeString[6] = Time->Second/10 + '0';
Time->TimeString[7] = Time->Second%10 + '0';
Time->DateString[8] = '\0';
}

void Initial_DS1302(void)
{
unsigned char Second=Read1302(DS1302_SECOND);
if(Second&0x80)
DS1302_SetTime(DS1302_SECOND,0);
}
参考这个
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机扬声器清理 手机扬声器如何清理 电脑电源12v电压低故障维修 华为手机怎么开启健康运动授权功能 win10怎么修复IE win10自带浏览器打不开怎么办 win10自带浏览器打不开解决办法介绍_百度... 一般电塔上有14根线的是多少伏? 请问这个电塔上是多少伏特的高压线,是不是1000kv的。 只有一台变压器高压如何设计 怎么改手机号? 糖尿病餐后2小时血糖的正常值范围是多少 DS1302实时时钟的问题 ds1302_write(0x8e,0x80);括号里的是什么意思 四川绵阳有没有汉中米皮,在哪? 四川人喜欢吃米皮吗 zenly可以冻结自己的位置吗- 问一问 会计电算化应收应付借项贷项怎么区分 华为加湿器不出雾是什么原因 驾驶机动车在高速公路、城市快速路以外的道路上不按规定车道行驶的扣分吗 win8升级win10后电脑里本来下的东西还有吗?还是等于恢复出厂设置了? 我感冒了吃过药,流出的鼻涕是黄颜色的,但不是浓的鼻涕,请问这是正常的吗? 简单粗暴三鲜馄饨怎么做 “闪击战”理论是谁提出的? 道氏普洱茶06年的老班章怎么样 06年普粹生产的普洱砖茶(生茶)1公斤全球通礼品装的茶放到现在多钱?还能喝么? 在中国移动公司买的小米10s和在小米有品上买的同款机有什么差别吗? 手机话费可以充CF会员吗?怎么充??? 怎样可以用手机话费直接充CF点 怎么用别人的找到他的抖音号? 怎么用别人的找到他的抖音号? 怎么用别人的找到他的抖音? ds1302时钟保护程序怎么写,如果能加调时,闹钟功能就更好了 void set_ds1302(uchar addr,uchar *p,uchar n) { write_ds1302(0x8e,0x00); 中的*p什么意思 DS1302时钟中怎么加入按键调时功能? 观修时脸发热,感觉半个身子热可是摸摸还不热 用完护肤品,感觉脸好烧,但是摸着又不热,还凉凉的,是过敏还是护肤品的问题 用了水密码补水明星系列,感觉脸有点热,但是摸着不热 脸蛋发热别的地方不热是怎么回事 电动自行车,套餐1裸车.若卖,请问自身有电池吗和充电器吗 电瓶车的整备质量包不包括电瓶? 买一辆电动车怎么买啊?看电瓶,电池,控制器,怎么看?到底是买多少瓦的? 死神vs火影2.4剑心变身技能表 死神vs火影1.1剑心怎么变身? 火影vs死神2.4剑心变身按那个键可以变身 足球比赛中,哪些情况下守门员不能在禁区内用手触足球? 门将不能在禁区外用手拿球吗? gc检测法什么意思 1049元挂绿荔枝2天卖空!挂绿荔枝为何能卖到这么贵? 成语 退尖杀生 杀什么生什么的词语 用一个成语来形容电影《杀生》