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

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

?? main._c

?? 一個小型的遙控玩具飛行機器人的電子調速器控制源程序
?? _C
字號:
/********************************************************************************/
//		
// 		builder : 2007-04-10
// 		Target  : ATMEAG 48V
// 		Crystal : 內部 8.00 MHz
//
//		
		
/********************************************************************************/

#include 	<iom48v.h>
#include 	<macros.h>

#include	"eeprom.h"
#include	"time2.h"
#include	"adc.h"


#define		uchar		unsigned char
#define		uint		unsigned int


#define		SET_LED		PORTD |=  (1<<PB4)
#define		CLR_LED		PORTD &= ~(1<<PB4)

uchar	e2rom[7];

uint	PE1,PE2;

uchar	mode;
uchar	rxd_flag;	// 油門接收OK標志

uchar	PWM;
uint	Timer;
uint	high,middle,low;
uchar	REV;

union	
{	uint	temp;
	uchar  	data[2];		
}time;


/*---------------------------------------------------------------
   			初始化
----------------------------------------------------------------*/
void timer0_init(void)
{
 	TCCR0B = 0x00; //stop
 	TCNT0  = 0x01; //set count
 	TCCR0A = 0x23; 
 	OCR0B  = 0xA5;
 	TCCR0B = 0x01; //start timer
}



void timer1_init(void) 		// 20MS 中斷
{
 	TCCR1B = 0x00;  // stop
 	TCNT1H = 0xB1;  // setup
 	TCNT1L = 0xE0;
 	OCR1AH = 0x4E;
 	OCR1AL = 0x20;
 	OCR1BH = 0x4E;
 	OCR1BL = 0x20;
 	ICR1H  = 0x4E;
 	ICR1L  = 0x20;
 	TCCR1A = 0x00;
}


void init_devices(void)
{
	asm("cli");
		
 	DDRB  = 0x7F;
 	PORTB = 0xC0;
	
	DDRC  = 0x00;
 	PORTC = 0x00; // m103 output only
 	
 	DDRD  = 0xFB;
 	PORTD = 0x40;
 	
 	MCUCR  = 0x00;
 	EICRA  = 0x03; 	// INT0 上升沿觸發
 	EIMSK  = 0x01;	// 使能 INT0 中斷
 	
 	timer0_init();
 	timer1_init();
 	timer2_init();
 	init_eeprom();
 	adc_int();
 	
 	asm("sei");
}

/*---------------------------------------------------------------
   			延時
----------------------------------------------------------------*/

void delay(uint t)
{
	uint i,j,k;
	
	for(i=0;i<t;i++)
	{
		for(j=0;j<200;j++)
		{
			for(k=0;k<50;k++);;
		}
	}
}


void LED_set(void)
{
	SET_LED	;
	delay(7);
	CLR_LED	;
	delay(5);
}

/*---------------------------------------------------------------
   			油門處理
----------------------------------------------------------------*/

void Gun_set(void)
{
	if(rxd_flag)	// 接收已完成
	{
		rxd_flag = 0;
		
		if(Timer>high) Timer = high;	// 確保接收到的數據在正常范圍內
		if(Timer<low)  Timer = low;
		
		if(Timer>(middle+50))		// 前進 1550us
		{
			PWM = ((Timer-middle)*10)/PE1;	// 計算占空比
			if(PWM>210)PWM = 255;			
			
			Pwm_set(PWM,1);		// 設置PWM占空比
			mode = 1;
			SET_LED;
		}
		else if(Timer<(middle-50)) 	
		{
			if(!mode && REV)	// 后退
			{
				PWM = ((middle-Timer)*10)/PE2;
				if(PWM>210)PWM = 255;
				Pwm_set(PWM,2);
				SET_LED;
				delay(5);
			}
			else 
			{
				Pwm_set(255,3);	// 剎車
				while((Timer+50)<=middle)
				{
					LED_set();
				}
				mode = 0;
			}
		}
		else 
		{
			Pwm_set(0,0);
			CLR_LED;
		}
	}
}




uchar key(void)
{
	uchar i,k=0;
	
	for(i=0;i<5;i++)
	{
		if(PINB & 0x80) k = 0;
		else k ++;
		delay(3);
	}

	return k;
}

/*---------------------------------------------------------------
   			
----------------------------------------------------------------*/

uint compute(void)
{
	uchar 	i;
	uint 	temp = 0;
	
	for(i=0;i<8;i++)
	{	
		while(!rxd_flag);
		temp += Timer;
		rxd_flag  = 0;
		Timer= 0;
	}
	temp = (temp>>3);
	
	return temp;
}


void Buz()
{
	Pwm_set(20,1);
	
	delay(10);
	
	Pwm_set(0,0);
	
	delay(10);
}

void Rev_Setup()
{
	e2rom[6] = EEPROM_read(6);
	
	if(key()>3)	
	{
		while(!(PINB&0x80)); // 等待按鍵松開
		
		if(e2rom[6]) e2rom[6]=0;
		else e2rom[6] =1;
	}
	EEPROM_write(6,e2rom[6]);
}



/*---------------------------------------------------------------
   			中點設置
----------------------------------------------------------------*/
void Setup()
{
 	 uchar i;
	 

	if(key()>3)		// 設置
	{
loop:	Buz();	
		middle = compute();		// 中位設置
		
		delay(50);
		while(key()<3)
		{
			LED_set();
			delay(35);
		}
		while(!(PINB&0x80));
		high = compute();		// 高位設置
		
		Buz();
		delay(50);
		
		while(key()<3)
		{
			LED_set();
			LED_set();
			delay(35);
		}
		while(!(PINB&0x80));
		low = compute();		// W低位設置
		Buz();
		delay(50);

		// 設置數據正確存盤
		if((low>800&&low<1300)&&(middle>1350&&middle<1650)&&(high>1700&&high<2200))
		{							
			PE1 = ((high-middle)*10)/256+2;
			PE2 = ((middle-low )*10)/256+2;
			
			e2rom[0] = low/256;
			e2rom[1] = low%256;
		
			e2rom[2] = high/256;
			e2rom[3] = high%256;
		
			e2rom[4] = middle/256;
			e2rom[5] = middle%256;
		
			for(i=0;i<6;i++)	// 寫EEPOM
			{
				EEPROM_write(i,e2rom[i]);
				delay(5);
				while(compute()<1350||compute()>1650);
			}
			Buz();
			LED_set();
			delay(10);
			LED_set();
		}
		else 	// 設置不對重來
		{
			while(key()<3)
			{
				LED_set();
			}
			delay(100);
			goto loop;
			
		}
	}	
}
		

void Read_E2rom(void)
{	
	uchar i;
	
	for(i=0;i<7;i++)	// 讀EEPOM
	{
		e2rom[i] = EEPROM_read(i);
		delay(5);
	}
	
	low 	= e2rom[0]*256+e2rom[1];	// 油門低位
	high 	= e2rom[2]*256+e2rom[3];	// 高位
	middle 	= e2rom[4]*256+e2rom[5];	// 中位
	REV		= e2rom[6];		// 倒車標致
	
	if((low>800&&low<1300)&&(middle>1350&&middle<1650)&&(high>1700&&high<2200))
	{	// 讀起的數據正確
		PE1 = ((high-middle)*10)/256+2;
		PE2 = ((middle-low )*10)/256+2;
	}
	else // 讀起的數據不正確使用默認值
	{
		PE1 = 23;
		PE2 = 23;
		middle = 1500;
		low	   = 1100;
		high   = 1900;
		REV	   = 1;
	}
}



/*---------------------------------------------------------------
   			INT0 中斷油門接收
----------------------------------------------------------------*/
#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
	if(EICRA==0x03)		// 上升沿開始記時
	{
		TCNT1H = 0x00; 
 		TCNT1L = 0x00; 
 		TCCR1B = 0x02;  //start Timer1
		EICRA  = 0x02;
	}
	else if(EICRA==0x02)	// 下降沿讀計時數據
	{
		time.data[0] = TCNT1L;
		time.data[1] = TCNT1H;
		Timer  	= time.temp;
		TCNT1H 	= 0x00; 
 		TCNT1L	= 0x00; 
		EICRA  	= 0x03;
		rxd_flag =1;	// 置接收 flag
	}
}


/*---------------------------------------------------------------
   			main
----------------------------------------------------------------*/

int main(void)
{
	delay(10);
	
	init_devices();		// 初始化
	
	Rev_Setup();
	
	Read_E2rom();		// 讀EEPROM
	
	while(!rxd_flag);	// 等待油門信號
	Buz();
	
	LED_set();
	delay(10);
	LED_set();
	
	rxd_flag = 0 ;
	
	while(1)
	{	
		Gun_set();		
		Setup();	
	}
}

/*--------------------   the end ------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美白人最猛性xxxxx69交| 蜜桃在线一区二区三区| 视频一区欧美精品| 国产成人免费视频网站| 欧美剧在线免费观看网站 | 91精品办公室少妇高潮对白| 欧美一区二区三区婷婷月色| 亚洲欧洲综合另类| 国产成人免费视频一区| 26uuu久久综合| 成人午夜电影网站| 精品美女在线观看| 麻豆成人av在线| 7777精品伊人久久久大香线蕉| 成人免费一区二区三区在线观看| 国产主播一区二区| 26uuu精品一区二区| 美脚の诱脚舐め脚责91| 宅男噜噜噜66一区二区66| 亚洲愉拍自拍另类高清精品| 91免费精品国自产拍在线不卡| 欧美国产日韩一二三区| 国产福利精品一区二区| 日本一区二区视频在线| 风间由美性色一区二区三区| 久久午夜免费电影| 国产精品亚洲午夜一区二区三区| 精品毛片乱码1区2区3区| 久久99精品国产麻豆婷婷洗澡| 日韩欧美精品在线| 精品亚洲aⅴ乱码一区二区三区| 日韩三区在线观看| 麻豆精品视频在线| 久久中文字幕电影| 成+人+亚洲+综合天堂| **性色生活片久久毛片| 91麻豆.com| 亚洲国产精品一区二区久久恐怖片 | 一本色道亚洲精品aⅴ| 亚洲日本丝袜连裤袜办公室| 97超碰欧美中文字幕| 一二三四社区欧美黄| 在线亚洲欧美专区二区| 亚洲www啪成人一区二区麻豆| 欧美精品日韩精品| 久久99精品国产.久久久久久| www国产亚洲精品久久麻豆| 国产精品一二三四区| 国产精品九色蝌蚪自拍| 92精品国产成人观看免费 | 亚洲国产精品99久久久久久久久| 不卡区在线中文字幕| 一区二区三区不卡在线观看| 欧美剧在线免费观看网站| 国产一区在线观看麻豆| 亚洲欧洲精品一区二区精品久久久| 一本大道久久a久久精品综合| 日韩高清中文字幕一区| 久久综合九色综合久久久精品综合| 成人久久久精品乱码一区二区三区| 亚洲美女免费在线| 欧美不卡123| 91激情五月电影| 青青草原综合久久大伊人精品| 26uuu欧美| 欧美午夜片在线观看| 美女视频黄免费的久久 | 国产一区二区不卡在线| 亚洲黄一区二区三区| 日韩写真欧美这视频| 欧美中文字幕不卡| 久久99精品久久久久久| 亚洲一区二区三区国产| 国产精品每日更新| 日韩精品中文字幕一区| 91无套直看片红桃| 国产一区二区电影| 午夜精品在线看| 亚洲视频一区二区在线| 国产亚洲综合av| 在线不卡一区二区| 在线一区二区三区四区五区| 国产电影精品久久禁18| 青青草原综合久久大伊人精品 | 亚洲免费电影在线| 久久亚洲欧美国产精品乐播| 欧美群妇大交群的观看方式| 成人免费高清在线| 精品一区二区三区影院在线午夜| 亚洲电影一区二区| 自拍av一区二区三区| 国产日产欧美一区| 欧美电影免费提供在线观看| 欧美日韩国产bt| 在线欧美小视频| 99久久久精品| 成av人片一区二区| 国产成人精品免费| 国产精品性做久久久久久| 蜜臀av在线播放一区二区三区 | 亚洲三级视频在线观看| 国产调教视频一区| 日本一区二区三区在线观看| 久久综合久久综合亚洲| 精品国产免费久久| 久久综合久久久久88| 精品国产伦理网| 精品久久国产97色综合| 日韩午夜在线播放| 欧美精品一区二| 久久综合色播五月| 国产女人aaa级久久久级| 欧美激情一区二区在线| 亚洲午夜久久久久久久久电影院| 一级精品视频在线观看宜春院| 亚洲女人****多毛耸耸8| 亚洲欧美日本韩国| 亚洲影视在线观看| 日韩电影免费在线| 日本中文一区二区三区| 全国精品久久少妇| 国产精品18久久久久久vr| 国产黄色成人av| 成人av午夜影院| 91理论电影在线观看| 欧美日韩一级视频| 欧美第一区第二区| 国产精品第四页| 亚洲大片精品永久免费| 麻豆精品在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产精品一区二区三区乱码| 成人免费毛片a| 日本精品一级二级| 欧美一区三区二区| 国产农村妇女精品| 亚洲国产婷婷综合在线精品| 日韩成人免费电影| 国产精品乡下勾搭老头1| 91片在线免费观看| 日韩欧美色电影| 自拍偷拍亚洲综合| 日韩精品高清不卡| 7777精品伊人久久久大香线蕉的 | 美女视频黄a大片欧美| 国产成人免费视频| 欧美日韩精品欧美日韩精品一综合| 日韩欧美一级二级| 亚洲理论在线观看| 免费国产亚洲视频| 色综合久久久久综合99| 日韩欧美精品在线| 一区二区三区小说| 国产精品自在欧美一区| 欧美亚日韩国产aⅴ精品中极品| 欧美v日韩v国产v| 亚洲午夜免费电影| 粉嫩嫩av羞羞动漫久久久| 欧美裸体bbwbbwbbw| 国产精品美女久久久久久久| 蜜臀av一区二区在线免费观看| 91在线观看下载| 久久免费精品国产久精品久久久久| 亚洲视频在线一区二区| 国产激情视频一区二区在线观看| 欧美中文字幕久久| 日韩一区中文字幕| 加勒比av一区二区| 欧美日韩精品欧美日韩精品一| 国产欧美在线观看一区| 免费不卡在线视频| 在线日韩av片| 日韩伦理av电影| 国产suv一区二区三区88区| 欧美一级理论片| 亚洲国产视频a| 日本精品一区二区三区高清 | 亚洲欧美日韩电影| 成人app网站| 国产亚洲精品bt天堂精选| 男人的天堂久久精品| 欧美日韩的一区二区| 亚洲一区二区三区中文字幕在线| 成人黄色片在线观看| 久久久99久久| 久久精品国产精品亚洲红杏| 欧美丰满少妇xxxxx高潮对白 | 国产精品免费久久久久| 精品一区二区三区香蕉蜜桃| 日韩三级高清在线| 五月天中文字幕一区二区| 91黄色免费看| 亚洲国产一区在线观看| 欧美日韩精品一区二区三区四区| 一区二区三区日韩精品视频| 色呦呦国产精品| 亚洲福利视频导航| 9191成人精品久久| 久久精品国产精品青草| 国产亚洲午夜高清国产拍精品|