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

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

?? steper.c

?? 步近電機控制代碼
?? C
字號:
/*----------------------------------------------------------------------------------------------------
名稱:  步進電機四相八拍驅動程序
文件名:steper.c
作者:  eastboy
E-mail: eastboy_007@163.com
日期:  2008年7月16日
版本:  1.0
申明:  按鍵部分程序參考了raosibin的4×4按鍵狀態機思想程序
說明:  
   1.可通過按鍵選擇正轉或反轉,碰到限位開關后自動微調上一次微調值后停止;
   2.可通過按鍵微調,即低速轉動,以便精確調整位置;
   3.仿真時通過兩個按鈕模擬前后限位開關,以模擬實際生活當中步進電機帶軸運動時部件的前后電限位,
     程序并可自動記住以前后限位開關為基點的微調步數;
   4.本程序只是通過了軟件功能仿真,未做實物實驗,不保證實際使用時可用,實際使用時應做相應參數調整;
   5.本程序未加入電機過流保護部分,有興趣可以自行加入。
-----------------------------------------------------------------------------------------------------*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <stdint.h>

#define ShortPush 0x40
#define LongPush 0x80

volatile uint8_t Direction=0,Limit=0;  //Direction旋轉方向,0為順時針,1為逆時針;Limit限位,0為前限位,1為后限位
volatile uint8_t Pflag=0,TuneFlag=0; //Pflag限位開關標志,1為開關動作;TuneFlag微調標志,0為不微調,1為微調加,2為微調減,3為微調連加,4為微調連減
volatile SlowSpeed=0;//低速標志,1為低速,0為高速,用于微調時選低速
static uint8_t stepper[8]={0x80,0xC0,0x40,0x60,0x20,0x30,0x10,0x90};  //驅動狀態碼表
volatile uint16_t Position[2]={0x00,0x00};//限位開關動作后的微調步數記錄

volatile uint8_t keycode=0x00;
volatile uint8_t LastKey=0xFF,CurKey=0x00;
volatile uint8_t keytimes=0x00;
volatile uint8_t key_limit=0x00;
volatile uint8_t stepcnt=0;
volatile uint16_t Pcnt=0;

#define StepperStop()  { TCCR1B=0x00;  PORTD&=~(1<<PD3); PORTC&=~(1<<PC2|1<<PC3); }//Disable driver
#define StepperStart() { PORTD|=(1<<PD3); TCCR1B=(1<<CS02|1<<CS00); TIMSK|=1<<TOIE1;}//Enable driver
	
ISR(SIG_OVERFLOW1)
{
	TCCR1B=0x00;//停止定時器
	if(SlowSpeed==1) //60ms
	{
		TCNT1H=0xC5;
		TCNT1L=0x69;
	}
	else if(SlowSpeed==0)  //15ms
	{
		TCNT1H=0xF1;
		TCNT1L=0x5B;
	}
	
	if(Direction==0)
	{
		PORTC&=~(1<<PC2|1<<PC3);
		PORTD=((1<<PD3)|stepper[stepcnt]);
		stepcnt++;
		if(stepcnt>7)		stepcnt=0;
		PORTC|=1<<PC2;
	}
	else if(Direction==1)
	{
		PORTC&=~(1<<PC3|1<<PC2);
		PORTD=((1<<PD3)|stepper[stepcnt]);
		stepcnt--;
		if(stepcnt==0xFF)	stepcnt=7;
		PORTC|=1<<PC3;
	}
	
	if(TuneFlag!=0)
	{
		switch(TuneFlag)
		{
			case 0x01:
			case 0x03:
				if(Limit==0x00)
					if(Pcnt>0) Pcnt--;
				else
					Pcnt++;
				break;
			case 0x02:
			case 0x04:
				if(Limit==0x00)
					Pcnt++;
				else
				{
					if(Pcnt>0) Pcnt--;
				}
				break;
			default:
				break;
		}
		Position[Limit]=Pcnt;
		eeprom_is_ready();
		eeprom_write_word((Limit==0x00 ? 0x01 : 0x03),Position[Limit]);
		
		if(TuneFlag==1 || TuneFlag==2)
		{
			StepperStop();
			goto T0End;
		}
		else
			StepperStart();
			goto T0End;
	}
	
	if(Pflag==1)
	{
		Pcnt++;
		if(Pcnt>=Position[Limit])
		{
			StepperStop();
			goto T0End;
		}	
		else
			TCCR1B=(1<<CS11|1<<CS10);//啟動定時器
	}
	else
		TCCR1B=(1<<CS11|1<<CS10);//啟動定時器
	T0End:
		;
}

ISR(SIG_INTERRUPT0)
{
	cli();
	StepperStop();
	key_limit=(PINB & 0X30);
	if(key_limit==0x20)  //前限位
	{
		Direction=1;
		Limit=0;
	}
	else if(key_limit==0x10)	//后限位
	{
		Direction=0;
		Limit=1;
	}
	Pflag=1;
	Pcnt=0;
	StepperStart();
	sei();
}
ISR(SIG_OVERFLOW0)
{
	TCNT0=0x64;
	
	CurKey=(PINB & 0X0F);
	if(CurKey==LastKey)
	{
		keytimes++;
		if(keytimes%5==0)//短按
		{
			keycode=(ShortPush|CurKey);
		}
		else if(keytimes>100) //長按
		{
			keytimes=101;
			keycode=(LongPush|CurKey);
		}
	}
	else if(CurKey!=LastKey)
	{
		LastKey=CurKey;
		keytimes=0x00;
	}
	else //無鍵按下或已釋放
	{
		keytimes=0x00;
	}

}

void Timer0_init()
{
	TCCR0=0x00;
	TCNT0=0x64;        //10mS
	TCCR0=(1<<CS02|1<<CS00);	//1024預分頻
	TIMSK|=1<<TOIE0;	
}

void Timer1_init()
{
	TCCR1B=0x00;//停止定時器
	TCNT1H=0xF1;
	TCNT1L=0x5B;//初始值
	TCCR1A=0x00;
	//TCCR1B=(1<<CS11|1<<CS10);//啟動定時器
	TIMSK|=1<<TOIE1;
}
void avr_init()
{
//初始化端口
	DDRB=0X00;   //配置為輸入,內部上拉
	PORTB=0XFF;
	
	DDRC=(1<<PC2|1<<PC3); //PC2,PC3 LED Out
	PORTC=0x00;
	
	DDRD=(1<<PD3|1<<PD4|1<<PD5|1<<PD6|1<<PD7);
	PORTD=0X00;
	
	MCUCR=(1<<ISC01);
	GICR=1<<INT0;
	
//初始化變量
	Direction=0;
	eeprom_is_ready();
	if(eeprom_read_byte(0x00)==0xFF)
	{
		eeprom_is_ready();
		eeprom_write_byte(0x00,0x00);
		eeprom_is_ready();
		eeprom_write_word(0x01,0x0000);
		eeprom_is_ready();
		eeprom_write_word(0x03,0x0000);
		Position[0]=0;
		Position[1]=0;
	}
	else
	{
		Position[0]=eeprom_read_word(0x01);
		Position[1]=eeprom_read_word(0x03);
	}
	
	Timer0_init();
    Timer1_init();
	
}

int main()
{
	cli();
	avr_init();
	sei();
	while(1)
	{
		switch(keycode)
		{
			case 0x4E:   //正轉
				Direction=0;     //旋轉方向,0為順時針,1為逆時針
				SlowSpeed=0;  //速度標志,為1時慢速
				Pflag=0;      		//限位標志,為1時限位開關作用
				TuneFlag=0;    //微調標志,0為正常運轉,1為位置微調
				StepperStart();
				break;
			case 0x4D:   //反轉
				Direction=1;
				SlowSpeed=0;
				Pflag=0;
				TuneFlag=0;
				StepperStart();
				break;
			case 0x4B:   //微調+
				Direction=0;
				SlowSpeed=1;
				TuneFlag=1;
				Pflag=0;
				StepperStart();
				break;
			case 0x47:  //微調-
				Direction=1;
				SlowSpeed=1;
				TuneFlag=2;
				Pflag=0;
				StepperStart();
				break;
			case 0x8E:
				
				break;
			case 0x8D:
				
				break;
			case 0x8B:   //連續微調+
				TuneFlag=3;
				Pflag=0;
				break;
			case 0x87:  //連續微調-
				TuneFlag=4;
				Pflag=0;
				break;
			default:
				break;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人一区| 亚洲国产毛片aaaaa无费看| 亚洲欧美日韩一区二区三区在线观看| 亚洲国产美国国产综合一区二区| 国产乱码一区二区三区| 欧美日韩国产一区二区三区地区| 国产色一区二区| 奇米综合一区二区三区精品视频| 色天使色偷偷av一区二区| 久久久亚洲综合| 日本欧美肥老太交大片| 91久久国产综合久久| 中文字幕成人av| 国产一区二区三区免费看| 欧美精品三级在线观看| 亚洲精品国产一区二区精华液 | 精品99久久久久久| 亚洲综合一区二区精品导航| 成人av午夜电影| 久久久国产一区二区三区四区小说 | 91视频国产资源| 国产三级欧美三级| 美女网站色91| 7777精品伊人久久久大香线蕉的 | 欧美日韩黄色一区二区| 亚洲视频狠狠干| 99精品国产热久久91蜜凸| 18成人在线观看| 91在线观看免费视频| 国产精品美女久久福利网站| 国产一区在线精品| 久久网站最新地址| 国产一区二区主播在线| 欧美成人a∨高清免费观看| 久久国产剧场电影| 久久夜色精品一区| 高清不卡在线观看| 中文字幕免费不卡在线| 夫妻av一区二区| 日韩理论片一区二区| 日本久久一区二区三区| 亚洲成人中文在线| 91黄色免费网站| 日韩二区在线观看| 精品福利在线导航| 国产91综合网| 亚洲精品写真福利| 欧美电影影音先锋| 精品夜夜嗨av一区二区三区| 久久久久久久综合狠狠综合| 成人午夜精品在线| 一区二区三区中文字幕| 在线播放亚洲一区| 国产老妇另类xxxxx| 综合欧美亚洲日本| 在线播放国产精品二区一二区四区| 免费成人在线视频观看| 国产视频亚洲色图| 欧美唯美清纯偷拍| 狠狠色综合日日| 国产精品久久久久久久蜜臀| 欧美色大人视频| 国产麻豆欧美日韩一区| 亚洲欧美日韩国产综合在线 | 欧美在线视频日韩| 国产永久精品大片wwwapp| 亚洲视频图片小说| 日韩欧美视频一区| 91一区二区在线观看| 三级不卡在线观看| 国产精品天美传媒| 91精品国产91久久久久久最新毛片 | 黄一区二区三区| 亚洲综合男人的天堂| 欧美mv日韩mv国产网站app| 99精品久久免费看蜜臀剧情介绍| 日韩成人精品视频| 亚洲裸体在线观看| 久久综合九色综合欧美98 | 精品国产免费久久| 欧洲精品在线观看| 成人99免费视频| 国内成人自拍视频| 天天色图综合网| 亚洲视频免费在线观看| 亚洲精品一区二区三区蜜桃下载| 欧美三日本三级三级在线播放| 国产+成+人+亚洲欧洲自线| 亚洲777理论| 亚洲女厕所小便bbb| 中文字幕欧美日韩一区| 欧美成人艳星乳罩| 欧美电影一区二区| 91搞黄在线观看| 99国产欧美另类久久久精品 | 中文在线免费一区三区高中清不卡| 在线播放欧美女士性生活| 色屁屁一区二区| 99re这里只有精品首页| 懂色av一区二区夜夜嗨| 国产一区二区三区国产| 九色综合狠狠综合久久| 免费高清不卡av| 日本视频在线一区| 免费高清成人在线| 免费成人小视频| 免费xxxx性欧美18vr| 日日欢夜夜爽一区| 日韩高清电影一区| 免费高清视频精品| 激情小说欧美图片| 久久99久久精品| 韩国午夜理伦三级不卡影院| 精品一区二区三区视频| 激情五月激情综合网| 激情综合色综合久久| 国产在线精品国自产拍免费| 久久99热国产| 国产成人精品免费看| 国产91高潮流白浆在线麻豆| gogogo免费视频观看亚洲一| 99综合影院在线| 在线一区二区视频| 欧美久久久影院| 日韩一区二区高清| 26uuu另类欧美| 亚洲欧洲日韩在线| 亚洲国产欧美在线人成| 久久精品国产亚洲高清剧情介绍| 麻豆国产欧美日韩综合精品二区| 久久成人综合网| 成人性生交大片| 91久久久免费一区二区| 337p亚洲精品色噜噜| 日韩精品在线看片z| 欧美高清在线视频| 综合欧美一区二区三区| 五月天国产精品| 韩国v欧美v日本v亚洲v| 成人爱爱电影网址| 欧美日韩亚洲高清一区二区| 日韩亚洲欧美综合| 亚洲国产成人午夜在线一区| 亚洲一级二级三级| 国产一区二区三区不卡在线观看 | 亚洲免费av观看| 日韩在线卡一卡二| 国产成人欧美日韩在线电影| 91久久精品一区二区| 精品sm捆绑视频| 伊人性伊人情综合网| 国模套图日韩精品一区二区 | 欧美大片拔萝卜| 亚洲丝袜另类动漫二区| 日韩国产精品久久| 不卡电影一区二区三区| 欧美久久久久免费| 国产精品欧美综合在线| 偷窥少妇高潮呻吟av久久免费| 国产精品自在在线| 欧美三级蜜桃2在线观看| 久久天天做天天爱综合色| 亚洲第一福利视频在线| 国产成人精品一区二区三区网站观看| 在线视频你懂得一区| 国产日韩亚洲欧美综合| 免费在线看一区| 欧美性猛片aaaaaaa做受| 国产欧美一区二区在线| 免费高清不卡av| 欧美天天综合网| 国产精品福利一区二区| 九九**精品视频免费播放| 欧美三级欧美一级| 亚洲欧美经典视频| 春色校园综合激情亚洲| 精品国产乱子伦一区| 爽爽淫人综合网网站| 91高清视频免费看| 尤物视频一区二区| 91最新地址在线播放| 欧美激情一区二区在线| 激情综合色播五月| 欧美va亚洲va香蕉在线| 日本不卡一区二区| 8v天堂国产在线一区二区| 亚洲最大成人综合| 91老师国产黑色丝袜在线| 国产精品毛片无遮挡高清| 国产精品18久久久久久久网站| 日韩一区二区免费视频| 日本中文字幕不卡| 日韩午夜激情av| 美腿丝袜亚洲综合| 欧美一级片免费看| 毛片一区二区三区| 欧美一区二区私人影院日本| 奇米一区二区三区| 欧美不卡一二三| 国产九九视频一区二区三区|