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

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

?? main-ir.c

?? AVRusb開發的一個電腦遙控器
?? C
字號:
/*  * Project: IR-Mouse * File desc.: This file contains IR uC functions * Author: Krzysiek Szczuka * Creation Date: 2007-02-14 * Tabsize: 4 * Copyright: (c) 2007 by Krzysiek Szczuka * License: Proprietary, free under certain conditions. See Documentation. * This Revision: $Id: main-ir.c,v 1.17 2007/03/01 22:19:34 ksz Exp $ *//* * Some code in this file is from Dick Streefland's USBtiny ir project, see * http://www.xs4all.nl/~dicks/avr/usbtiny/ for details.. */#define F_CPU   8000000L // clock frequency#include <avr/io.h>#include <avr/interrupt.h>//#include <avr/pgmspace.h>#include <avr/wdt.h>#include <inttypes.h>#include <string.h>//#include "defines.h"/******************* REMOTE CONFIG ********************************************/#ifdef PANASONIC_VEQ1141# include "panasonic_veq1141.h"#else# ifdef SANYO_PLCXT10A#  include "sanyo_plcxt10a.h"# else		// !SANYO_PLCXT10A#  error "No remote type defined!!!"# endif		// SANYO_PLCXT10A#endif		// PANASONIC_VEQ1141// If this is defined, TZEROH is compared, else TONEH (see Readme.txt)#define ZERO_TEST/******************* PINOUT CONFIG ********************************************/// LED configuration #define LED_PIN		PINB	// LED PIN#define LED_DDR		DDRB	// LED DDR#define LED_PORT	PORTB	// LED PORT#define LED_PWR		0		// power LED#define LED_PWR_ON	do { LED_PORT |= _BV(LED_PWR); } while(0)#define LED_PWR_OFF	do { LED_PORT &= ~_BV(LED_PWR); }  while(0)#define LED_IR		1		// ir signal receiving LED#define LED_IR_ON	do { LED_PORT |= _BV(LED_IR); }  while(0)#define LED_IR_OFF	do { LED_PORT &= ~_BV(LED_IR); }   while(0)#define LED_C		2		// ir signal code fits LED#define LED_C_ON	do { LED_PORT |= _BV(LED_C); }  while(0)#define LED_C_OFF	do { LED_PORT &= ~_BV(LED_C); }   while(0)#define LED_MASK	(_BV(LED_IR) | _BV(LED_PWR) | _BV(LED_C))// IR decode mode select jumper's pin#define MODE_SW_PIN	PINB#define MODE_SW_DDR	DDRB#define MODE_SW_PORT PORTB#define MODE_SW		3/******************* MISC CONFIG **********************************************//*  * The mouse sends different values depending on it's movement speed, I've used * constant value, change it to increase/decrease cursor's speed * TODO: maybe this should be increased depending in ir.count value..? */#define MOVE		0x04#define	TIMEOUT		3500	// IR transmission timeout in us#define	IR_MAX		96		// maximum number of IR data bytes#define	SCALING		8		// 7: 15,98 us period, 8: 32,11 us period               				// 9: 42.67 us period, 10: 85.33 us period               				// you shouldn't touch it (-;/******************************************************************************/// calculates time periods to save in ir.data#define calcIRTime(val) ((val + (1 << (SCALING-3-1))) >> (SCALING-3))static	struct			// {	unsigned char	length;		// length of data[]	unsigned char	count;		// incremented for each IR packet//	unsigned char	offset;		// not used	unsigned char	data[IR_MAX];	// mark/space periods}		ir;static	unsigned char			edges;		// incremented for each edgestatic	unsigned int			irdelta;static	uint32_t				lastcode = 0;static	volatile unsigned char	flags = 0;static	unsigned char    		reportBuffer[3] = {0}; #define IR_INTS_ON	do{TIMSK |= (_BV(OCIE1A) | _BV(ICIE1));} while(0)#define IR_INTS_OFF	do{TIMSK &= ~(_BV(OCIE1A) | _BV(ICIE1));} while(0)//#define IR_INTS_OFF	do{TIMSK = 0;}while(0)static char makeReport(void);static void sendReport(void);// Handler for timer1 input capture interrupt: edge on IR inputISR(TIMER1_CAPT_vect){	static	unsigned int	prev;	unsigned int			stamp;	unsigned char			delta;	stamp = ICR1;			// get time stamp	//IR_INTS_OFF;			// disable both IR interrupts	TCCR1B ^= _BV(ICES1);	// toggle edge detector	LED_IR_ON;				// switch IR LED on		delta = calcIRTime(stamp - prev);	asm volatile("" : : "r"(delta) );	// calculate delta (gcc-4.1.0)		prev  = stamp;	// update timeout value 	OCR1A = stamp + TIMEOUT * CYCLES_PER_US / 8;	if ( !(flags & (FLG_IGNORE_PACKET | FLG_MAKING_REPORT)) )	{		{			ir.length = 0;		// discard previous packet			if	( edges > 0 )			{				ir.data[edges - 1] = delta;			}		}		++edges;	}		//TIMSK &= ~_BV(TOIE0);	//IR_INTS_ON;	// reenable IR interrupts}// Handler for timer1 output compare A interrupt: IR transmission timeoutISR(TIMER1_COMPA_vect){	IR_INTS_OFF;	// disable both IR interrupts	LED_IR_OFF;				// switch LED off		if ( edges >= 40 &&		!(flags & (FLG_IGNORE_PACKET | FLG_MAKING_REPORT))		)	{		ir.count++;		ir.length = edges - 1;		// new packet is complete		flags |= FLG_IR_RECEIVED;	}	edges = 0;	flags &= ~FLG_IGNORE_PACKET;		TCCR1B &= ~_BV(ICES1);			// reset to negative edge			TCNT0 = TCNT0V;	TIMSK |= _BV(TOIE0);		IR_INTS_ON;	// reenable IR interrupts	}ISR(TIMER0_OVF_vect){	if( !edges ) {		if( (ir.count > 0) && 			( (lastcode == CLMB) || (lastcode == CRMB) ) ) {				// report released LMB/RMB			reportBuffer[0] = 0;			reportBuffer[1] = 0;			reportBuffer[2] = 0;	    	flags |= FLG_SENDING_REPORT;		    sendReport();        	flags &= ~FLG_SENDING_REPORT;        }		ir.count = 0;		lastcode = 0;	}	TCNT0 = TCNT0V;		TIMSK &= ~_BV(TOIE0);}static char makeReport(void){	unsigned char i = 0;	unsigned char retval = 0;	unsigned char cc = ir.length-2;	uint32_t code = 0;			flags |= FLG_MAKING_REPORT;		if( !(MODE_SW_PIN & _BV(MODE_SW)) && (ir.count > 0) )		code = lastcode;	else {		for ( i = 0 ; i < 24 ; i++ ) {			if (edges)				flags |= FLG_IGNORE_PACKET;		#ifdef ZERO_TEST			if( ir.data[cc] > irdelta )				code &= ~_BV(i);			else				code |= _BV(i);		#else			if( ir.data[cc] > irdelta )				code |= _BV(i);			else				code &= ~_BV(i);		#endif			cc -= 2;		}	}		flags &= ~FLG_MAKING_REPORT;			//if ( !(flags & FLG_SENDING_REPORT) ) {		switch (code) {			case CUPH:				reportBuffer[0] = 1;				reportBuffer[1] = 0;				reportBuffer[2] = -MOVE;				lastcode = code;				retval = 1;				break;			case CDOWNH:				reportBuffer[0] = 1;				reportBuffer[1] = 0;				reportBuffer[2] = MOVE;				lastcode = code;				retval = 1;				break;			case CLEFTH:				reportBuffer[0] = 1;				reportBuffer[1] = -MOVE;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			case CRIGHTH:				reportBuffer[0] = 1;				reportBuffer[1] = MOVE;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			case CUP:				reportBuffer[0] = 0;				reportBuffer[1] = 0;				reportBuffer[2] = -MOVE;				lastcode = code;				retval = 1;				break;			case CDOWN:				reportBuffer[0] = 0;				reportBuffer[1] = 0;				reportBuffer[2] = MOVE;				lastcode = code;				retval = 1;				break;			case CLEFT:				reportBuffer[0] = 0;				reportBuffer[1] = -MOVE;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			case CRIGHT:				reportBuffer[0] = 0;				reportBuffer[1] = MOVE;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			case CLMB:				reportBuffer[0] = 1;				reportBuffer[1] = 0;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			case CRMB:				reportBuffer[0] = 2;				reportBuffer[1] = 0;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			case CRMBH:				reportBuffer[0] = 3;				reportBuffer[1] = 0;				reportBuffer[2] = 0;				lastcode = code;				retval = 1;				break;			default:				reportBuffer[0] = 0;				reportBuffer[1] = 0;				reportBuffer[2] = 0;				break;		}	//}    return retval;}static void sendReport(void){	unsigned char i;	for ( i=0 ; i< sizeof(reportBuffer) ; i++ ) {		while(!(UCSRA & _BV(UDRE))) ;		UDR = reportBuffer[i];	}}static void hardwareInit(void){    MODE_SW_PORT |= _BV(MODE_SW);	/* pullup for ir receive mode switch */    MODE_SW_DDR &= ~_BV(MODE_SW);    LED_DDR |= LED_MASK;        TCCR1B = _BV(ICNC1)	// noise canceler, trigger on negative edge	       | _BV(CS11);	// clock source clk/8 (remember to update 8	                    // in defines.h after change this!)	// ir interrupts (OCIE1A, ICIE1)	IR_INTS_ON;	/*** UART init ***/	// baud rate	UBRRH = (unsigned char)(((F_CPU)/((BAUD_RATE)*16l)-1)>>8);
    UBRRL = (unsigned char) ((F_CPU)/((BAUD_RATE)*16l)-1);	// in this uC we only need a transmitter	UCSRB = _BV(TXEN);	// asynchronous mode, 8N1	UCSRC = _BV(UCSZ1) | _BV(UCSZ0);	// Timer0 prescaler at 1024	TCCR0B |= _BV(CS02) | _BV(CS00);	//TCNT0 = TCNT0V;	TIMSK |= _BV(TOIE0);}/* ------------------------------------------------------------------------- */int	main(void){# ifdef ZERO_TEST	irdelta = calcIRTime(TZEROH);# else	irdelta = calcIRTime(TONEH);# endif//	asm volatile("" : : "r"(irdelta) );	// let gcc calculate irdelta _NOW_ 	wdt_enable(WDTO_1S);	hardwareInit();	sei();	LED_PWR_ON;	LED_IR_OFF;	LED_C_OFF;	for(;;){		wdt_reset();		if ( (flags & FLG_IR_RECEIVED) ) {		    if ( makeReport() ) {				LED_C_ON;		    	flags |= FLG_SENDING_REPORT;			    sendReport();	        	LED_C_OFF;	        	ir.length = 0;							}			flags &= ~( FLG_SENDING_REPORT | FLG_IR_RECEIVED );		}	}	return 0;}/* ------------------------------------------------------------------------- */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩黄色小视频| 香蕉成人伊视频在线观看| 日韩一级成人av| 欧美日高清视频| 欧美老人xxxx18| 91精品国产一区二区人妖| 91精品国产手机| 亚洲精品在线免费观看视频| 欧美成va人片在线观看| 久久色.com| 国产精品福利一区二区三区| 亚洲免费伊人电影| 亚洲国产另类av| 久久精品国内一区二区三区| 久久99精品久久久久久国产越南| 蜜桃视频免费观看一区| 麻豆高清免费国产一区| 激情av综合网| 91一区二区三区在线观看| 欧美亚日韩国产aⅴ精品中极品| 欧美日韩精品免费| 2021国产精品久久精品| 中文一区二区在线观看| 一区二区三国产精华液| 美女视频黄 久久| 成人精品小蝌蚪| 在线不卡一区二区| 国产女同性恋一区二区| 亚洲精品视频在线| 麻豆精品一区二区av白丝在线| 国产精品一区二区无线| 在线视频一区二区三区| 精品国产一区二区三区久久久蜜月 | 国产精品久久精品日日| 亚洲乱码日产精品bd| 麻豆精品视频在线观看| 91麻豆国产精品久久| 欧美大片顶级少妇| 亚洲永久精品大片| 国产高清久久久久| 51精品久久久久久久蜜臀| 国产精品美女视频| 精品一区二区免费在线观看| 97国产一区二区| 欧美tickle裸体挠脚心vk| 一区二区三区国产精品| 国产麻豆视频一区| 91精品国产品国语在线不卡| ...中文天堂在线一区| 久久草av在线| 在线播放视频一区| 亚洲精品久久久久久国产精华液| 韩国欧美国产1区| 5566中文字幕一区二区电影 | 国产精品美女久久福利网站| 五月综合激情日本mⅴ| 成人免费黄色大片| 久久综合九色综合97婷婷 | 日韩精品一区二区三区四区视频 | 亚洲综合激情网| 成人午夜免费视频| 久久亚区不卡日本| 欧美96一区二区免费视频| 91丨porny丨户外露出| 国产精品天天看| 国产一区二区在线视频| 欧美大片在线观看一区| 日韩精品欧美精品| 欧美日韩亚洲综合| 亚洲国产成人91porn| 欧美在线不卡视频| 亚洲自拍偷拍av| 在线免费观看视频一区| 亚洲综合在线电影| 欧美午夜精品久久久久久孕妇 | 日韩午夜在线影院| 日本网站在线观看一区二区三区| 欧美午夜精品一区| 天堂资源在线中文精品| 69久久夜色精品国产69蝌蚪网| 亚洲与欧洲av电影| 91精品国产色综合久久不卡电影| 日韩av一区二区在线影视| 欧美日韩成人一区二区| 免费成人在线观看| 久久精品亚洲麻豆av一区二区 | 一本色道久久综合狠狠躁的推荐| 国产精品欧美久久久久无广告 | 久久99久久精品欧美| 精品国产乱子伦一区| 国产一二三精品| 中文字幕在线不卡国产视频| 在线亚洲高清视频| 久久精品国产精品亚洲精品| 国产精品午夜免费| 欧美三片在线视频观看| 捆绑变态av一区二区三区| 国产亚洲欧美在线| 欧亚一区二区三区| 免费欧美日韩国产三级电影| 久久综合久久综合久久| 91免费在线播放| 美女被吸乳得到大胸91| 国产精品毛片高清在线完整版| 91免费视频网| 免费高清视频精品| 亚洲欧美另类小说| 久久久久亚洲综合| 在线免费观看视频一区| 国产老女人精品毛片久久| 亚洲男人的天堂在线观看| 欧美成人国产一区二区| 色诱视频网站一区| 韩国毛片一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 精品国产欧美一区二区| 色婷婷久久一区二区三区麻豆| 麻豆国产一区二区| 亚洲一区二区三区四区五区黄 | 国产一区二区中文字幕| 一区二区三区四区不卡在线 | 色视频欧美一区二区三区| 久久99日本精品| 亚洲国产一区二区三区 | 欧美综合在线视频| 国产精品一区在线观看你懂的| 亚洲成人免费影院| 最近日韩中文字幕| 久久只精品国产| 日韩欧美国产高清| 欧美巨大另类极品videosbest| www.66久久| 风间由美性色一区二区三区| 日日摸夜夜添夜夜添精品视频| 亚洲三级视频在线观看| 日本一区二区综合亚洲| 337p日本欧洲亚洲大胆色噜噜| 欧美视频一区在线观看| 972aa.com艺术欧美| 成人精品gif动图一区| 国产毛片精品国产一区二区三区| 美女网站在线免费欧美精品| 丝袜美腿亚洲综合| 亚洲另类中文字| 亚洲理论在线观看| 综合电影一区二区三区 | 奇米精品一区二区三区在线观看| 亚洲欧美成人一区二区三区| 国产精品久久免费看| 欧美韩国日本综合| 国产精品青草久久| 亚洲女人的天堂| 亚洲三级久久久| 亚洲综合无码一区二区| 亚洲午夜成aⅴ人片| 五月婷婷激情综合| 日韩av一区二区三区| 日本 国产 欧美色综合| 激情成人午夜视频| 国产成人av福利| 成人动漫在线一区| 日本道色综合久久| 欧美裸体bbwbbwbbw| 91精品国产免费| 久久免费的精品国产v∧| 久久久精品日韩欧美| 亚洲国产激情av| 亚洲色欲色欲www在线观看| 一区二区三区中文字幕在线观看| 一区二区三区欧美| 日韩电影在线观看网站| 国产精品正在播放| 色综合中文字幕国产| 在线观看亚洲精品视频| 欧美视频在线一区| 精品久久国产老人久久综合| 日本一区二区不卡视频| 亚洲一区视频在线| 国产一二精品视频| 91搞黄在线观看| 欧美精品一区二区三区蜜桃| 中文av一区特黄| 日日嗨av一区二区三区四区| 国产激情视频一区二区在线观看 | 久久在线观看免费| 日韩码欧中文字| 青青青爽久久午夜综合久久午夜| 国产成人8x视频一区二区| 欧美性色综合网| 久久九九久久九九| 五月婷婷激情综合| a4yy欧美一区二区三区| 日韩一区二区在线免费观看| 国产精品无遮挡| 久久精品国产77777蜜臀| 一本高清dvd不卡在线观看| 日韩欧美国产综合在线一区二区三区| 国产免费久久精品| 久久国产精品露脸对白| 在线观看免费亚洲|