• 大小: 16KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: 代码  

资源简介

很好不错 选对了就得啦 实时时钟代码

资源截图

代码片段和文件信息

/*******************************************************

             天狼星电子版权所有 
             ->产品网站 http://www.tlxmcu.com/
             ->产品网店 http://shop59388970.taobao.com/
             ->产品咨询 QQ:1412840915 
 ->Email:tlxmcu@163.com
  
********************************************************/


//********************************************************/
//版    本:V1.0
//
//功能描述:上电之后就可以看到数码管开始计时

//********************************************************/

#include
#include 
#define uchar unsigned char 
#define uint unsigned int 

sbit sck=P1^0;
sbit io=P1^1;
sbit rst=P3^6;
sbit smgen=P2^3;

unsigned char code smg_du[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x710x000x10};
unsigned char code smg_we[]={0x080x180x280x380x480x580x680x78};
uchar time_data[7]={106417115830}; //年周月日时分秒
uchar write_add[7]={0x8c0x8a0x880x860x840x820x80};
uchar read_add[7]={0x8d0x8b0x890x870x850x830x81};
uchar disp[8];


void write_ds1302_byte(uchar dat);
void write_ds1302(uchar adduchar dat);
uchar read_ds1302(uchar add);
void set_rtc(void);
void read_rtc(void);
void time_pros(void);
void display(void);
//************************************************
//延时函数,在12MHz的晶振频率下
//大约50us的延时
//************************************************
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
        for(j=19;j>0;j--);
}

//************************************************
//延时函数,在12MHz的晶振频率下
//大约50ms的延时
//************************************************
void delay_50ms(uint t)
{
uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}

void write_ds1302_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
sck=0;
io=dat&0x01;
dat=dat>>1;
sck=1;
}
}

void write_ds1302(uchar adduchar dat)
{
rst=0;
_nop_();
sck=0;_nop_();
rst=1;
_nop_();
write_ds1302_byte(add);
write_ds1302_byte(dat);
rst=0;
_nop_();
io=1;
sck=1;
}

uchar read_ds1302(uchar add)
{
uchar ivalue;
rst=0;
_nop_();
sck=0;
_nop_();
rst=1;
_nop_();
write_ds1302_byte(add);
for(i=0;i<8;i++)
{
value=value>>1;
sck=0;
if(io)
value=value|0x80;
sck=1;

}
rst=0;
_nop_();
sck=0;
_nop_();
sck=1;
io=1;
return value;
}

void set_rtc(void)
{
uchar ij;
for(i=0;i<7;i++)
{
j=time_data[i]/10;
time_data[i]=time_data[i]%10;
time_data[i]=time_data[i]+j*16;
}
write_ds1302(0x8e0x00); //去除写保护
for(i=0;i<7;i++)
{
write_ds1302(write_add[i]time_data[i]);
}
write_ds1302(0x8e0x80); //加写保护
}

void read_rtc(void)
{
uchar i;
for(i=0;i<7;i++)
{
time_data[i]=read_ds1302(read_add[i]);
}
}

void time_pros(void)
{
disp[0]=time_data[6]%16;
disp[1]=time_data[6]/16;
disp[2]=16;
disp[3]=time_data[5]%16;
disp[4]=time_data[5]/16;
disp[5]=16;
disp[6]=time_data[4]%16;
disp[7]=time_data[4]/16;
}

void display(void)
{
uchar i;
for(i=0;i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7512  2010-05-16 16:46  DS1302实时时钟\ds1302

     文件       3301  2010-05-16 16:45  DS1302实时时钟\ds1302.c

     文件       1663  2010-05-16 16:46  DS1302实时时钟\ds1302.hex

     文件         44  2010-05-16 16:46  DS1302实时时钟\ds1302.lnp

     文件       7872  2010-05-16 16:46  DS1302实时时钟\ds1302.LST

     文件      10583  2010-05-16 16:46  DS1302实时时钟\ds1302.M51

     文件       8545  2010-05-16 16:46  DS1302实时时钟\ds1302.OBJ

     文件        988  2012-08-30 15:07  DS1302实时时钟\ds1302.Opt

     文件        188  2012-08-30 15:04  DS1302实时时钟\ds1302.plg

     文件       2152  2010-05-16 16:46  DS1302实时时钟\ds1302.Uv2

    .......       987  2010-05-16 16:46  DS1302实时时钟\ds1302_Opt.Bak

     文件       2152  2010-05-16 16:45  DS1302实时时钟\ds1302_Uv2.Bak

    ..AD...         0  2012-08-30 15:07  DS1302实时时钟

----------- ---------  ---------- -----  ----

                45987                    13


评论

共有 条评论