大佬们,帮我看看这个错误怎么解,谢谢。DS1302.h(12): error C129: missing ';' before 'SYSTEM_TIME'
#ifndef TIMER_DS1302
#define TIMER_DS1302
sbit DS1302_CLK=P2^6;
sbit DS1302_IO=P2^7;
sbit DS1302_RST=P2^5;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
typedef strust SYSTEM_TIME
{
unsigned char Second;
unsigned char Minute;
unsigned char Hour;
unsigned char Week;
unsigned char Day;
unsigned char Mouth;
unsigned char Year;
unsigned char DateString[9];
unsigned char TimeString[9];
}
SYSTEMTIME;
#define AM(X) X
#define PM(X) (X+12)
#define DS1302_SECOND 0X80
#define DS1302_MINUTE 0X82
#define DS1302_HOUR 0x84
#define DS1302_WEEK 0x8A
#define DS1302_DAY 0x86
#define DS1302_MONTH 0x88
#define DS1302_YEAR 0x8C
#define DS1302_RAM(X) (0xC0+(X)*2)
/****Äú2¿Ö¸áî****/
void DS1302InputByte(unsigned char d)
{
unsigned char i;
ACC=d;
for(i=8;i>0;i--)
{
DS1302_IO=ACC0;
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;
ACC7=DS1302_IO;
DS1302_CLK=1;
DS1302_CLK=0;
}
return(ACC);
}
void Write1302(unsigned char ucAddr,unsigned char ucDa)
{
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
DS1302InputByte(ucAddr); //μØÖ·£¬Ãüáî
DS1302InputByte(ucDa); //D′1×Ö½úμÄêy¾Y
DS1302_CLK=1;
DS1302_RST=0;
}
unsigned char Read1302(unsigned char ucAddr) //¶áè¡DS1302D¾Æ¬Ä3μØÖ·μÄêy¾Y
{
unsigned char ucData;
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
DS1302InputByte(ucAddr|0x01); //éÏéyÑØ£¬D′μØÖ·£¬Ãüáî
ucData=DS1302OutputByte(); //ϽμÑØ£¬¶á1×Ö½úêy¾Y
DS1302_CLK=1;
DS1302_RST=0;
return(ucData); //ÔúéÏéyÑØÖ®oó½øDDD′2ù×÷£¬ÔúϽμÑØÖ®Ç°½øDD¶á2ù×÷
}
void DS1302_SetProtect(bit flag)
{
if(flag)
Write1302(0x8E,0x80);
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);
}
unsigned char*DataToBCD(SYSTEMTIME*Time)
{
unsigned char D[8];
D[0]=Time->Second/10<<4+Time->Second%10;
D[1]=Time->Minute/10<<4+Time->Minute%10;
D[2]=Time->Hour/10<<4+Time->Hour%10;
D[3]=Time->Day/10<<4+Time->Day%10;
D[4]=Time->Month/10<<4+Time->Month%10;
D[5]=Time->Week/10<<4+Time->Week%10;
D[6]=Time->Year/10<<4+Time->Year%10;
return D;
}
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(SYSTEAMTIME*Time)
{
Time->DateString[0]=Time->Hour/10+'0';
Time->DateString[1]=Time->Hour%10+'0';
Time->DateString[2]=':';
Time->DateString[3]=Time->Minute/10+'0';
Time->DateString[4]=Time->Minute%10+'0';
Time->DateString[5]=':';
Time->DateString[6]=Time->Second/10+'0';
Time->DateString[7]=Time->Second%10+'0';
Time->DateString[8]='\0';
}
/*uchar*WeekToStr(SYSTEAMTIME Time)
{
uint i;
uchar*z;
i=Time.Week;
switch(i)
{
case 1:z="sun";break;
case 2:z="mon";break;
case 3:z="tue";break;
case 4:z="wen";break;
case 5:z="thu";break;
case 6:z="fri";break;
case 7:z="sat";break;
}
return z;
}
void Initial_DS1302(void)
{
unsigned char Second;
Second=Read1302(DS1302_SECOND);
if(Second&0x80)
{
DS1302_SetTime(DS1302_SECOND,0);
}
}
void DS1302_TimeStop(bit flag)
{
unsigned char Data;
Data=Read1302(DS1302_SECOND);
DS1302_SetProtect(0);
if(flag)
Write1302(DS1302_SECOND,Data|0x80);
else
Write1302(DS1302_SECOND,Data&0x7F);
}
#endif
*/
|