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

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

?? main.c

?? C Sourcr cdoe 採用AD7714 電能表數據和計量脈沖輸出
?? C
字號:
#include <stdint.h>#include <stdlib.h>#include <string.h>#include <avr/interrupt.h>#include <avr/io.h>#include <avr/pgmspace.h>#include <avr/sleep.h>#include <avr/wdt.h>#include "config.h"#include "lcd_spi.h"#include "ad7714.h"#include "serial.h"#include "rotary_switch.h"volatile uint32_t time_ctr = 0;volatile uint16_t menu_show_delay=0;volatile uint8_t misc_delay=0;uint8_t menu_item=0, menu_visible=0;#define MENU_ZERO 0#define MENU_GAIN 1#define MENU_CHAN 2#define MENU_BUFFER 3#define MENU_RATE 4#define MENU_BACKLIGHT 5#define NUM_MENU_ITEMS 6ad7714params_t params;uint8_t rate_idx = 0;uint8_t buffer = 1;uint32_t softzero = 0x800000;uint8_t want_set_params=0;uint8_t backlight = 0;volatile uint32_t average_val=0x800000;void my_delay(uint8_t ms) {	misc_delay = ms;	while(misc_delay) {		wdt_reset();		set_sleep_mode(SLEEP_MODE_IDLE);		sleep_mode();	}}ISR(TIMER1_COMPA_vect) {	time_ctr++;	rotary_bounce_tick();	if(menu_show_delay) menu_show_delay--;	if(misc_delay) misc_delay--;}static void ioinit(void) {	TCCR1A = 0;	TCCR1B = _BV(CS10) | _BV(CS12) | _BV(WGM12);	OCR1A = 15; // almost a millisecond	TIMSK1 = _BV(OCIE1A);	init_serial();	init_rotary();	// PB5 = SCK, PB4 = MISO, PB3 = MOSI	// PB2 = !SS is set to output in ad7714.c but must be set here in	// order for SPI to work during LCD initialization.	DDRB |= (_BV(PB5) | _BV(PB3) | _BV(PB2));	DDRB &= ~(_BV(PB4));	PORTB |= _BV(PB4); // prevent floating input	// enable, master, clock=fosc/128	//SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR1) | _BV(SPR0);	// enable, master, clock=fosc/16	SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR0);	sei();	wdt_enable(WDTO_2S);}///////////////////void printAdcVal(uint32_t val, uint8_t is_line2) {	char s[40];	if(is_line2) LcdLine2();	else LcdLine1();	if(!is_line2) {		print_uint32(time_ctr);	}	double dval = ((double)((int32_t)val - (int32_t)softzero) / (double)0x800000) * 2.5;	dval /= (double)(1 << params.gain_param);	dtostrf(dval, 11, 8, s);	if(!is_line2) {		putchr(' ');		printstr(s);		putchr('\n');	}	LcdWriteStr(s);	LcdWriteStr("   ");	ltoa(val, s, 16);	zeropad(s, 6);	LcdWriteStr(s);}static void do_menu() {	char s[25];	if(menu_visible && !menu_show_delay) {		printAdcVal(average_val, 1);		menu_visible = 0;	}	int8_t rotary1, rotary2;	get_rotary(&rotary1, &rotary2);	if(!rotary1 && !rotary2) return;	if(!menu_show_delay) rotary2 = 0;	menu_show_delay = 3000;	menu_visible = 1;	if(rotary2) {		if(rotary2 ==  1) {			if(menu_item == NUM_MENU_ITEMS-1) menu_item = 0;			else menu_item++;		} else if(rotary2 == -1) {			if(menu_item) menu_item--;			else menu_item = NUM_MENU_ITEMS-1;		}		rotary1 = rotary2 = 0;	}	LcdLine2();	if(menu_item == MENU_ZERO) {		if(rotary1) {			softzero = average_val;			menu_show_delay = 0;		}		LcdWriteStr("Zero=");		ltoa(softzero, s, 16);		zeropad(s, 6);		LcdWriteStr(s);	} else if(menu_item == MENU_GAIN) {		if(rotary1) {			params.gain_param = (params.gain_param + rotary1) & 7;			want_set_params = 1;		}		LcdWriteStr("Gain=");		ltoa((1<<params.gain_param), s, 10);		LcdWriteStr(s);	} else if(menu_item == MENU_CHAN) {		if(rotary1) {			params.chan = (params.chan + rotary1) & 7;			want_set_params = 1;		}		LcdWriteStr("Channel=");		LcdWriteStr(ad7714chan_name(params.chan));	} else if(menu_item == MENU_BUFFER) {		if(rotary1) {			buffer = !buffer;			ad7714set_buffer(buffer);			LcdClearLine1();			LcdLine2(); 		}		LcdWriteStr("Buffer=");		LcdWriteStr(buffer ? "On" : "Off");	} else if(menu_item == MENU_RATE) {		uint8_t rate_changed = 0;		if(rotary1==-1 && rate_idx) {			rate_idx--;			rate_changed++;		} else if(rotary1==1 && ad7714standard_rate(rate_idx+1)) {			rate_idx++;			rate_changed++;		}		if(rate_changed) {			params.rate = ad7714standard_rate(rate_idx);			want_set_params = 1;		}		LcdWriteStr("Rate=");		double hz = ad7714rate_to_hertz(params.rate);		dtostrf(hz, 5, 2, s);		LcdWriteStr(s);		LcdWriteStr("Hz");	} else if(menu_item == MENU_BACKLIGHT) {		if(rotary1) {			backlight = !backlight;			LcdBacklight(backlight);		}		LcdWriteStr("Backlight ");		LcdWriteStr(backlight ? "On" : "Off");	}	LcdClearToEnd();}int main(void) {	ioinit();	printstr_p(PSTR("\nHello.\n"));	LcdSetup();	LcdBacklight(backlight);	LcdClearLine2();	LcdClearLine1();	LcdWriteStr_p(PSTR("Initializing..."));	params.gain_param = 0;	params.chan = 4;	params.rate = ad7714standard_rate(0);	ad7714init();	ad7714set_buffer(buffer);	ad7714setup(params);	uint16_t num_idle = 0;	for(;;) {		wdt_reset();		if(ad7714have_capture()) {			num_idle=0;			if(ad7714accum_count() > 20) {				average_val = ad7714pull_average();				if(!menu_visible) printAdcVal(average_val, 1);			}			printAdcVal(ad7714get_capture(), 0);		} else {			num_idle++;			// wake on timer tick or on DRDY interrupt			set_sleep_mode(SLEEP_MODE_IDLE);			sleep_mode();		}		/*		if(chr_avail() && getchr() == 27) {			captureEnable(0);			spi_debug();			captureEnable(1);		}		*/		do_menu();		if(want_set_params && ad7714can_set_params()) {			ad7714setup(params);			LcdClearLine1();			want_set_params = 0;			softzero = 0x800000;		}	}}/*static uint8_t SPIverbose(uint8_t v) {	uint8_t ret = SPIquiet(v);	char s[15];	printstr_p(PSTR("("));	ltoa(v, s, 16); zeropad(s, 2); printstr(s);	printstr_p(PSTR(","));	ltoa(ret, s, 16); zeropad(s, 2); printstr(s);	printstr_p(PSTR(") "));//	printstr_p(PSTR(" / "));//	ltoa(v, s, 2); zeropad(s, 8); printstr(s);//	printstr_p(PSTR(" => "));//	ltoa(ret, s, 2); zeropad(s, 8); printstr(s);//	putchr('\n');	return ret;}static uint8_t hex2nib(char c) {	if(c >= '0' && c <= '9') return c-'0';	if(c >= 'a' && c <= 'f') return c-'a'+10;	if(c >= 'A' && c <= 'F') return c-'A'+10;	return 0xff;}void spi_debug() {	for(;;) {		OUTER:		printstr_p(PSTR("DebugSPI> "));		int i;		uint8_t v=0;		for(i=0; i<2; i++) {			v <<= 4;			char c;			uint8_t nib;			do {				c = getchr();				if(c == 27) {					return;				} else if(c == 'q') {					freeport();					grabport();					printstr_p(PSTR("Toggled CS\n"));					goto OUTER;				}				nib = hex2nib(c);			} while(nib == 0xff);			putchr(c);			v += nib;		}		putchr('\n');		grabport();		SPIverbose(v);		freeport();		putchr('\n');	}}*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
|精品福利一区二区三区| 麻豆91精品91久久久的内涵| 日精品一区二区| 岛国精品在线播放| 日韩丝袜美女视频| 亚洲成人黄色影院| 成人aaaa免费全部观看| 精品少妇一区二区三区日产乱码| 亚洲人快播电影网| 国产不卡在线视频| 精品精品国产高清一毛片一天堂| 亚洲成人黄色影院| 欧美亚洲动漫精品| 亚洲欧美日韩国产手机在线| 国产成人精品午夜视频免费| 欧美丰满一区二区免费视频| 亚洲女爱视频在线| 91免费精品国自产拍在线不卡 | 国产精品日日摸夜夜摸av| 麻豆精品精品国产自在97香蕉| 99精品久久99久久久久| 久久一留热品黄| 久久精品国产久精国产| 欧美一区二区网站| 日韩激情一二三区| 91精品国产综合久久久蜜臀粉嫩| 亚洲国产综合人成综合网站| youjizz久久| 中文字幕av不卡| 成人免费视频免费观看| 国产精品青草久久| 成人禁用看黄a在线| 国产精品毛片久久久久久| 国产激情视频一区二区在线观看| 久久综合色一综合色88| 国产精品77777竹菊影视小说| 欧美精品一区男女天堂| 国产一区二区三区久久久| 国产无人区一区二区三区| 国产精品91一区二区| 国产精品毛片无遮挡高清| 99久久精品免费精品国产| 成人免费在线视频| 在线观看国产精品网站| 亚洲444eee在线观看| 日韩免费视频一区| 国产精品亚洲专一区二区三区 | 日本一不卡视频| 欧美不卡在线视频| 国产精品99久久久| 综合久久国产九一剧情麻豆| 在线影院国内精品| 日本欧美肥老太交大片| www日韩大片| 99精品视频在线免费观看| 亚洲国产精品一区二区www在线| 欧美人狂配大交3d怪物一区| 紧缚奴在线一区二区三区| 国产精品区一区二区三区| 欧美日韩一区在线观看| 精品在线观看视频| 综合电影一区二区三区| 555夜色666亚洲国产免| 国产69精品久久777的优势| 一区二区欧美国产| 精品国产精品一区二区夜夜嗨| 成人免费看片app下载| 亚洲电影中文字幕在线观看| 久久亚洲综合av| 日韩一区二区三区四区| caoporm超碰国产精品| 日韩在线观看一区二区| 国产精品久久久久久户外露出| 欧美军同video69gay| 成人午夜视频网站| 日本vs亚洲vs韩国一区三区| 国产精品国产三级国产有无不卡| 91精品国产综合久久婷婷香蕉 | 欧美成人a∨高清免费观看| 成年人国产精品| 日本亚洲三级在线| 中文字幕在线视频一区| 精品精品欲导航| 91官网在线观看| 丁香婷婷深情五月亚洲| 美日韩黄色大片| 亚洲第一狼人社区| 自拍偷拍国产精品| 国产欧美一区二区精品秋霞影院| 56国语精品自产拍在线观看| 色欲综合视频天天天| 高清成人免费视频| 精品一区在线看| 日本免费在线视频不卡一不卡二| 亚洲精品乱码久久久久久黑人 | 国产a视频精品免费观看| 青青草一区二区三区| 一区二区免费视频| 亚洲欧美另类综合偷拍| 中文字幕综合网| 国产精品视频一区二区三区不卡| 日韩女优制服丝袜电影| 欧美一区二区成人| 欧美福利视频一区| 欧美精品久久一区| 欧美色男人天堂| 欧美视频在线一区| 欧美三级在线播放| 欧美性极品少妇| 欧美日韩在线免费视频| 欧美视频中文字幕| 欧美日本国产视频| 制服丝袜中文字幕一区| 久久久午夜精品| 精品福利视频一区二区三区| 日韩精品一区二区三区中文精品| 这里只有精品视频在线观看| 欧美日韩在线精品一区二区三区激情 | 精品在线亚洲视频| 久久精品国产成人一区二区三区| 视频一区国产视频| 麻豆成人91精品二区三区| 蜜臀av性久久久久av蜜臀妖精| 免费观看一级欧美片| 久久国产精品99久久人人澡| 精品综合免费视频观看| 国产精品一区免费在线观看| 国产精品自产自拍| 成人午夜在线视频| 91九色最新地址| 在线播放日韩导航| 欧美精品一区二区不卡| 国产女人18毛片水真多成人如厕| 国产精品日产欧美久久久久| 亚洲美女精品一区| 日韩一区精品字幕| 国产一区二区美女| 99视频在线精品| 欧美区视频在线观看| 欧美v国产在线一区二区三区| 久久精品人人做| 亚洲精品中文在线影院| 天堂久久久久va久久久久| 精品亚洲porn| 色综合天天视频在线观看| 欧美男人的天堂一二区| 久久久久久久精| 亚洲一区二区四区蜜桃| 激情五月婷婷综合网| 91热门视频在线观看| 欧美一区二区在线看| 国产精品久久毛片a| 性感美女极品91精品| 国产91色综合久久免费分享| 欧美最新大片在线看| 久久亚洲一级片| 亚洲国产日日夜夜| 国内精品伊人久久久久av一坑| 99re亚洲国产精品| 精品剧情在线观看| 亚洲综合成人网| 成人国产在线观看| 日韩欧美视频在线| 亚洲午夜久久久久久久久电影院| 国产精一区二区三区| 欧美顶级少妇做爰| 亚洲欧美怡红院| 国产精品99久| 日韩欧美电影在线| 亚洲第一成年网| 99re6这里只有精品视频在线观看| 欧美一区二区精品| 亚洲成人动漫在线观看| 91在线观看视频| 国产欧美视频一区二区三区| 免费视频一区二区| 欧美视频精品在线| 亚洲精品五月天| 北条麻妃一区二区三区| 国产精品久久久久影院色老大| 美美哒免费高清在线观看视频一区二区| 色综合网色综合| 中文字幕乱码一区二区免费| 精品写真视频在线观看| 制服丝袜成人动漫| 亚洲国产精品一区二区尤物区| 91免费视频网| **性色生活片久久毛片| 成人18视频日本| 国产亚洲一区二区在线观看| 美腿丝袜亚洲综合| 日韩一区二区三区在线| 日本在线不卡一区| 91精品婷婷国产综合久久性色 | 欧美在线你懂得| 亚洲欧洲综合另类| 91蜜桃网址入口| 一区二区三区四区五区视频在线观看 | av不卡一区二区三区| 国产精品高潮久久久久无|