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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ds1302.c

?? u-boot-1.1.6 源碼包
?? C
字號:
/* * ds1302.c - Support for the Dallas Semiconductor DS1302 Timekeeping Chip * * Rex G. Feany <rfeany@zumanetworks.com> * */#include <common.h>#include <command.h>#include <rtc.h>#if defined(CONFIG_RTC_DS1302) && (CONFIG_COMMANDS & CFG_CMD_DATE)/* GPP Pins */#define DATA		0x200#define SCLK		0x400#define RST		0x800/* Happy Fun Defines(tm) */#define RESET		rtc_go_low(RST), rtc_go_low(SCLK)#define N_RESET		rtc_go_high(RST), rtc_go_low(SCLK)#define CLOCK_HIGH	rtc_go_high(SCLK)#define CLOCK_LOW	rtc_go_low(SCLK)#define DATA_HIGH	rtc_go_high(DATA)#define DATA_LOW	rtc_go_low(DATA)#define DATA_READ	(GTREGREAD(GPP_VALUE) & DATA)#undef RTC_DEBUG#ifdef RTC_DEBUG#  define DPRINTF(x,args...)	printf("ds1302: " x , ##args)static inline void DUMP(const char *ptr, int num){	while (num--) printf("%x ", *ptr++);	printf("]\n");}#else#  define DPRINTF(x,args...)#  define DUMP(ptr, num)#endif/* time data format for DS1302 */struct ds1302_st{	unsigned char CH:1;		/* clock halt 1=stop 0=start */	unsigned char sec10:3;	unsigned char sec:4;	unsigned char zero0:1;	unsigned char min10:3;	unsigned char min:4;	unsigned char fmt:1;		/* 1=12 hour 0=24 hour */	unsigned char zero1:1;	unsigned char hr10:2;	/* 10 (0-2) or am/pm (am/pm, 0-1) */	unsigned char hr:4;	unsigned char zero2:2;	unsigned char date10:2;	unsigned char date:4;	unsigned char zero3:3;	unsigned char month10:1;	unsigned char month:4;	unsigned char zero4:5;	unsigned char day:3; 		/* day of week */	unsigned char year10:4;	unsigned char year:4;	unsigned char WP:1;		/* write protect 1=protect 0=unprot */	unsigned char zero5:7;};static int ds1302_initted=0;/* Pin control */static inline voidrtc_go_high(unsigned int mask){	unsigned int f = GTREGREAD(GPP_VALUE) | mask;	GT_REG_WRITE(GPP_VALUE, f);}static inline voidrtc_go_low(unsigned int mask){	unsigned int f = GTREGREAD(GPP_VALUE) & ~mask;	GT_REG_WRITE(GPP_VALUE, f);}static inline voidrtc_go_input(unsigned int mask){	unsigned int f = GTREGREAD(GPP_IO_CONTROL) & ~mask;	GT_REG_WRITE(GPP_IO_CONTROL, f);}static inline voidrtc_go_output(unsigned int mask){	unsigned int f = GTREGREAD(GPP_IO_CONTROL) | mask;	GT_REG_WRITE(GPP_IO_CONTROL, f);}/* Access data in RTC */static voidwrite_byte(unsigned char b){	int i;	unsigned char mask=1;	for(i=0;i<8;i++) {		CLOCK_LOW;			/* Lower clock */		(b&mask)?DATA_HIGH:DATA_LOW;	/* set data */		udelay(1);		CLOCK_HIGH;		/* latch data with rising clock */		udelay(1);		mask=mask<<1;	}}static unsigned charread_byte(void){	int i;	unsigned char mask=1;	unsigned char b=0;	for(i=0;i<8;i++) {		CLOCK_LOW;		udelay(1);		if (DATA_READ) b|=mask;	/* if this bit is high, set in b */		CLOCK_HIGH;		/* clock out next bit */		udelay(1);		mask=mask<<1;	}	return b;}static voidread_ser_drv(unsigned char addr, unsigned char *buf, int count){	int i;#ifdef RTC_DEBUG	char *foo = buf;#endif	DPRINTF("READ 0x%x bytes @ 0x%x [ ", count, addr);	addr|=1;	/* READ */	N_RESET;	udelay(4);	write_byte(addr);	rtc_go_input(DATA); /* Put gpp pin into input mode */	udelay(1);	for(i=0;i<count;i++) *(buf++)=read_byte();	RESET;	rtc_go_output(DATA);/* Reset gpp for output */	udelay(4);	DUMP(foo, count);}static voidwrite_ser_drv(unsigned char addr, unsigned char *buf, int count){	int i;	DPRINTF("WRITE 0x%x bytes @ 0x%x [ ", count, addr);	DUMP(buf, count);	addr&=~1;	/* WRITE */	N_RESET;	udelay(4);	write_byte(addr);	for(i=0;i<count;i++) write_byte(*(buf++));	RESET;	udelay(4);}voidrtc_init(void){    	struct ds1302_st bbclk;	unsigned char b;	int mod;	DPRINTF("init\n");	rtc_go_output(DATA|SCLK|RST);	/* disable write protect */	b = 0;	write_ser_drv(0x8e,&b,1);	/* enable trickle */	b = 0xa5;	/* 1010.0101 */	write_ser_drv(0x90,&b,1);	/* read burst */	read_ser_drv(0xbe, (unsigned char *)&bbclk, 8);	/* Sanity checks */	mod = 0;	if (bbclk.CH) {		printf("ds1302: Clock was halted, starting clock\n");		bbclk.CH=0;		mod=1;	}	if (bbclk.fmt) {		printf("ds1302: Clock was in 12 hour mode, fixing\n");		bbclk.fmt=0;		mod=1;	}	if (bbclk.year>9) {		printf("ds1302: Year was corrupted, fixing\n");		bbclk.year10=100/10;	/* 2000 - why not? ;) */		bbclk.year=0;		mod=1;	}	/* Write out the changes if needed */	if (mod) {		/* enable write protect */		bbclk.WP = 1;		write_ser_drv(0xbe,(unsigned char *)&bbclk,8);	} else {		/* Else just turn write protect on */		b = 0x80;		write_ser_drv(0x8e,&b,1);	}	DPRINTF("init done\n");	ds1302_initted=1;}voidrtc_reset(void){	if(!ds1302_initted) rtc_init();	/* TODO */}voidrtc_get(struct rtc_time *tmp){	struct ds1302_st bbclk;	if(!ds1302_initted) rtc_init();	read_ser_drv(0xbe,(unsigned char *)&bbclk, 8);      /* read burst */	if (bbclk.CH) {		printf("ds1302: rtc_get: Clock was halted, clock probably "			"corrupt\n");	}	tmp->tm_sec=10*bbclk.sec10+bbclk.sec;	tmp->tm_min=10*bbclk.min10+bbclk.min;	tmp->tm_hour=10*bbclk.hr10+bbclk.hr;	tmp->tm_wday=bbclk.day;	tmp->tm_mday=10*bbclk.date10+bbclk.date;	tmp->tm_mon=10*bbclk.month10+bbclk.month;	tmp->tm_year=10*bbclk.year10+bbclk.year + 1900;	tmp->tm_yday = 0;	tmp->tm_isdst= 0;	DPRINTF("Get DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",		tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,		tmp->tm_hour, tmp->tm_min, tmp->tm_sec );}voidrtc_set(struct rtc_time *tmp){	struct ds1302_st bbclk;	unsigned char b=0;	if(!ds1302_initted) rtc_init();	DPRINTF("Set DATE: %4d-%02d-%02d (wday=%d)  TIME: %2d:%02d:%02d\n",		tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,		tmp->tm_hour, tmp->tm_min, tmp->tm_sec);	memset(&bbclk,0,sizeof(bbclk));	bbclk.CH=0; /* dont halt */	bbclk.WP=1; /* write protect when we're done */	bbclk.sec10=tmp->tm_sec/10;	bbclk.sec=tmp->tm_sec%10;	bbclk.min10=tmp->tm_min/10;	bbclk.min=tmp->tm_min%10;	bbclk.hr10=tmp->tm_hour/10;	bbclk.hr=tmp->tm_hour%10;	bbclk.day=tmp->tm_wday;	bbclk.date10=tmp->tm_mday/10;	bbclk.date=tmp->tm_mday%10;	bbclk.month10=tmp->tm_mon/10;	bbclk.month=tmp->tm_mon%10;	tmp->tm_year -= 1900;	bbclk.year10=tmp->tm_year/10;	bbclk.year=tmp->tm_year%10;	write_ser_drv(0x8e,&b,1);           /* disable write protect */	write_ser_drv(0xbe,(unsigned char *)&bbclk, 8);     /* write burst */}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品午夜一区二区三区在线观看 | 国产精品一品视频| 久久欧美中文字幕| 国产成人午夜电影网| 国产精品久久久久毛片软件| 99热这里都是精品| 亚洲综合在线第一页| 91精品国产色综合久久不卡蜜臀| 精品综合久久久久久8888| 久久久欧美精品sm网站| 9色porny自拍视频一区二区| 亚洲免费在线看| 欧美欧美午夜aⅴ在线观看| 激情综合网激情| 亚洲欧美在线视频观看| 欧美日韩国产另类一区| 精品一区二区三区在线播放| 欧美国产激情二区三区| 在线精品视频小说1| 久久精品国产精品亚洲红杏| 国产精品久久久久久久久免费相片 | 国产精品996| 国产精品久久久一区麻豆最新章节| 91久久精品国产91性色tv| 日韩电影免费在线| 国产精品欧美一区喷水| 欧美一区二区三区在| 高清免费成人av| 日日骚欧美日韩| 欧美激情一区三区| 欧美一级久久久久久久大片| 国产成人精品午夜视频免费| 亚洲精品欧美专区| 久久先锋影音av鲁色资源| 在线视频国内一区二区| 国产精品自拍毛片| 亚洲福利视频三区| 国产精品久久久久久久久图文区| 在线91免费看| 91蜜桃在线观看| 国产精品一区一区| 青青草成人在线观看| 亚洲激情网站免费观看| 国产欧美精品日韩区二区麻豆天美| 在线免费亚洲电影| 盗摄精品av一区二区三区| 日本女人一区二区三区| 亚洲一区二区五区| 国产精品久久久久久久久动漫| 日韩一区二区三区av| 91成人网在线| 91麻豆6部合集magnet| 国产乱色国产精品免费视频| 日韩主播视频在线| 美女mm1313爽爽久久久蜜臀| 亚洲另类色综合网站| 国产女人18毛片水真多成人如厕| 欧美r级在线观看| 欧美三级在线播放| 日本韩国一区二区三区视频| 成人一级视频在线观看| 美女视频黄频大全不卡视频在线播放 | 国产麻豆精品95视频| 免费欧美日韩国产三级电影| 亚洲午夜久久久久久久久电影网 | 欧美精品日韩精品| 色老汉av一区二区三区| hitomi一区二区三区精品| 国产制服丝袜一区| 久久国产麻豆精品| 久久99精品久久久| 国产一区二区三区免费播放| 精品写真视频在线观看| 国产尤物一区二区在线| 精品系列免费在线观看| 国产一区 二区| 国产乱色国产精品免费视频| 国产成人午夜片在线观看高清观看| 久久电影网电视剧免费观看| 久久99精品国产.久久久久| 激情偷乱视频一区二区三区| 国产一本一道久久香蕉| 国产精品77777竹菊影视小说| 国产成人av资源| 粉嫩av一区二区三区| 不卡视频在线观看| 91女神在线视频| 欧美三级三级三级爽爽爽| 欧美日韩高清不卡| 日韩三级在线免费观看| 久久只精品国产| 国产精品萝li| 日韩激情在线观看| 美脚の诱脚舐め脚责91 | 国产精品短视频| 一区二区三区不卡视频在线观看| 一区二区三区视频在线看| 亚洲伊人伊色伊影伊综合网| 亚洲成人激情av| 久久精品国产99| 国产成人精品网址| 91精品福利在线| 777午夜精品免费视频| 久久久久久久久久久久久女国产乱| 欧美国产1区2区| 午夜在线电影亚洲一区| 精品一区二区免费视频| 成人福利视频网站| 欧洲人成人精品| 欧美一区二区三区日韩| 国产三级久久久| 亚洲国产欧美另类丝袜| 久久精品国产99国产精品| 成人免费高清在线| 欧美色综合影院| 久久天堂av综合合色蜜桃网| 成人欧美一区二区三区小说| 日本特黄久久久高潮| 国产mv日韩mv欧美| 欧美日韩国产片| 国产精品三级电影| 琪琪一区二区三区| 91在线观看污| 日韩欧美美女一区二区三区| 国产精品国产三级国产| 免费欧美在线视频| 在线观看三级视频欧美| 久久美女艺术照精彩视频福利播放| 亚洲主播在线观看| 成人免费福利片| 亚洲欧洲精品一区二区精品久久久| 亚洲风情在线资源站| 国产99一区视频免费| 在线播放日韩导航| 亚洲日本在线天堂| 国产精华液一区二区三区| 91精品婷婷国产综合久久性色| 国产精品久久久一区麻豆最新章节| 蜜桃视频第一区免费观看| 欧美色图12p| 亚洲人成影院在线观看| 国产91在线看| 久久一区二区三区国产精品| 日韩国产欧美一区二区三区| 色婷婷亚洲综合| 欧美激情一区二区三区四区| 久久99日本精品| 欧美精品久久天天躁| 一区二区三区中文字幕| 99re热这里只有精品免费视频| 国产清纯在线一区二区www| 麻豆91在线播放免费| 欧美丰满嫩嫩电影| 天天色天天爱天天射综合| 在线观看视频一区| 亚洲香蕉伊在人在线观| 日本高清无吗v一区| 亚洲私人黄色宅男| av不卡一区二区三区| 中文字幕一区二区三区乱码在线 | 一区二区三区欧美在线观看| 99国内精品久久| 亚洲欧美电影一区二区| 99re这里都是精品| 亚洲色图视频网站| 色婷婷综合五月| 一区二区三区蜜桃| 91福利视频久久久久| 一区二区三区四区不卡在线| 欧美在线一二三四区| 亚洲高清免费观看高清完整版在线观看| 欧美中文字幕一区| 亚洲成av人**亚洲成av**| 3d动漫精品啪啪一区二区竹菊| 久久国产精品一区二区| 精品少妇一区二区三区日产乱码| 久久精品国产精品亚洲综合| 久久久久国产一区二区三区四区 | 中文字幕日韩一区| 91麻豆精品在线观看| 亚洲综合久久久| 欧美久久一区二区| 精品一区二区在线免费观看| 久久精品一区蜜桃臀影院| 成人精品gif动图一区| 亚洲日本va午夜在线影院| 欧美性xxxxx极品少妇| 日韩国产成人精品| 2017欧美狠狠色| 91视频免费播放| 午夜欧美在线一二页| 亚洲精品一区二区精华| 岛国一区二区在线观看| 亚洲福利视频三区| 精品久久五月天| www.亚洲精品| 日韩电影在线免费| 欧美国产视频在线| 欧美丰满嫩嫩电影| 成人免费视频免费观看|