亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? datatime.c

?? c++開發的DS1302時鐘芯片的程序,完全正確,可直接用
?? C
字號:
/***************************************************************************
			HMDP HM1801 電池檢測分析儀	DataTime.c	
									
  Copyright (c) 2003-2004 by Shenzhen HuaMei Digital Power Technology Co.,Ltd(HMDP).
  All Rights Reserved.

  Developer: L4157
  Last update date: 2.16/2004
  Function:HM1801實時時鐘(DS1302)服務函數.  
  Note: 1. RTC初始化;
  	2. 寫RTC;
  	3. 讀RTC;
	4.讀日期時間;
	5.寫日期時間.
*******************************************************************************/

 #include "D:\hm1801\hm1801soft\hm1801\header\hm1801.h"


#define RTCCS		4
#define UNCSRTC()	PORTB &= ~(1<<RTCCS)
#define CSRTC()		PORTB |=  (1<<RTCCS)
#define TSDA		5
#define TSCL 		6

struct rtc_bcd {								/* BCD formats */
   unsigned char sec;
   unsigned char min;  
   unsigned char hour;   
   unsigned char date;
    
   unsigned char  month;
   unsigned char  day;
   unsigned char  year;      
   unsigned char  control;     
   unsigned char  tc;
} rtc;

void Send_RTC(unsigned char sdata);
char Receive_RTC();
void us_delay(char);

void us_delay(char us){
	unsigned char i, clk;
	
	for(clk=0;clk<us;clk++){
		for(i=0;i<SYSTEM_OS_CLK;i++)
			;
	}

}


unsigned char BCDTOCHAR(unsigned char c)
{unsigned char i;

 i=(c&0xf0);
 i>>=4;
 i*=10;
 i+=(c&0x0f);
 return i;

}

unsigned char CHARTOBCD(unsigned char c)
{unsigned char i,j;
 
 i=c%10;
 j=c/10;
 j<<=4;
 i+=j;
 
 return i;
}

void init_rtc(void)
{     
	
	
	write_rtc(0x8E,0);       //Clear the write protect bit
        write_rtc(0x80,0);   //Enable the clock  
        write_rtc(0x90,0xab);    //Enable the TC & the TC current is 0.06mA
        
}


/****************************************************************************/
/*	Name:										*/
/*		get_date_time								*/
/*											*/
/*	Function:									*/
/*		Reads the RTC clock chip and returns the time in the structure		*/
/*		pointed to by time.							*/
/*											*/
/*	Synopsis:									*/
/*		UINT get_date_time(struct sys_time *, struct sys_date *)		*/
/*											*/
/*	In:										*/
/*		struct sys_time	*theTime; pointer to the time structure.		*/
/*		struct sys_date	*theDate; pointer to the date structure.		*/
/*											*/
/*	Returns:									*/
/*		Nothing									*/
/****************************************************************************/

UINT get_date_time(struct sys_time *theTime, struct sys_date *theDate)
{ 
	if (read_rtc(0xFD)==0x55) { 						/* clock appears to be operational	*/
		read_rtc(0xBF);	
		if(rtc.hour&0x80)						/* read the clock chip			*/
		{    if(rtc.hour&0x20) 
		          theTime->hour    = 	12;
		     else
		          theTime->hour    =     0;
		   	
		     theTime->hour  +=BCDTOCHAR(rtc.hour&0x1f);

		}			
		else
		      theTime->hour    = BCDTOCHAR(rtc.hour);                 	/* extract the time 			*/
		theTime->minute  = BCDTOCHAR(rtc.min);
		theTime->second  = BCDTOCHAR(rtc.sec);
		theTime->elapsed = (theTime->hour*60) + theTime->minute;
		theDate->year	 = BCDTOCHAR(rtc.year) + 2000;
		theDate->month	 = BCDTOCHAR(rtc.month);
		theDate->day	 = BCDTOCHAR(rtc.date);
		theDate->dow	 = rtc.day;
    }
    else {	
        									/* clock not initialized and/or not running		*/
    	theTime->hour    = 8;							/* use a default date							*/
        theTime->minute  = 0;							/* 2004/10/01 8:00AM							*/
        theTime->second  = 0;
        theTime->elapsed = (8 * 60);
        theDate->year    = 2004;
        theDate->month   = 10;
        theDate->day     = 1;
        theDate->dow     = 3;
       	write_rtc(0xFC,0x55); 
        set_date_time( theTime,  theDate);
        
    }
	return 1;
}


/****************************************************************************/
/*	Name:											*/
/*		set_date_time									*/
/*												*/
/*	Function:										*/
/*		Updates the time parameters of the RTC clock chip.				*/
/*												*/
/*	Synopsis:										*/
/*		UINT set_date_time(struct sys_time *, struct sys_date *)			*/
/*												*/
/*	In:											*/
/*		struct sys_time	*theTime; pointer to the time structure.			*/
/*		struct sys_date	*theDate; pointer to the date structure.			*/
/*												*/
/*	Returns:										*/
/*		Nothing										*/
/****************************************************************************/

UINT set_date_time(struct sys_time *theTime, struct sys_date *theDate)

{
	char i;

	time = *theTime;
	date = *theDate;

	if (read_rtc(0xFD)==0x55) {
	   	memset(&rtc,0,sizeof(rtc));
	   	
		rtc.hour      = CHARTOBCD(theTime->hour);										/* update the time parameters					*/
		rtc.min       = CHARTOBCD(theTime->minute);
		rtc.sec       = CHARTOBCD(theTime->second);
		i             = theDate->year % 100;
		rtc.year      = CHARTOBCD( i );
		rtc.month     = CHARTOBCD(theDate->month);
    	        rtc.date      = CHARTOBCD(theDate->day );
    	        rtc.day       = theDate->dow;
	        write_rtc(0xBE,0);
        }
	return 1;
}

#if HARDWARE == 1

/****************************************************************************/
/*	Name:									*/
/*		read_rtc							*/
/*										*/
/*	Function:								*/
/*		Reads the time parameters of the RTC clock chip.		*/
/*										*/
/*	Synopsis:								*/
/*		static void read_rtc(void)					*/
/*										*/
/*	In:									*/
/*		Nothing.							*/
/*										*/
/*	Returns:								*/
/*		Nothing.							*/
/****************************************************************************/

char read_rtc(char command)

{
	char i,byte;
	char *ptr;


	if (command == 0xBF) {					/* burst time read command */
		i          = 8;
		byte       = 1;
		ptr        = (char *)(&rtc);
	}
	else {
		i          = 1;
		byte       = 0;
		ptr        = &byte;
	}
	
        PORTB&= ~(1<<TSCL);
        DDRB&=~(1<<TSDA);
        us_delay(4);
       	CSRTC();
        Send_RTC( command);				/* write command */

	do {
             *ptr++     = Receive_RTC();		/* read it */
    	} while(--i );
    	PORTB&=~(1<<TSCL);
    	us_delay(8);
	UNCSRTC();
    	return(byte);
}


void write_rtc(char command,char byte)

{
	char i;
	char *ptr;

	if (command == 0xBE) {					/* burst time write command */
		i   = 8;
		ptr = (char *)(&rtc);
	}
	else {
		i   = 1;
		ptr = &byte;
	}
	                             
        PORTB&= ~(1<<TSCL);
        us_delay(4);
        CSRTC(); 
        Send_RTC( command );				/* write command */

       do {
		Send_RTC(*ptr++); 			/* send the next one */

        } while(--i);
        
        PORTB&=~(1<<TSCL);
        UNCSRTC();
        us_delay(8);

}



void Send_RTC(unsigned char sdata)
{
	unsigned char i,j;
	
	
	j=sdata;
	us_delay(4);
	
	DDRB|=(1<<TSDA);			//turn SDA to output
	for(i=0;i<8;i++){
		PORTB&=~(1<<TSCL);		//SCK=0
		
		if(j&0x01)			//Send the bit to pin mosi
			PORTB|=(1<<TSDA);	//send 1
		else
			PORTB&=~(1<<TSDA);	//send 0
			
		us_delay(4);
		j>>=1;				//Turn the next bit
		PORTB|=(1<<TSCL);		//SCK=1
		us_delay(4);
	
	}
	DDRB&=~(1<<TSDA);			//turn  SDA to input
}

char Receive_RTC(){
	unsigned char i;
	char ctemp;
	
	DDRB&=~(1<<TSDA);			//turn  SDA to input
	ctemp=0;
	for(i=0;i<8;i++)
	{	PORTB|=(1<<TSCL);	//SCK=1
		us_delay(4);
		PORTB&=~(1<<TSCL);	//SCK=0
		us_delay(3);
		ctemp>>=1;
		if(PINB&(1<<TSDA))
			ctemp|=0x80;

		us_delay(1);

	}

	return ctemp;
}



#else



/****************************************************************************/
/*	Name:									*/
/*		read_rtc							*/
/*										*/
/*	Function:								*/
/*		Reads the time parameters of the RTC clock chip.		*/
/*										*/
/*	Synopsis:								*/
/*		static void read_rtc(void)					*/
/*										*/
/*	In:									*/
/*		Nothing.							*/
/*										*/
/*	Returns:								*/
/*		Nothing.							*/
/****************************************************************************/

char read_rtc(char command)

{
	char i,byte;
	char *ptr;


	if (command == 0xBF) {					/* burst time read command */
		i          = 8;
		byte       = 1;
		ptr        = (char *)(&rtc);
	}
	else {
		i          = 1;
		byte       = 0;
		ptr        = &byte;
	}
	
	
        system.spi_busy   = TRUE;
        SPCR|=0x22;                                             /*DS1302 is LSB first transfer &the sclk<250K*/
 	SPCR &= ~(1<<CPHA);					/* send data on leading edge		*/
       
	SPIPage    = RTC;		                        /* select SPI to the clock module */
        _NOP();
        SPI_MasterTransmit( command );				/* write command */
					
	do {
             *ptr++     = SPI_MasterReceive(0xff);		/* read it */
    	} while(--i );


	SPIPage    =  0;  
	SPCR&=0xdd;                                     	/* make sure MOSI set for None */
	SPCR |= (1<<CPHA);					/* send data on leading edge		*/
	SPIPage = 0;
	system.spi_busy = FALSE;				

    return(byte);
}


void write_rtc(char command,char byte)

{
	char i;
	char *ptr;

	if (command == 0xBE) {					/* burst time write command */
		i   = 8;
		ptr = (char *)(&rtc);
	}
	else {
		i   = 1;
		ptr = &byte;
	}
	
        system.spi_busy = TRUE;                                
        SPCR|=0x22;               				/*DS1302 is LSB first transfer &the sclk<250K*/     
	SPCR &= ~(1<<CPHA);					/* send data on leading edge		*/
                        
	SPIPage    = RTC;	 				/* select SPI to the clock module DS1302*/
	_NOP();
		                        
        SPI_MasterTransmit( command );				/* write command */

       do {
		SPI_MasterTransmit(*ptr++); 			/* send the next one */

        } while(--i);

	SPIPage    =  0;      
	SPCR&=0xdd;                               		/* make sure MOSI set for None */
 	SPCR |= (1<<CPHA);					/* send data on leading edge		*/
	SPIPage = 0;
	system.spi_busy = FALSE;
	
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频在线| 国产成人综合亚洲91猫咪| 日韩一区二区三区视频在线观看| 国产一区二三区好的| 久久国产生活片100| 日韩经典中文字幕一区| 亚洲高清中文字幕| 亚洲mv在线观看| 蜜桃av一区二区在线观看| 天天色综合成人网| 久久国产尿小便嘘嘘| 色先锋aa成人| 欧美日韩国产乱码电影| 欧美精品视频www在线观看| 欧美一区二区成人6969| 久久久另类综合| 国产精品麻豆网站| 亚洲欧洲日韩综合一区二区| 亚洲精品ww久久久久久p站| 国产盗摄女厕一区二区三区| 日韩一级大片在线| 日韩av电影天堂| 国产在线精品视频| 日韩欧美国产综合一区| 久久老女人爱爱| 老汉av免费一区二区三区| 欧美一区二区播放| 日本成人在线网站| 日韩欧美中文字幕一区| 天天综合色天天| 欧美妇女性影城| 午夜视黄欧洲亚洲| 欧美日本国产视频| 日韩激情视频在线观看| 91精品国产福利| 蜜桃久久精品一区二区| 日韩你懂的在线观看| 蜜桃一区二区三区四区| 精品久久久久久久久久久久包黑料| 久久久久久久免费视频了| 美女mm1313爽爽久久久蜜臀| 日韩欧美国产不卡| 国产成都精品91一区二区三| 欧美色图在线观看| 中文字幕精品—区二区四季| 亚洲电影在线播放| 欧美高清视频不卡网| 久久爱另类一区二区小说| 337p日本欧洲亚洲大胆精品| 亚洲成人在线网站| 日韩视频中午一区| 国产精品白丝av| 精品免费国产一区二区三区四区| 狠狠色丁香九九婷婷综合五月| 91香蕉视频mp4| 精品国产精品网麻豆系列| 亚洲18色成人| 久久一区二区三区国产精品| 成人av在线观| 久久久亚洲国产美女国产盗摄| 丁香一区二区三区| 亚洲一区中文日韩| 色综合网色综合| 欧美极品另类videosde| 在线观看av一区| 亚洲精品免费在线观看| 91精品欧美久久久久久动漫| 亚洲自拍另类综合| 日韩视频免费直播| www.66久久| 国产精品区一区二区三| 欧美日韩精品三区| 成人一区在线观看| 国产精品毛片高清在线完整版 | 五月开心婷婷久久| 久久久蜜桃精品| 欧美成人精品二区三区99精品| 不卡一区二区在线| 欧美aaaaa成人免费观看视频| 欧美欧美欧美欧美首页| 国产成人午夜高潮毛片| 日韩国产欧美在线视频| 国产精品久久久久久久午夜片| 国产91色综合久久免费分享| 亚洲成a人v欧美综合天堂| 国产精品每日更新在线播放网址| 5月丁香婷婷综合| 91久久精品国产91性色tv| 亚洲444eee在线观看| 日韩一区在线播放| 久久精品在这里| 99久久综合狠狠综合久久| 久久成人18免费观看| 亚洲综合一区二区| 亚洲欧洲日本在线| 久久久久久97三级| 精品久久久久久最新网址| 欧美日韩一区二区三区高清 | 亚洲欧美中日韩| 久久先锋资源网| 日韩欧美一区二区三区在线| 欧美三区在线观看| 色婷婷综合在线| 91在线精品一区二区三区| 天堂久久一区二区三区| 一区二区三区四区亚洲| 欧美大白屁股肥臀xxxxxx| 欧美日韩国产成人在线免费| 色婷婷综合激情| 在线观看成人小视频| 日本久久电影网| 91久久精品国产91性色tv| 色悠久久久久综合欧美99| 中文av一区二区| 激情久久久久久久久久久久久久久久| 在线观看日产精品| 欧美精品xxxxbbbb| 国产精品自产自拍| 国产高清精品网站| 国产成人精品免费在线| 国产精品一级黄| va亚洲va日韩不卡在线观看| 99re这里都是精品| 色婷婷久久久久swag精品| 在线观看国产91| 91精品国产综合久久久久久漫画 | bt欧美亚洲午夜电影天堂| 成人做爰69片免费看网站| 成年人网站91| 在线精品视频一区二区三四| 在线观看亚洲精品视频| 91麻豆精品久久久久蜜臀| 国产精品麻豆久久久| 国产精品免费av| 亚洲老司机在线| 日本在线不卡视频一二三区| 国内精品伊人久久久久av一坑| 国产成人鲁色资源国产91色综 | 麻豆一区二区三| 成人性视频免费网站| 色婷婷综合视频在线观看| 欧美巨大另类极品videosbest| 欧美成人一区二区三区片免费 | 成人18视频日本| 欧美性受xxxx| 精品奇米国产一区二区三区| 国产精品视频一二三| 亚洲成人精品一区二区| 激情六月婷婷久久| 色婷婷久久久久swag精品| 这里只有精品99re| 国产精品国产三级国产有无不卡| 亚洲激情图片qvod| 韩国一区二区三区| 一本久道久久综合中文字幕| 日韩精品资源二区在线| 日韩一区在线看| 久久er99热精品一区二区| 成人开心网精品视频| 在线播放91灌醉迷j高跟美女| 久久久久久久久久久久久夜| 亚洲午夜一区二区三区| 国产精品18久久久久久vr| 欧美色视频在线观看| 国产清纯白嫩初高生在线观看91 | 欧美视频一区二区三区四区 | 粉嫩蜜臀av国产精品网站| 欧美性猛交xxxxxx富婆| 国产亚洲婷婷免费| 爽好久久久欧美精品| www.激情成人| 精品国产凹凸成av人导航| 亚洲国产成人91porn| 成人黄色软件下载| 久久久天堂av| 日韩福利视频网| 欧美亚洲国产一区二区三区va| 国产亚洲精品久| 狠狠色狠狠色综合日日91app| 欧美伊人久久久久久午夜久久久久| 久久久三级国产网站| 免费精品99久久国产综合精品| 91福利在线播放| 亚洲欧美在线另类| 国产成人精品免费视频网站| 日韩一区二区在线观看视频播放| 一区二区三区四区不卡在线| 成人精品国产福利| 国产精品天天摸av网| 国产一区二区三区高清播放| 欧美一级精品大片| 日韩av电影免费观看高清完整版在线观看| 色偷偷一区二区三区| 中文字幕中文乱码欧美一区二区| 国产剧情一区在线| 国产亚洲一区二区三区| 国产精品1区2区3区在线观看| 26uuu亚洲综合色欧美| 久久精品国产免费| 久久夜色精品一区|