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

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

?? dcf77.c

?? WWVB receiver using AVR.
?? C
字號(hào):
/* $Id: dcf77.c,v 1.10 2005/11/01 15:47:10 simimeie Exp $ * Functions for communicating with the DCF module and calculating time */ #define BV _BV#include <avr/io.h>#include <avr/signal.h>#include "dcf77.h"#include "timers.h"#include "ledmodule.h"#include "timeformat.h"#ifdef DCFDEBUG#include "debugconsole.h"#endif/* These two defines allow us to easily switch between inverted and * not-inverted output. */#define DCFHI BV(PIND2)#define DCFLO 0/* if the last bit was received more than 1.5 seconds ago, then this * signals the start of a minute. */#define BORDER_MINSTART ((3 * TICKSPERSECOND) / 2)#define BORDERU_1BIT ((24 * TICKSPERSECOND) / 100)#define BORDERL_1BIT ((16 * TICKSPERSECOND) / 100)#define BORDERU_0BIT ((14 * TICKSPERSECOND) / 100)#define BORDERL_0BIT (( 6 * TICKSPERSECOND) / 100)#define BITDINDEX(x) ((x & 0xF8) >> 3)#define getbit(x) (bitdata[BITDINDEX(x)] & BV(x & 0x07))#define getbitval(x) ((getbit(x) == 0) ? 0 : 1)static uint8_t bitdata[8];static uint8_t bitsrecvd;static uint8_t lastval;struct tickdata lastchange; /* "Timestamp" of last change */struct dcftime dcftime[2];uint8_t dcfvalid;uint8_t sumbits(uint8_t start, uint8_t end) {	uint8_t mult = 1;	uint8_t res = 0;	while (start <= end) {		res += getbitval(start) * mult;		if (mult == 8) {			mult = 10;		} else {			mult <<= 1; /*  * 2 */		}		start++;	}	return res;}uint8_t paritybits(uint8_t start, uint8_t end) {	uint8_t res = 0;	while (start <= end) {		if (getbit(start)) {			res = !res;		}		start++;	}	return res;}SIGNAL(SIG_INTERRUPT0) {	uint8_t val = PIND;	struct tickdata curticks;	uint16_t tickdiff;	gettickdata(&curticks);	val &= BV(PIND2);	if (val == lastval) { /* No change at all? why the IRQ then? */		return;	}	lastval = val;	tickdiff = (curticks.seconds - lastchange.seconds) * TICKSPERSECOND	         + (curticks.ticks - lastchange.ticks);	lastchange = curticks;	if (val == DCFHI) { /* Signal changed to high */		if (tickdiff > BORDER_MINSTART) { /* Start of a new minute */			led_statusleds &= (uint8_t)~led_status_dcfgood;			if (bitsrecvd == 59) {				/* Sanity checks */				if (getbit(0)) {					/* Bit 0 always has to be 0 */					bitsrecvd++;				}				if (!getbit(20)) {					/* Bit 20 always has to be 1 */					bitsrecvd++;				}				if (paritybits(21, 28) != 0) {					bitsrecvd++;				}				if (paritybits(29, 35) != 0) {					bitsrecvd++;				}				if (paritybits(36, 58) != 0) {					bitsrecvd++;				}				if (getbit(17) == getbit(18)) {					bitsrecvd++;				}				if (bitsrecvd == 59) {					struct brokentime bt;					/* None of the sanity checks failed					 * - time should be valid. */					led_statusleds |= led_status_dcfgood;					/* Decode data now */					dcfvalid = !dcfvalid;					bt.year  = sumbits(50, 57);					bt.month = sumbits(45, 49);					bt.day   = sumbits(36, 41);					bt.hour  = sumbits(29, 34);					bt.min   = sumbits(21, 27);					bt.sec   = 0;					dcftime[dcfvalid].timestamp = bttots(&bt);					dcftime[dcfvalid].ticksecs = curticks.seconds;					dcftime[dcfvalid].issummertime = getbit(17);					timers_zero();					gettickdata(&lastchange);				}			}#ifdef DCFDEBUG			debugconsole_printtext("\r\n");#endif			bitsrecvd = 0;		}	} else { /* Signal changed to low */#ifdef LEDMODULE		led_statusleds |= led_status_dcfbit;#endif		if (bitsrecvd > 60) { return; }		if ((tickdiff > BORDERL_1BIT)		 && (tickdiff < BORDERU_1BIT)) { /* valid '1' bit */			bitdata[BITDINDEX(bitsrecvd)] |= BV(bitsrecvd & 0x07);			bitsrecvd++;#ifdef DCFDEBUG			debugconsole_printtext("1");#endif		} else if ((tickdiff > BORDERL_0BIT)		 && (tickdiff < BORDERU_0BIT)) { /* valid '0' bit */			bitdata[BITDINDEX(bitsrecvd)] &= (uint8_t)~BV(bitsrecvd & 0x07);			bitsrecvd++;#ifdef DCFDEBUG			debugconsole_printtext("0");		} else {			debugconsole_printtext("X");#endif		}	}}void dcf77_init(void) {	/* Set the IRQ line so that we get an IRQ whenever it changes	 * its logical level (0 -> 1 or 1 -> 0) */	MCUCR |= BV(ISC00);	/* And allow IRQs from that port */	GICR |= BV(INTF0);	/* Enable PullUp on Port D pin 2. The Port is already a input on	 * startup. */	PORTD |= BV(PD2);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
福利一区二区在线| 日本aⅴ精品一区二区三区| 国产成人a级片| 久久久91精品国产一区二区三区| 久久国产尿小便嘘嘘| 久久视频一区二区| av在线一区二区三区| 亚洲男人天堂av| 欧美日韩一级黄| 精品综合免费视频观看| 精品区一区二区| 国产成人免费在线视频| 亚洲欧洲av另类| 精品污污网站免费看| 麻豆精品精品国产自在97香蕉| 欧美变态tickling挠脚心| 国产一区二区三区香蕉| 麻豆精品一区二区av白丝在线| 精品国产一区二区在线观看| 成人av电影在线观看| 亚洲午夜视频在线观看| 久久综合久久综合九色| 91在线观看视频| 美女一区二区久久| 1024精品合集| 精品久久久久久久人人人人传媒 | 久久久久久久久久久黄色| 成人丝袜高跟foot| 舔着乳尖日韩一区| 中文字幕在线观看不卡| 欧美精品123区| 99久久国产综合精品色伊| 日韩国产精品久久| 亚洲视频 欧洲视频| 精品日韩欧美一区二区| 欧美亚洲动漫另类| 国产盗摄精品一区二区三区在线 | 日韩精品专区在线影院观看| 国产91色综合久久免费分享| 亚洲午夜av在线| 国产精品美女久久久久久久网站| 69堂亚洲精品首页| 成人午夜又粗又硬又大| 免费在线观看一区| 一区二区三区精品在线| 午夜精品123| 中文字幕欧美日本乱码一线二线| 欧美电影在哪看比较好| 色哟哟精品一区| 国产大陆a不卡| 精品一区二区免费在线观看| 天天色综合成人网| 一区二区三区久久| 中文字幕日韩精品一区| 久久精品人人爽人人爽| 日韩精品一区二区三区中文不卡 | 成人美女视频在线观看18| 日韩一区欧美二区| 亚洲精品视频一区| 国产精品国产自产拍在线| 久久日一线二线三线suv| 91精品国产品国语在线不卡| 欧美日韩精品欧美日韩精品一 | 国产精品久久久久久户外露出| 亚洲精品一区二区三区香蕉| 欧美一级高清大全免费观看| 欧美性一区二区| 91麻豆文化传媒在线观看| 成+人+亚洲+综合天堂| 国产成人在线观看| 国产精品亚洲午夜一区二区三区| 麻豆专区一区二区三区四区五区| 琪琪久久久久日韩精品| 日韩精品福利网| 奇米综合一区二区三区精品视频| 蜜臀久久久久久久| 青娱乐精品视频| 精品一二三四区| 韩国三级中文字幕hd久久精品| 精品亚洲欧美一区| 国产精品亚洲一区二区三区在线 | 播五月开心婷婷综合| 丁香一区二区三区| 菠萝蜜视频在线观看一区| 99久久免费视频.com| av成人动漫在线观看| 99精品1区2区| 在线视频你懂得一区二区三区| 美国十次综合导航| 视频一区二区欧美| 免费成人美女在线观看.| 激情图区综合网| 国产成人av福利| 99精品久久99久久久久| 欧洲av在线精品| 日韩欧美国产高清| 国产日韩欧美麻豆| 亚洲精品国产精华液| 图片区小说区国产精品视频| 麻豆精品久久精品色综合| 国产高清一区日本| 一本到不卡精品视频在线观看| 欧美日本一道本| 久久久亚洲高清| 最近日韩中文字幕| 日韩精品高清不卡| 福利电影一区二区| 91国内精品野花午夜精品| 欧美情侣在线播放| 久久久不卡网国产精品二区| 亚洲人妖av一区二区| 蜜臀国产一区二区三区在线播放| 国产成人在线视频网站| 91福利小视频| 精品国产网站在线观看| 精品亚洲成a人在线观看 | 免费观看在线综合| 成人自拍视频在线| 欧美日韩黄色影视| 亚洲国产精华液网站w| 图片区小说区区亚洲影院| 国产精品一区在线观看你懂的| aaa国产一区| 日韩免费观看2025年上映的电影| 亚洲三级在线观看| 久久er99精品| 欧美日韩在线播放一区| 久久久精品黄色| 日韩va亚洲va欧美va久久| aaa亚洲精品| 久久久久亚洲蜜桃| 午夜精品123| 色天使久久综合网天天| 国产视频一区在线观看| 婷婷中文字幕一区三区| 97久久精品人人爽人人爽蜜臀| 精品国产乱码久久久久久图片 | 亚洲免费在线视频| 国产成人精品综合在线观看| 欧美精品一二三四| 亚洲人成精品久久久久| 国产福利一区二区三区视频| 日韩一卡二卡三卡国产欧美| 一区二区三区在线观看欧美| 成人免费高清在线观看| 欧美精品一区男女天堂| 日本欧美久久久久免费播放网| 色狠狠色狠狠综合| 国产精品女主播av| 国产高清精品网站| 日韩美一区二区三区| 日韩国产欧美视频| 欧美日韩你懂的| 一区二区欧美视频| 色综合欧美在线| 国产欧美日韩视频在线观看| 久久国内精品视频| 日韩欧美色综合网站| 日韩一区欧美二区| 欧美精品日韩精品| 亚洲一区二区三区四区五区黄| av激情综合网| 亚洲色大成网站www久久九九| aaa国产一区| 国产亚洲欧美激情| 高清shemale亚洲人妖| 国产视频视频一区| 成人一级视频在线观看| 日本一区二区成人| av色综合久久天堂av综合| 中文字幕一区二区三区在线观看| 成人免费三级在线| 中文字幕一区二区三区在线播放| www.日韩在线| 亚洲欧美激情插| 欧美视频在线观看一区| 亚洲一区成人在线| 欧美性做爰猛烈叫床潮| 日韩国产在线一| 日韩久久精品一区| 国产成a人亚洲精| 亚洲天堂福利av| 日本高清免费不卡视频| 亚洲一二三四久久| 91精品久久久久久久99蜜桃| 蜜芽一区二区三区| 国产欧美日韩精品一区| 91丨porny丨在线| 久久精品国产久精国产| 久久久亚洲精华液精华液精华液| 成人黄色777网| 亚洲一区二区精品久久av| 欧美一区二区三区日韩视频| 国内欧美视频一区二区 | 在线观看一区二区视频| 午夜欧美电影在线观看| 日韩欧美国产精品| av中文字幕不卡| 首页亚洲欧美制服丝腿| 国产亚洲一二三区|