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

📄 soft_rtc.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
字号:
void second_change_dis_use()
// when second change ,and display time   ---->drive 
{
	if((RCURRENT_REFERENCE==8)||(RLCD_DISPLAY_STATUS==DISPLAY_DATE))
     		RFLAG_DISPLAY_05SEC=1;
}

     

unsigned char rtc_8025_3time_read()
{unsigned char l,value;
  value=0;
  for(l=0;l<3;l++)
      	if(1==rtc8025_read())
  	   	{
  	   		value=1;
           		l=3;
		}
      	else 
			delay_1ms();
return value;
}
       
void rtc_use()
{unsigned char a;
unsigned char b,c;
	a=(RSOFT_RTC_SECOND>>4)*10+(RSOFT_RTC_SECOND&0xf);
	if(a>=59)		
		{
			RSOFT_RTC_SECOND=0;
	         	if(remote_jiehuo_10day!=0) 
				remote_jiehuo_10day=remote_jiehuo_10day-1;		      
                 	if(quanshiya_10day!=0) 
				quanshiya_10day=quanshiya_10day-1;
			if(remote_display_7day!=0)
				remote_display_7day=remote_display_7day-1;
		 	a=RSOFT_RTC_MINUTE&0xf0;								//minute
		 	a=a>>4;
		 	a=a*10;
		 	a=a+(RSOFT_RTC_MINUTE&0x0f);
		 	if(a>=59)			
		     		{
		      			RSOFT_RTC_MINUTE=0;
		    //  if(remote_jiehuo_10day!=0) remote_jiehuo_10day=remote_jiehuo_10day-1;
		      
                 //  if(quanshiya_10day!=0) quanshiya_10day=quanshiya_10day-1;
					a=RSOFT_RTC_HOUR&0xf0;							//hour
					a=a>>4;
					a=a*10;
					a=(0xf&RSOFT_RTC_HOUR)+a;			
					if (a>=23)
			     			{
			     				RSOFT_RTC_HOUR=0;
			       			tingchao_enabled=3;
							a=RSOFT_RTC_DAY&0xf0;							//day
							a=a>>4;
							a=a*10;
							a=a+(RSOFT_RTC_DAY&0x0f)+1;
			       			b=one_byte_hex_to_bcd(a);//((a/10)<<4)+(a%10);						
							if(RSOFT_RTC_WEEK>=6) 
								RSOFT_RTC_WEEK=0;		//week
							else 
								RSOFT_RTC_WEEK=RSOFT_RTC_WEEK+1;
							switch(RSOFT_RTC_MONTH)						//month
								{
									case 0x1:
					 				case 0x3:
					 				case 0x5:
					 				case 0x7:
					 				case 0x8:
					 				case 0x10:					
					 				case 0x12: 
												if(b>0x31)
								 					{
								 						RSOFT_RTC_DAY=1;
								   						RSOFT_RTC_MONTH=RSOFT_RTC_MONTH+1;
								   						if(RSOFT_RTC_MONTH>0x12)
															{
																RSOFT_RTC_MONTH=1;
								         							a=10*(RSOFT_RTC_YEAR>>4)+(0xf&RSOFT_RTC_YEAR);
									   							a=a+1;// year<35
									   							RSOFT_RTC_YEAR=one_byte_hex_to_bcd(a);//((a/10)<<4)+(a%10);									   
								        						}
					 	                   					}
					                    					else
					                    						RSOFT_RTC_DAY=b;
							       				break;
									case 0x4:
									case 0x6:
									case 0x9:
									case 0x11: 
												if (b>0x30)
													{
														RSOFT_RTC_DAY=1;
					                     						b=RSOFT_RTC_MONTH+1;
								  						a=b&0x0f;
								  						if(a>9) 
															RSOFT_RTC_MONTH=0x10;
								  						else 
															RSOFT_RTC_MONTH=b;
								 					}
					                  					else 
													RSOFT_RTC_DAY=b;
							     					break;
									case 0x2: 
												a=value_hex_from_bcd(RSOFT_RTC_YEAR);
							  					a=a%4;
							  					if(a==0)
							  						{
							  							if(b>0x29)
								    							{
								    								RSOFT_RTC_DAY=1;
								      								RSOFT_RTC_MONTH=RSOFT_RTC_MONTH+1;
								      							}
								  						else 
								  	 						RSOFT_RTC_DAY=b;
													}																												
						        					else 
						        	 					{
						        	 						if(b>0x28)
								     							{
								     								RSOFT_RTC_DAY=1;
							       								RSOFT_RTC_MONTH=RSOFT_RTC_MONTH+1;
							       							}
                                                            						else 
						                        						RSOFT_RTC_DAY=b;
                                                            					}
						      						break;											
									}
							}
					else
						{
							a=a+1;
			        			RSOFT_RTC_HOUR=one_byte_hex_to_bcd(a);//((a/10)<<4)+(a%10);
						}
				}	
			else
				{
					a=a+1;
					RSOFT_RTC_MINUTE=one_byte_hex_to_bcd(a);//((a/10)<<4)+(a%10);
				}	
			}
		else
			{
				a=a+1;
	        		RSOFT_RTC_SECOND=one_byte_hex_to_bcd(a);//((a/10)<<4)+(a%10);
		  	}
}

// fm copy
void rtc()
{static unsigned char second_pointer,num;
unsigned char a,c;
unsigned char b;
unsigned char baojing_use;
c=0;
if(second_rtc_point_timera0!=second_pointer)
	{
		second_pointer=second_rtc_point_timera0;
        	 pulse_delaysecond_7758=pulse_delaysecond_7758+1;
         	if(pulse_delaysecond_7758>power_delay) 
			init_7758();
         	second_change_dis_use();
        	rtc_use();      
if((RSOFT_RTC_SECOND==0x30)&&((0xf&RSOFT_RTC_MINUTE)==0)) 
	c=1;  // 10 minute dui shi
if(qingqiuduishi_rtc==1) 
	{
		c=1;
         	qingqiuduishi_rtc=0;
       }

// 1 hour dui shi
// 1 good 0 err
time_to_bianchengqian();
baojing_use=1;
if(0== testsecond_minute_hour_day_month_year(&RSOFT_RTC_SECOND,&RSOFT_RTC_DAY))
	{
		c=1;
 		baojing_use=0;
	 }
if(c==1)
 	{
 		if(1==rtc_8025_3time_read())
       		{
       			if(1==testsecond_minute_hour_day_month_year(&rtc8025_timevalue[0],&rtc8025_timevalue[4]))
            				{
            					if(0==compare_date_time(3,&rtc8025_timevalue[0],&rtc8025_timevalue[4]))// <3second
                  					baojing_use=0;
              				if((0==compare_date_time(1,&rtc8025_timevalue[0],&rtc8025_timevalue[4]))||(num>20))// <=1 20num--->do
                   					{
                   						move_rtc8025_to_softrtc();
                     					num=0;
							}
              				else 
              					num=num+1;
              			}
          			else 
						baojing_use=0;
          		}
      		else 
				baojing_use=0;
    	}
do_ledspeek(baojing_use,1);
RSOFT_RTC_WEEK=week_from_day_month_year(&RSOFT_RTC_DAY);
if(baojing_use==0)	
   	err_time_envent();
copy_ram_to_fm(R_SOFT_SECOND,7,R_SOFT_SECOND);
	}
}


void zhongduan_8025_second_set()
{
	tb1s=0;
	tb1ic=0;
	tb1mr=0xc0;
	tb1=1023;              //1023;
	udf0=0;
	tb1s=0;
	tb1ic=7;
	tb1s=1;
}
#pragma INTERRUPT  zhongduan_8025_second
void zhongduan_8025_second()// power down
{
//
// ting dian rtc  wei hu
second_rtc_point_timerb1=second_rtc_point_timerb1+1;
// ting dian
RTIME_QUANSHIYA_PANDUAN_USE=RTIME_QUANSHIYA_PANDUAN_USE+1;
if(RTIME_QUANSHIYA_PANDUAN_USE>600)     //600
	{
		RTIME_QUANSHIYA_PANDUAN_USE=1;// 0
        }
RQINGQIU_PANDUAN_TINGDIANCHAOBIAO=1;
if(tingchaojiehuo_use_num_second<14) 
	tingchaojiehuo_use_num_second=tingchaojiehuo_use_num_second+1;
else 
	tingchaojiehuo_use_num_second=0;
}

	
void rtc_tingdian()
{
unsigned char a;
unsigned char b,c;
unsigned char baojing_use;
if(second_rtc_point_timerb1!=second_tingdian)
	{
		second_tingdian=second_rtc_point_timerb1;
          	second_change_dis_use();
        	rtc_use();
        	RTIME_6MINUTE_USE=RTIME_6MINUTE_USE+1;
// bu shi zhong------------------>start
 		if(numlm75second<3600)
        		numlm75second= numlm75second+1;
// bu shi zhong------------------>end        
	  }
}




















⌨️ 快捷键说明

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