⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtc.c

📁 使用WINBOW78E365的RT1308的IIC读取C代码
💻 C
📖 第 1 页 / 共 2 页
字号:
void For_Date_set_clearn(void)
{
  LCD_ShowString(0xc0,"                ",16);
}
**************************************************/

//*************************************
void Year_set_adding(void)
{
  uchar i;
  time_s3530[6]++;
  if(time_s3530[6]>0x99)time_s3530[6]=0;
  else {
       i=time_s3530[6]&0x0f;
	   if(i>9)time_s3530[6]=(time_s3530[6]&0xf0)+0x10;  
	   }    
  time_ram.year[1]=(time_s3530[6]>>4)&0x0f;
  time_ram.year[0]=time_s3530[6]&0x0f;        //年
  LCD_ShowData(0x84,time_ram.year[1],1,0);    //年
  LCD_ShowData(0x85,time_ram.year[0],1,0);      
}

void Year_set_decrease(void)
{
  uchar i;
  time_s3530[6]--;
  if(time_s3530[6]<0)time_s3530[6]=0x99;
//  else if(time_s3530[6]>0x99)time_s3530[6]=0;
  else {
       i=time_s3530[6]&0x0f;
	   if(i>9)time_s3530[6]=(time_s3530[6]&0xf0)+0x09;
	   }    
  time_ram.year[1]=(time_s3530[6]>>4)&0x0f;
  time_ram.year[0]=time_s3530[6]&0x0f;       //年
  LCD_ShowData(0x84,time_ram.year[1],1,0);   //年
  LCD_ShowData(0x85,time_ram.year[0],1,0);     
}

//*************************************
void Month_set_adding(void)
{
  uchar i;
  time_s3530[5]++;
  if(time_s3530[5]>0x12)time_s3530[5]=0;
  else {
       i=time_s3530[5]&0x0f;
	   if(i>9)time_s3530[5]=(time_s3530[5]&0xf0)+0x10;  
	   }    
  time_ram.month[1]=(time_s3530[5]>>4)&0x0f;
  time_ram.month[0]=time_s3530[5]&0x0f;        //月
  LCD_ShowData(0x87,time_ram.month[1],1,0);    //月
  LCD_ShowData(0x88,time_ram.month[0],1,0);      
}

void Month_set_decrease(void)
{
  uchar i;
  time_s3530[5]--;
  if(time_s3530[5]<0)time_s3530[5]=0x12;
//  else if(time_s3530[5]>0x12)time_s3530[5]=0;
  else {
       i=time_s3530[5]&0x0f;
	   if(i>9)time_s3530[5]=(time_s3530[5]&0xf0)+0x09;
	   }    
  time_ram.month[1]=(time_s3530[5]>>4)&0x0f;
  time_ram.month[0]=time_s3530[5]&0x0f;       //月
  LCD_ShowData(0x87,time_ram.month[1],1,0);   //月
  LCD_ShowData(0x88,time_ram.month[0],1,0);     
}

//*************************************
void Day_set_adding(void)
{
  uchar i;
  time_s3530[4]++;
  if(time_s3530[4]>0x31)time_s3530[4]=0;
  else {
       i=time_s3530[4]&0x0f;
	   if(i>9)time_s3530[4]=(time_s3530[4]&0xf0)+0x10;  
	   }    
  time_ram.day[1]=(time_s3530[4]>>4)&0x0f;
  time_ram.day[0]=time_s3530[4]&0x0f;        //日
  LCD_ShowData(0x8a,time_ram.day[1],1,0);    //日
  LCD_ShowData(0x8b,time_ram.day[0],1,0);      
}

void Day_set_decrease(void)
{
  uchar i;
  time_s3530[4]--;
  if(time_s3530[4]<0)time_s3530[4]=0x31;
//  else if(time_s3530[4]>0x31)time_s3530[4]=0;
  else {
       i=time_s3530[4]&0x0f;
	   if(i>9)time_s3530[4]=(time_s3530[4]&0xf0)+0x09;
	   }    
  time_ram.day[1]=(time_s3530[4]>>4)&0x0f;
  time_ram.day[0]=time_s3530[4]&0x0f;       //日
  LCD_ShowData(0x8a,time_ram.day[1],1,0);   //日
  LCD_ShowData(0x8b,time_ram.day[0],1,0);     
}

//*************************************
void Week_set_adding(void)
{
  time_s3530[3]++;
  if(time_s3530[3]>0x6)time_s3530[3]=0;
  time_ram.week=time_s3530[3]&0x0f;           //星期
  LCD_ShowData(0x8f,time_ram.week,1,0);       //星期
}

void Week_set_decrease(void)
{
  time_s3530[3]--;
  if(time_s3530[3]<0)time_s3530[3]=0x06;
//  else if(time_s3530[3]>0x06)time_s3530[3]=0;
  time_ram.week=time_s3530[3]&0x0f;          //星期
  LCD_ShowData(0x8f,time_ram.week,1,0);      //星期
  
}
//**********************************************************



//****查看是否有设定脑钟/如有则比较是到唤醒时间--Check_The_Alarm****
bit Clock_Alarm_Touch(void)
{ 
  uchar a;
  b_REFRESH_MINUTE_flag=0;    
  if(g_alarm_flag&0x10)for(a=1;a<3;a++) //if g_alarm_flag=00010000 "Alarm one" OPEN-------"Everyday"
                        {
	                    if(alarm[0][a]==time_s3530[a])
					            {
					            if(a==2)return(TRUE);
					            else continue;
							    }   
                        else break;     
					    } 
  //**********************************************************
  if(g_alarm_flag&0x20)for(a=1;a<3;a++) //if g_alarm_flag=00100000 "Alarm second" OPEN------"Everyday"
                        {
	                    if(alarm[1][a]==time_s3530[a])
					            {
					            if(a==2)return(TRUE);
					            else continue;
							    }
                        else break;              
					    }     
   
  //**********************************************************
  if(g_alarm_flag&0x40)for(a=1;a<3;a++) //if g_alarm_flag=00100000 "Alarm third" OPEN------"Everyday"
                        {
	                    if(alarm[2][a]==time_s3530[a])
					            {
					            if(a==2)return(TRUE);
					            else continue;
							    }     
                        else break;          
					    }   
  
  //**********************************************************
  if(g_alarm_flag&0x80)for(a=1;a<3;a++) //if g_alarm_flag=00100000 "Alarm four" OPEN------"Everyday"
                        {
	                    if(alarm[3][a]==time_s3530[a])
					            {
					            if(a==2)return(TRUE);
					            else continue;
							    }       
                        else break;       
					    }     
  //**********************************************************   
  return(FALSE);
}



//**********保存系统时间设置***********
void Save_Tet_TimeDate_To_RTC(void)
{
  CLEAR_DISPLAY
  LCD_ShowString(0x80," SAVE THE SETUP ",16);
  LCD_ShowString(0xc0,"      !!!       ",16);
  Delay1ms(0x20);
  write_rtc_time();
  CLEAR_DISPLAY
  LCD_ShowString(0x80," SAVE THE SETUP ",16);
  LCD_ShowString(0xc0,"      !!!       ",16);
  Delay1ms(0x20);
  CLEAR_DISPLAY
  if(79<KeyFuncIndex<84)Date_display();
}


//**********保存闹铃时间设置***********
void Save_Tet_TimeDate_To_ALARM_X_(void)
{
  uchar x; 
  CLEAR_DISPLAY
  LCD_ShowString(0x80," SAVE THE SETUP ",16);
  LCD_ShowString(0xc0,"      !!!       ",16);
  Delay1ms(0x10);
  x=g_alarm_flag&0x0f; //g_alarm_flag的高4bit:是否打开相应闹钟. 低4bit 用来指定闹钟存储位置                       
  switch(x)
        {
		case 1:
              for(x=0;x<7;x++)alarm[0][x]=time_s3530[x];
			  break;
		case 2:
              for(x=0;x<7;x++)alarm[1][x]=time_s3530[x];
			  break;
		case 4:
              for(x=0;x<7;x++)alarm[2][x]=time_s3530[x];
			  break;
		case 8:
              for(x=0;x<7;x++)alarm[3][x]=time_s3530[x];
			  break;
        default: 		     
		      break;
		}
  CLEAR_DISPLAY
  Delay1ms(0x30);
  LCD_ShowString(0x80," SAVE THE SETUP ",16);
  LCD_ShowString(0xc0,"      !!!       ",16);
  if(KeyFuncIndex==93)Date_display();
}

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


//**************时间设定的显示界面*******************
void For_Time_Set_Interface(void)
{
  LCD_ShowString(0x80,"                ",16);
  time_display();
}
//**************日期设定的显示界面*******************
void For_Date_Set_Interface(void)
{
  LCD_ShowString(0x80,"                ",16);
  Date_display();
}
//****************************************************



//***************打开闹钟and设定******************
void Open_The_Alarm(void) 
{ 
  uchar x;
  LCD_ShowString(0x80,"                ",16);
  switch(KeyFuncIndex)
        {                              //g_alarm_flag的高4bit:是否打开相应闹钟. 低4bit 用来指定闹钟存储位置   
        case 35:
		       {
			   LCD_ShowString(0x80,"R(1)",4);
			   for(x=0;x<7;x++)time_s3530[x]=alarm[0][x];
			   g_alarm_flag=(g_alarm_flag|0x11)&0xf1;
			   }
               break;
        case 37:
		       {
			   LCD_ShowString(0x80,"R(2)",4);
			   for(x=0;x<7;x++)time_s3530[x]=alarm[1][x];
		       g_alarm_flag=(g_alarm_flag|0x22)&0xf2;
			   }
               break;
        case 39:
		       {
			   LCD_ShowString(0x80,"R(3)",4);
			   for(x=0;x<7;x++)time_s3530[x]=alarm[2][x];
		       g_alarm_flag=(g_alarm_flag|0x44)&0xf4;
			   }
               break;
        case 41:
		       {
			   LCD_ShowString(0x80,"R(4)",4);
			   for(x=0;x<7;x++)time_s3530[x]=alarm[3][x];
		       g_alarm_flag=(g_alarm_flag|0x88)&0xf8;
			   }
               break;
		//************************************************
        case  0x100://将不用到的函数放到至项中
               Write_Byte(1,1,1);
			   Read_Byte(1,1);
			   Initial_RTC();
			   Set_Rtc_Status_Register(1);
			   break;
        }
        //************************************************
  time_display();
  Date_display();
  Delay1ms(0xff);
  Delay1ms(0x60);
  CLEAR_DISPLAY
  Delay1ms(0x40);
  time_display();
  Date_display();
  Delay1ms(0x40);

  x=g_alarm_flag&0x0f;
  switch(x)
        {
        case  1:
			   LCD_ShowString(0x80,"1`",2);
               break;
        case  2:
			   LCD_ShowString(0x80,"2`",2);
               break;
        case  4:
			   LCD_ShowString(0x80,"3`",2);
               break;
        case  8:
			   LCD_ShowString(0x80,"4`",2);
               break;
        }
Delay1ms(0xff);
} 
//***************************************************


//***************关闭闹钟and设定******************
void Close_The_Alarm(void)
{
  switch(KeyFuncIndex)
        {
        case 36:
			   LCD_ShowString(0x80,"Close The ARARM1",16);
			   Delay1ms(0xff);
               CLEAR_DISPLAY			   Delay1ms(0x20);
			   g_alarm_flag=g_alarm_flag&0xef;
			   LCD_ShowString(0x80,"Close The ARARM1",16);
			   Delay1ms(0xff);
               break;
        case 38:
			   LCD_ShowString(0x80,"Close The ARARM2",16);
			   Delay1ms(0xff);
               CLEAR_DISPLAY			   Delay1ms(0x20);
			   g_alarm_flag=g_alarm_flag&0xdf;
			   LCD_ShowString(0x80,"Close The ARARM2",16);
			   Delay1ms(0xff);
               break;
        case 40:
			   LCD_ShowString(0x80,"Close The ARARM3",16);
			   Delay1ms(0xff);
               CLEAR_DISPLAY			   Delay1ms(0x20);
			   g_alarm_flag=g_alarm_flag&0xbf;
			   LCD_ShowString(0x80,"Close The ARARM3",16);
			   Delay1ms(0xff);
               break;
        case 42:
			   LCD_ShowString(0x80,"Close The ARARM4",16);
			   Delay1ms(0xff);
               CLEAR_DISPLAY			   Delay1ms(0x20);
			   g_alarm_flag=g_alarm_flag&0x7f;
			   LCD_ShowString(0x80,"Close The ARARM4",16);
			   Delay1ms(0xff);
               break;
        }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -