#include <STC15F2K60S2.H>
#include "ds1302.h"
unsigned char SMG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char code READ_CK[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
unsigned char code WRITE_CK[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
unsigned char TIME[7]={0x30,0x59,0x23,0x17,0x10,0x06,0x21};
/*============ÈÕÀúʱÖÓ²ÎÊýÅäÖú¯Êý======================*/
void DS1302_Config()
{
unsigned char i;
Write_Ds1302(0x8e,0x00); //¹Ø±Õд±£»¤
for(i=0;i<7;i++)
{
Write_Ds1302(WRITE_CK[i],TIME[i]);
}
Write_Ds1302(0x8e,0x80); //´ò¿ªÐ´±£»¤
}
/*==========ÈÕÀúʱÖÓÊý¾Ý¶ÁÈ¡º¯Êý===========*/
void DS1302_ReadTime()
{
unsigned char i;
for(i=0;i<7;i++)
{
TIME[i]=Read_Ds1302 (READ_CK[i]);
}
}
void Delay(unsigned char t)
{
while(t--);
}
void SelectHC573(unsigned char channel)
{
switch(channel)
{
case 4: P2=(P2&0x1f) | 0x80; break;
case 5: P2=(P2&0x1f) | 0xa0; break;
case 6: P2=(P2&0x1f) | 0xc0; break;
case 7: P2=(P2&0x1f) | 0xe0; break;
}
}
void Display(unsigned char pos,unsigned char value) //ÊýÂë¹ÜÏÔʾ
{
SelectHC573(6);
P0=0x01<<pos;
SelectHC573(7);
P0=value;
}
void Display_All()
{
SelectHC573(6);
P0=0xff;
SelectHC573(7);
P0=0xff;
}
void DisplayTime() //ÊýÂë¹ÜÏÔʾʱÖÓ
{
Display(0,SMG[TIME[2]/16]);
Delay(100);
Display(1,SMG[TIME[2]%16]);
Delay(100);
Display(2,0xbf);
Delay(100);
Display(3,SMG[TIME[1]/16]);
Delay(100);
Display(4,SMG[TIME[1]%16]);
Delay(100);
Display(5,0xbf);
Delay(100);
Display(6,SMG[TIME[0]/16]);
Delay(100);
Display(7,SMG[TIME[0]%16]);
Delay(100);
Display_All();
}
void main()
{
DS1302_Config();
{
DS1302_ReadTime();
DisplayTime();
}
}
main里面加个while试试
void main()
{
whilie(1)
{
DS1302_Config();
{
DS1302_ReadTime();
DisplayTime();
}
}
}