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

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

?? crjtsc21c03.c

?? 電腦繡花機鋸齒電機控制程序
?? C
字號:
/***********************************
	纏繞機提升控制程序
**********************************/
#include "REG52.h"
#include <intrins.h>	
#include <math.h>

unsigned int code res6[5]={324,312,300,288,276};
unsigned int code res5[5]={48,36,24,12,276};
unsigned int code res4[5]={36,24,12,12,288};
unsigned int code res3[5]={24,12,12,24,300};
unsigned int code res2[5]={12,12,24,36,312};
unsigned int code res1[5]={12,24,36,48,324};
unsigned int code acctime[11][8]={	75,70,66,62,59,56,53,50,		//100/0.44
							75,64,56,49,44,40,37,34,		//150/0.65
							75,60,50,43,38,34,30,28,		//200/0.79
							75,60,50,43,38,34,30,28,		//250/0.79
							75,64,56,49,44,40,37,34,		//300/0.65
							75,59,48,41,35,31,28,25,		//350/0.86
							75,54,43,35,30,26,23,20,		//400/1.07
							75,50,38,30,25,22,19,17,		//450/1.28
							75,47,34,27,22,19,16,14,		//500/1.49
							75,44,31,24,20,16,14,12,		//550/1.7
							75,43,30,23,18,15,13,11		//600/1.84
							};
/*unsigned int code acctime[11][8]={	75,70,66,62,59,56,53,50,		//100/0.44
							75,64,56,49,44,40,37,34,		//150/0.65
							75,60,50,43,38,34,30,28,		//200/0.79
							75,60,50,43,38,34,30,28,		//250/0.79
							74,63,55,48,43,39,36,33,		//300/0.65
							74,58,47,40,34,30,27,24,		//350/0.86
							74,53,42,34,29,25,22,19,		//400/1.07
							74,49,37,29,24,21,18,16,		//450/1.28
							74,46,33,26,21,18,15,13,		//500/1.49
							74,43,30,23,19,15,13,11,		//550/1.7
							74,42,29,22,17,14,12,10		//600/1.84
							};*/

//**************************************
int data dataen;			//數據選通
int direction;				//正反轉
unsigned int head;			//頭數0~31

int run;					//是否運轉中	0:停車狀態1: 運轉狀態
unsigned int revcmd;

unsigned int speed;
unsigned int samespd;
unsigned int tnum;
unsigned int downpoints;
unsigned int upordown;

unsigned int uppoints;
unsigned int contime;
unsigned int contime1;

unsigned int newpos;			//提升或者下降的檔位,不含最高檔位
unsigned int newp;			//讀取檔位值
unsigned int nowpos;		//
unsigned int workpos;		//
bit ok;
//unsigned int keycode;
unsigned int swingcode;
//**************************************
//回送主控信號**********************
sbit riseerr=P1^4;		//err=0 針桿高度異常=1到位
sbit rising=P1^3;		//state3=0  正在提升  =1提升完畢
sbit sd0=P1^0;				//測試狀態
sbit sd1=P1^1;
sbit sd2=P1^2;
//sbit sd3=P0^6;
//功能選通信號
sbit address0=P3^6;
sbit address1=P3^7;	
sbit strobe=P3^1;
//提升電機驅動信號**************
sbit step=P0^2;
sbit dir=P0^1;
sbit en=P0^0;
//上位機輸入信號******************
sbit ad0=P1^0;            //AD8
sbit ad1=P1^1;            //AD9
sbit ad2=P1^2;            //AD10
sbit ad3=P1^3;            //AD11
sbit ad4=P1^4;
sbit ad5=P1^5;            //AD13
sbit ad6=P1^6;
sbit ad7=P1^7;

sbit ad8=P1^0;
sbit ad9=P1^1;
sbit ad10=P1^2;
sbit ad11=P1^3;
sbit ad13=P1^5;
sbit ad12=P3^2;		//C1板數據選通信號INT0
//**************************************
sbit lamp=P0^7;
//**************************************
void	ex44us(void)
{
	int	i=2;
	while(i--);
}
void delay44us(unsigned int nums)
{
	do
	{
	   	ex44us();
		nums--;
	}while(nums!=0);
}
void Ex10us()
{
	data unsigned char t=3;
	while(--t);
}
void Delay10us(unsigned int nums)
{
	do{
	   	Ex10us();
		nums--;
		}while(nums!=0);
}
/**********************************************
		 信號選通
		 address1		address0
		 	0					0			選通AD0-AD7
		 	0					1			選通AD8-AD13、JPOS0、JPOS1
		 	1					0			選通state0~4、err
		 	1					1			選通撥碼開關、IN0、IN1、JPOS2	
IN:signal	0~3
***********************************************/
void PitchON(int signal)
{
	switch(signal)
	{
		case 0:
			address0=0;
			address1=0;
		break;
		case 1:
			address0=1;
			address1=0;
		break;
		case 2:
			address0=0;
			address1=1;
		break;
		case 3:
			address0=1;
			address1=1;
		break;
	}
}
/**********************************************
	寫state0~3、err信號
***********************************************/
void Strobe()
{
	strobe=0;
	_nop_();
	_nop_();
	strobe=1;
	_nop_();
  	_nop_();
	P1 |= 0xff;
}
/*************************************
	區分命令
	IN:ad8~ad11
	OUT:	0:提升	2:讀提升檔位	13:初始化
*************************************/
unsigned int RevCommand()
{
	unsigned int cmd=0;
	PitchON(1);
	Delay10us(10);
	cmd=(unsigned int)ad13;
	cmd=(cmd<<1)|(unsigned int)ad11;
	cmd=(cmd<<1)|(unsigned int)ad10;
	cmd=(cmd<<1)|(unsigned int)ad9;
	cmd=(cmd<<1)|(unsigned int)ad8;
	return (cmd);
}

/*************************************
	IN:ad7~ad0		cmdtype=0:提升	2/3:讀檔位	13:初始化
	OUT:檔位/運轉否
*************************************/
 unsigned int DealCmdData(int cmdtype)
 {
 	unsigned int cmd=0;
 	unsigned int cmdsir[8];
 	int i;
 	
 	PitchON(0);
	Delay10us(10);
 	if(cmdtype==0)			//檔位0~5
 	{
 		cmd=ad3;
 		cmd=(cmd<<1)|(unsigned int)ad2;
		cmd=(cmd<<1)|(unsigned int)ad1;
		cmd=(cmd<<1)|(unsigned int)ad0;
	}
	else if(cmdtype==1)	//轉速0~60
 	{
 		cmd=ad5;
		cmd=(cmd<<1)|(unsigned int)ad4;
		cmd=(cmd<<1)|(unsigned int)ad3;
		cmd=(cmd<<1)|(unsigned int)ad2;
		cmd=(cmd<<1)|(unsigned int)ad1;
		cmd=(cmd<<1)|(unsigned int)ad0;
	}
	else if(cmdtype==10)			//1:壓腳提升/0:壓腳下降
 	{
 		cmd=ad0;
	}
	else if(cmdtype==11)	//壓腳振幅10-50檔,最大50
 	{
 		cmd=ad5;
		cmd=(cmd<<1)|(unsigned int)ad4;
		cmd=(cmd<<1)|(unsigned int)ad3;
		cmd=(cmd<<1)|(unsigned int)ad2;
		cmd=(cmd<<1)|(unsigned int)ad1;
		cmd=(cmd<<1)|(unsigned int)ad0;
	}
	else if(cmdtype==13)
	{
		cmdsir[0]=ad0;
		cmdsir[1]=ad1;
		cmdsir[2]=ad2;
		cmdsir[3]=ad3;
		cmdsir[4]=ad4;
		cmdsir[5]=ad5;
		cmdsir[6]=ad6;
		cmdsir[7]=ad7;
		for(i=0;i<8;i++)
		{
			if(cmdsir[0]!=cmdsir[i])
				return(1);					//通訊不過
		}
		return(0);
	}
 	return (cmd);
}

 /*************************************
	發送一個脈沖(f=1k),驅動電機
*************************************/
void	SendPulse(unsigned int ttime)
{
	if(direction==0)
	{
		step=1;
		dir=1;
	}
	else
	{
		dir=1;
		step=1;
	}
	ex44us();
	
	if(direction==0)
		step=0;
	else
		dir=0;
	delay44us(ttime);
}

 /*************************************
	提升函數		
	傳動比
	細分:1:4
	輸入:要提升的檔位
	返回:0:正常  1:錯誤
*************************************/
int HeadUpOrDown(unsigned int npos)
{
	int i;
	
	newpos=npos;
	
	PitchON(2);
	riseerr=0;
	rising=0;
	Strobe();
	
	if(newpos>nowpos)
		direction=0;			//電機正轉(上升)
	else
		direction=1;			//電機反轉(下降)

	if(newpos==5)
		uppoints=res6[nowpos];
	else if(newpos==4)
	{
		if(nowpos<4)
			uppoints=res5[nowpos];
		else
			uppoints=res5[nowpos-1];
	}
	else if(newpos==3)
	{
		if(nowpos<3)
			uppoints=res4[nowpos];
		else
			uppoints=res4[nowpos-1];
	}
	else if(newpos==2)
	{
		if(nowpos<2)
			uppoints=res3[nowpos];
		else
			uppoints=res3[nowpos-1];
	}
	else if(newpos==1)
	{
		if(nowpos<1)
			uppoints=res2[nowpos];
		else
			uppoints=res2[nowpos-1];
	}
	else if(newpos==0)
	{
		uppoints=res1[nowpos-1];
	}
	
	en=0;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	for(i=0;i<uppoints;i++)
		SendPulse(60);
	en=1;
	
	nowpos=newpos;
	
	PitchON(2);
	riseerr=1;
	rising=1;
	Strobe();
	return(0);
}
int ToUp(unsigned int spd)
{
	int i;
	
	samespd=spd;
	
	samespd=samespd/5;
	samespd--;
	samespd--;
	if(samespd<0)
		samespd=0;
	else if(samespd>10)
		samespd=10;
	
	PitchON(2);
	riseerr=0;
	rising=0;
	Strobe();
	
	direction=0;			//電機正轉(上升)

	if(samespd>3)
	{
		//uppoints=36;
		//uppoints=keycode*6;
		uppoints = swingcode;
	}
	else if(samespd==3)
	{
		uppoints=48;
	}
	else if(samespd<=2)
	{
		uppoints=60;
	}
	/*else if(samespd==1)
	{
		uppoints=72;
	}
	else if(samespd==0)
	{
		uppoints=84;
	}*/
	
	en=0;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	if(uppoints>18)
	{
		for(i=0;i<8;i++)
			SendPulse(acctime[samespd][i]);
		for(i=0;i<uppoints-16;i++)
			SendPulse(acctime[samespd][7]);
		for(i=0;i<8;i++)
			SendPulse(acctime[samespd][7-i]);
	}
	else
	{
		for(i=0;i<uppoints;i++)
			SendPulse(40);
	}
	en=1;
	
	PitchON(2);
	riseerr=1;
	rising=1;
	Strobe();
	return(0);
}
int ToDown()
{
	int i;
	
	PitchON(2);
	riseerr=0;
	rising=0;
	Strobe();
	
	direction=1;			//電機反轉(下降)

	if(samespd>3)
	{
		//downpoints=36;
		//downpoints=keycode*6;
		downpoints = swingcode;
	}
	else if(samespd==3)
	{
		downpoints=48;
	}
	else if(samespd<=2)
	{
		downpoints=60;
	}
	/*else if(samespd==1)
	{
		downpoints=72;
	}
	else if(samespd==0)
	{
		downpoints=84;
	}*/
	
	en=0;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	if(downpoints>18)
	{
		for(i=0;i<8;i++)
			SendPulse(acctime[samespd][i]);
		for(i=0;i<downpoints-16;i++)
			SendPulse(acctime[samespd][7]);
		for(i=0;i<8;i++)
			SendPulse(acctime[samespd][7-i]);
	}
	else
	{
		for(i=0;i<downpoints;i++)
			SendPulse(40);
	}
	en=1;
	
	PitchON(2);
	riseerr=1;
	rising=1;
	Strobe();
	return(0);
}

void External0(void) interrupt 0 using 2
{
	EA=0;
	dataen=0;
	EA=1;
}
		 		
void main()
{
	unsigned char  i;
	//int checkcom=1;		//開機檢查通訊線全低		=1有錯誤   =0正常
	//int checkcom2=1;		//開機檢查通訊線全高		=1有錯誤   =0正常
	
	run=0;
	nowpos=1;
	newp=0;
	
	for(i=0;i<3;i++)
	{
		lamp=0;
		delay44us(3000);
		lamp=1;
		delay44us(3000);
	}
		
	IT0=1;
	EX0=1;
	TR0=0;
	ET0=0;
	IE0=0;
	EA=1;
  	
  	dataen=1;
  	PitchON(2);
	rising=1;
	Strobe();
	
	en=1;	//提升電機使能
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	
	/*while(checkcom==1)
	{
		_nop_();
		//locklamp=1;		//有錯誤,熄燈
		//mendlamp=1;
		if(dataen==0)
		{
			revcmd=RevCommand();
			dataen=1;
		}
		if(revcmd==13)	
			checkcom=DealCmdData(13);
		if(checkcom==0)
		{
			PitchON(2);
			riseerr=1;
			Strobe();
		}
	}
	
	while(checkcom2==1)
	{
		_nop_();
		//locklamp=1;		//有錯誤,熄燈
		//mendlamp=1;
		PitchON(2);
		riseerr=0;
		Strobe();
		if(dataen==0)
		{
			revcmd=RevCommand();
			dataen=1;
		}
		if(revcmd==13)
			checkcom2=DealCmdData(13);
		if(checkcom2==0)
		{
			PitchON(2);
			riseerr=1;
			Strobe();
		}
	}
	lamp=0;*/
	
	/*while(run==0)
	{
		speed=40;
		ToUp(speed);
		delay44us(10000);
		ToDown();
		delay44us(20000);
	}*/
	
	while(1)
	{
		revcmd=15;
		
		/*//讀撥碼開關確定繡作時壓腳動作幅度編碼
		PitchON(3);
	 	Delay10us(10);
		keycode=ad2;
		keycode=(keycode<<1)|(unsigned int)ad1;
		keycode=(keycode<<1)|(unsigned int)ad0;
		keycode++;
		if(keycode>6)
			keycode=6;
		if(keycode<1)
			keycode=1;*/
		
		if(dataen==0)
		{
			revcmd=RevCommand();
			dataen=1;
			PitchON(2);
			sd0=1;
			sd1=1;
			sd2=1;
			riseerr=1;
			Strobe();
		}
		switch(revcmd)
		{
			case 15:			//無效
			break;
			case 0:				//提升
				newp=DealCmdData(0);		//工作位
				if(newp>5)
					newp=5;
				if(newp<0)
					newp=0;
				if(newp==nowpos)
					break;
				
				ok=HeadUpOrDown(newp);
				//nowpos=newp;
			break;
			case 1:
				speed=DealCmdData(1);
				if(speed>60)
					speed=60;
				if(speed<0)
					speed=0;
				
				if(speed==0)
				{
					TR1=0;
					ET1=0;
					TH1=0;
					TL1=0;	
					step=1;
					dir=1;
					samespd=0;
				}
			break;
			case 10://壓腳升降
				upordown=DealCmdData(10);
				//upordown
				if(upordown==0)//升
					ToUp(speed);
				else
					ToDown();
			break;
			case 11:
				swingcode = DealCmdData(11);
				if(swingcode > 40)
					swingcode = 40;
				if(swingcode < 10)
					swingcode = 10;
			break;
			default:
			break;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区在线看| 日韩精品免费专区| 国产一二精品视频| 国产视频一区二区在线观看| 色综合天天性综合| 亚洲精品视频观看| 日韩视频免费观看高清完整版 | 国产人久久人人人人爽| 国产不卡视频在线播放| 亚洲国产aⅴ天堂久久| 国产欧美一区二区精品性色超碰| 精品国产伦一区二区三区观看方式| 99久久久国产精品免费蜜臀| 蜜桃精品视频在线观看| 一区二区三区四区乱视频| 久久久久九九视频| 欧美嫩在线观看| aaa欧美日韩| 国产一区91精品张津瑜| 粉嫩一区二区三区在线看| 成人污污视频在线观看| 国产综合久久久久影院| 日韩成人午夜精品| 亚洲成人福利片| 亚洲一区二区在线视频| 亚洲欧美日韩国产综合在线| 国产精品久久久久久久久免费桃花| 精品欧美一区二区久久| 91精品国产综合久久久久久久| 91老师片黄在线观看| 福利视频网站一区二区三区| 91片在线免费观看| 日韩一区二区三区高清免费看看| 久久综合狠狠综合久久综合88| 日韩欧美一二区| 欧美一级国产精品| 一区视频在线播放| 亚洲欧美偷拍卡通变态| 免费观看30秒视频久久| 激情欧美一区二区| 色哟哟国产精品免费观看| 欧美mv日韩mv国产网站app| 国产精品白丝在线| 六月丁香婷婷久久| 国产精品综合网| 成人网在线播放| 日韩一级片网址| 亚洲裸体xxx| 国产**成人网毛片九色| 欧美日韩激情一区二区| 中文字幕日韩一区| 韩国午夜理伦三级不卡影院| 色美美综合视频| 欧美一区二区播放| 亚洲精品在线观| 午夜免费久久看| 国产一区二区中文字幕| 欧美性高清videossexo| 日韩欧美国产1| 亚洲成人午夜影院| 91麻豆精品视频| 综合av第一页| 日韩在线一区二区| 在线免费视频一区二区| 在线成人高清不卡| 国产人久久人人人人爽| 麻豆精品一二三| 日韩欧美中文字幕制服| 五月婷婷久久综合| 欧美另类一区二区三区| 亚洲一区二区三区不卡国产欧美| 色悠悠久久综合| 18成人在线视频| 99久久国产综合精品色伊| 日本一区二区免费在线观看视频| 精东粉嫩av免费一区二区三区| 日韩精品在线看片z| 毛片av一区二区| 久久综合九色综合欧美98| 久久精品免费观看| 久久亚洲精品小早川怜子| 国产一区二区三区四区在线观看 | 日韩在线播放一区二区| 欧美精品自拍偷拍动漫精品| 亚洲成av人片| 日韩欧美在线网站| 国产一区二区三区黄视频 | 免费精品视频在线| 日韩精品专区在线影院观看| 蜜桃精品视频在线| 久久久不卡网国产精品一区| 大尺度一区二区| 亚洲欧美激情视频在线观看一区二区三区 | 久久久久久麻豆| 东方aⅴ免费观看久久av| 国产精品私人自拍| 麻豆国产欧美日韩综合精品二区| 日韩欧美一级在线播放| 极品尤物av久久免费看| 国产精品看片你懂得| 在线免费观看一区| 麻豆成人久久精品二区三区小说| 久久午夜老司机| 色老汉一区二区三区| 日韩va欧美va亚洲va久久| 精品久久久网站| 一本一道久久a久久精品 | 久久综合色之久久综合| 成人精品视频一区| 亚洲福利视频导航| 国产午夜亚洲精品不卡| 日本高清无吗v一区| 九九热在线视频观看这里只有精品| 国产亚洲精品免费| 欧美性高清videossexo| av一区二区三区黑人| 午夜国产精品影院在线观看| 久久九九国产精品| 欧美日韩免费在线视频| 亚洲一区二区三区小说| 精品国产一区二区亚洲人成毛片| 99精品在线免费| 极品美女销魂一区二区三区免费| 亚洲免费观看高清完整版在线观看熊| 日韩午夜激情视频| 欧美色老头old∨ideo| 成人永久免费视频| 国内精品视频一区二区三区八戒| 一区二区三区在线免费视频| 精品国产一区二区三区av性色| 欧美性生活大片视频| 成人性生交大片免费看中文| 首页国产欧美久久| 亚洲精品成人少妇| 欧美极品少妇xxxxⅹ高跟鞋| 北条麻妃国产九九精品视频| 久久国产精品区| 亚洲18女电影在线观看| 亚洲精品免费在线| 国产精品理伦片| 国产精品丝袜在线| 国产女同性恋一区二区| 精品国产百合女同互慰| 日韩欧美高清在线| 欧美一级视频精品观看| 69久久夜色精品国产69蝌蚪网| 91久久精品一区二区| 色欧美片视频在线观看| 91蜜桃传媒精品久久久一区二区| 成人黄色一级视频| 美女诱惑一区二区| 六月丁香婷婷色狠狠久久| 秋霞国产午夜精品免费视频| 日本伊人色综合网| 麻豆成人久久精品二区三区红| 男男视频亚洲欧美| 麻豆91免费观看| 国产米奇在线777精品观看| 久久电影网电视剧免费观看| 久久91精品国产91久久小草| 青草国产精品久久久久久| 蜜臀av在线播放一区二区三区| 美女视频网站久久| 国产精品一区在线观看乱码| 国产成人99久久亚洲综合精品| 国产精品一区二区在线看| 国产不卡免费视频| 色综合色综合色综合| 91福利视频久久久久| 欧美日本一区二区三区| 日韩视频国产视频| 欧美经典三级视频一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 国产精品久久久久久久久免费丝袜| 国产精品久久久久久久久搜平片| 亚洲综合无码一区二区| 秋霞成人午夜伦在线观看| 国产乱子轮精品视频| av在线不卡网| 91精品国产91久久综合桃花| 久久精品无码一区二区三区 | 成人性视频网站| 在线欧美小视频| 欧美精品一区男女天堂| ㊣最新国产の精品bt伙计久久| 亚洲h动漫在线| 国产在线麻豆精品观看| 色哟哟在线观看一区二区三区| 88在线观看91蜜桃国自产| 国产欧美视频在线观看| 亚洲国产一区在线观看| 韩国一区二区视频| 91福利国产精品| 国产日产欧美一区二区三区| 亚洲一区二区三区国产| 风间由美一区二区av101| 欧美日韩第一区日日骚| 国产精品沙发午睡系列990531| 日本中文字幕一区| 色av成人天堂桃色av|