求一下单片机的程序编码总体作用和每一步的作用

voidSET_DS1302(){uchari;Write_DS1302(0x8e,0x00);for(i=0;i<7;i++){Write_DS1302(0x80+2*... void SET_DS1302()
{
uchar i;
Write_DS1302(0x8e,0x00);
for(i=0;i<7;i++)
{
Write_DS1302(0x80+2*i,(DateTime[i]/10<<4|(DateTime[i]%10)));
}
Write_DS1302(0x8e,0x80);
}
/*------------------------------------
读取当前时期时间
------------------------------------*/
void GetTime()
{
uchar i;
for(i=0;i<7;i++)
{
DateTime[i]=Read_Data(0x81+2*i);
}
}

/*------------------------------------
时间和日期转换成数字字符
------------------------------------*/
void Format_DateTime(uchar d,uchar *a)
{
a[0]=d/10+'0';a[1]=d%10+'0';
}
/*------------------------------------
判断是否为闰年
------------------------------------*/
uchar isLeapYear(uint y)
{
return (y%4==0&&y%100!=0)||(y%400==0);
}
/*------------------------------------
星期转换
------------------------------------*/
void RefreshWeekDay()
{
uint i,d,w=5;
for(i=2000;i<2000+DateTime[6];i++)
{
d=isLeapYear(i)? 366 : 365;
w=(w+d)%7;
}
d=0;
for(i=1;i<DateTime[4];i++)d+=MonthsDays[i];
d+=DateTime[3];
DateTime[5]=(w+d)%7+1;
}
想要的就是以上编程程序上的每一步的作用解释。
展开
 我来答
狼牙0354
2014-06-25 · 超过11用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:17.3万
展开全部
void SET_DS1302()
{
uchar i;
Write_DS1302(0x8e,0x00); //去除DS1302写保护
for(i=0;i<7;i++)
{
Write_DS1302(0x80+2*i,(DateTime[i]/10<<4|(DateTime[i]%10))); //写入初始时间
}
Write_DS1302(0x8e,0x80); //写保护使能
}
/*------------------------------------
读取当前时期时间
------------------------------------*/
void GetTime()
{
uchar i;
for(i=0;i<7;i++)
{
DateTime[i]=Read_Data(0x81+2*i); //将当前时间存入数组
}
}

/*------------------------------------
时间和日期转换成数字字符
------------------------------------*/
void Format_DateTime(uchar d,uchar *a)
{
a[0]=d/10+'0';a[1]=d%10+'0'; //因为从1302中读取的数据不能直接用于显示,所以要进行转 换然后才能用于液晶或者数码管显示
}
/*------------------------------------
判断是否为闰年
------------------------------------*/
uchar isLeapYear(uint y)
{
return (y%4==0&&y%100!=0)||(y%400==0); //很简单的闰年判断
}
/*------------------------------------
星期转换
------------------------------------*/
void RefreshWeekDay() //星期转化
{ //其实这些转换都不需要,直接通过相关的 命令读取1302数据即可
uint i,d,w=5;
for(i=2000;i<2000+DateTime[6];i++)
{
d=isLeapYear(i)? 366 : 365;
w=(w+d)%7;
}
d=0;
for(i=1;i<DateTime[4];i++)d+=MonthsDays[i];
d+=DateTime[3];
DateTime[5]=(w+d)%7+1;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光... 点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
百度网友d81ad5f
2014-06-24 · TA获得超过187个赞
知道小有建树答主
回答量:311
采纳率:50%
帮助的人:167万
展开全部
先采纳后解释
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式