资源简介
12864_万年历 是很详细的进行了介绍,有源程序很代码,可以DIY仿真。很好的 很厉害的哦
代码片段和文件信息
//亦木明
//哪天写的忘了。^_^
#include
//#include “ds1302.h“
#define uchar unsigned char
#define uint unsigned int
#define SECOND 0x80 //秒
#define MINUTE 0x82 //分鍾
#define HOUR 0x84 //小時
#define DAY 0x86 //天
#define MONTH 0x88 //月
#define WEEK 0x8a //星期
#define YEAR 0x8c //年
sbit DS1302_RST=P3^0;
sbit DS1302_SCLK=P3^1;
sbit DS1302_IO=P3^2;
typedef struct systime
{
uchar cYear;
uchar cMon;
uchar cDay;
uchar cHour;
uchar cMin;
uchar cSec;
uchar cWeek;
}SYSTIME;
void DS1302_Write(uchar D)
{
uchar i;
for(i=0;i<8;i++)
{
DS1302_IO=D&0x01;
DS1302_SCLK=1;
DS1302_SCLK=0;
D=D>>1;
}
}
uchar DS1302_Read()
{
uchar TempDat=0i;
for(i=0;i<8;i++)
{
TempDat>>=1;
if(DS1302_IO) TempDat=TempDat|0x80;
DS1302_SCLK=1;
DS1302_SCLK=0;
}
return TempDat;
}
void WDS1302(uchar ucAddr uchar ucDat)
{
DS1302_RST = 0;
DS1302_SCLK = 0;
DS1302_RST = 1;
DS1302_Write(ucAddr); // 地址,命令
DS1302_Write(ucDat); // 写1Byte数据
DS1302_SCLK = 1;
DS1302_RST = 0;
}
uchar RDS1302(uchar ucAddr)
{
uchar ucDat;
DS1302_RST = 0;
DS1302_SCLK = 0;
DS1302_RST = 1;
DS1302_Write(ucAddr); // 地址,命令
ucDat=DS1302_Read();
DS1302_SCLK = 1;
DS1302_RST = 0;
return ucDat;
}
void SetTime(SYSTIME sys)
{
WDS1302(YEARsys.cYear);
WDS1302(MONTHsys.cMon&0x1f);
WDS1302(DAYsys.cDay&0x3f);
WDS1302(HOURsys.cHour&0xbf);
WDS1302(MINUTEsys.cMin&0x7f);
WDS1302(SECONDsys.cSec&0x7f);
WDS1302(WEEKsys.cWeek&0x07);
}
void GetTime(SYSTIME *sys)
{
uchar uiTempDat;
uiTempDat=RDS1302(YEAR|0x01);
(*sys).cYear=(uiTempDat>>4)*10+(uiTempDat&0x0f);
// uiTempDat=RDS1302(0x88|0x01);
// (*sys).cMon=((uiTempDat&0x1f)>>4)*10+(uiTempDat&0x0f);
uiTempDat=RDS1302(0x88|0x01);
(*sys).cMon=((uiTempDat&0x1f)>>4)*10+(uiTempDat&0x0f);
uiTempDat=RDS1302(DAY|0x01);
(*sys).cDay=((uiTempDat&0x3f)>>4)*10+(uiTempDat&0x0f);
uiTempDat=RDS1302(HOUR|0x01);
(*sys).cHour=((uiTempDat&0x3f)>>4)*10+(uiTempDat&0x0f);
uiTempDat=RDS1302(MINUTE|0x01);
sys->cMin=((uiTempDat&0x7f)>>4)*10+(uiTempDat&0x0f);
uiTempDat=RDS1302(SECOND|0x01);
sys->cSec=((uiTempDat&0x7f)>>4)*10+(uiTempDat&0x0f);
uiTempDat=RDS1302(MONTH|0x01);
(*sys).cMon=uiTempDat&0x17;
uiTempDat=RDS1302(WEEK|0x01);
sys->cWeek=uiTempDat&0x07;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 84820 2008-07-29 20:05 12864 万年历\12864
文件 123127 2008-07-29 17:35 12864 万年历\12864.DSN
文件 14687 2008-07-29 14:29 12864 万年历\12864.h
文件 14387 2008-07-29 14:29 12864 万年历\12864.h.bak
文件 41461 2008-07-29 20:05 12864 万年历\12864.hex
文件 87 2008-07-29 20:05 12864 万年历\12864.lnp
文件 80134 2008-07-29 20:05 12864 万年历\12864.M51
文件 2775 2008-07-29 20:06 12864 万年历\12864.Opt
文件 1697 2008-07-29 20:06 12864 万年历\12864.plg
文件 1984 2008-10-16 08:41 12864 万年历\12864.PWI
文件 2308 2008-07-29 20:06 12864 万年历\12864.Uv2
....... 2775 2008-07-29 20:03 12864 万年历\12864_Opt.Bak
....... 2308 2008-07-29 17:35 12864 万年历\12864_Uv2.Bak
文件 426 2001-06-24 00:06 12864 万年历\Delay.LST
文件 2489 2008-07-29 19:36 12864 万年历\ds1302.c
文件 2486 2008-07-29 19:36 12864 万年历\ds1302.c.bak
文件 500 2008-07-29 19:23 12864 万年历\ds1302.h
文件 5786 2008-07-29 20:05 12864 万年历\ds1302.LST
文件 7473 2008-07-29 20:05 12864 万年历\ds1302.OBJ
文件 3840 2001-06-24 16:34 12864 万年历\DS1820.C
文件 229 2001-06-23 17:30 12864 万年历\ds1820.h
文件 9433 2008-07-26 17:17 12864 万年历\DS1820.LST
文件 6081 2008-07-26 17:17 12864 万年历\DS1820.OBJ
文件 3694 2008-07-29 19:49 12864 万年历\input_080627.h
文件 3630 2008-07-28 20:28 12864 万年历\input_080627.h.bak
文件 122845 2008-07-29 16:20 12864 万年历\Last Loaded 12864.DBK
文件 9943 2008-07-29 19:01 12864 万年历\lunar.c
文件 10399 2008-07-29 14:50 12864 万年历\lunar.c.bak
文件 448 2008-07-29 16:01 12864 万年历\Lunar.h
文件 19057 2008-07-29 20:05 12864 万年历\lunar.LST
............此处省略16个文件信息
- 上一篇:三菱Q173D运动CPU SV22 OS
- 下一篇:x68nss.xls
评论
共有 条评论