⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auto_halfauto.c

📁 单片机工业控制板,具备I/O,KEYBOARD,步进电机伺服电机等功能
💻 C
字号:

#include <p30f4011.h>

#include "adr_port_define.h"

#include "extern_define.h"


void X_LEFTANDRIGHT()
{
	Nop();

	LED_num.bits.LED8=0;
	if(X_END)
	{
		
		if(!KR0)//KR0						//GOTO right left limit
		{
			LR_num.bits.LR5=1;
			LR_num.bits.LR6=0;
			X_DIRECTION=1;			//GOTO right flag
		}
		else if(!KR1)//KR1				//goto left  right limit
		{
			LR_num.bits.LR6=1;
			LR_num.bits.LR5=0;	
			X_DIRECTION=0;			//GOTO left flag
		}
		else 						//GOTO right
		{
			LR_num.bits.LR5=1;
			LR_num.bits.LR6=0;	
			X_DIRECTION=1;			//GOTO right flag
		}

	}
	else
	{
		if(!KR0)X_DIRECTION=1;			//GOTO right	
		if(!KR1)X_DIRECTION=0;			//go to left
		if(X_DIRECTION)				//GOTO right
		{
			LR_num.bits.LR5=1;
			LR_num.bits.LR6=0;
					
		}
		else if(!X_DIRECTION)			//goto left
		{
			LR_num.bits.LR6=1;
			LR_num.bits.LR5=0;	
			
		}

	}
			
	X_END=0;							//NOT stop
Nop();
}	



void halfauto()									//KR0,KR1常断开时KR0,KR1=1;
{												//感应到时KR0,KR1=0;,感应开关





	Nop();
	HALFAUTO=1;
	if(XY_END)
	{
		if(!KR0)//KR0							//MOTOR on left  KR0
		{
			LR_num.bits.LR5=1;
			LR_num.bits.LR6=0;				//motor go to right
			XY_DIRECTION=1;				//goto right
		}
		if(!KR1)//KR1							//motor on right
		{
			LR_num.bits.LR6=1;			
			LR_num.bits.LR5=0;				//goto left
			XY_DIRECTION=0;				//goto left
		}
		else
		{
			LR_num.bits.LR5=1;
			LR_num.bits.LR6=0;				//motor go to right
			XY_DIRECTION=1;				//goto right
		}
		XY_END=0;
	}




		

	else
	
	{
		if(!KR6)XY_DIRECTION=1;				//goto right
		if(!KR7)XY_DIRECTION=0;				//goto left
		if(XY_DIRECTION)							//MOTOR on left
		{	
			LR_num.bits.LR5=1;
			LR_num.bits.LR6=0;				//motor go to right

			if(!KR1)						//right limit
			{	



				LR_num.bits.LR6=1;
				if(!Y_DIRECTION)			//motor on first postion
				{
					if(y_postion==y_endpos)
					{
						Y_DIRECTION=1;
						while(operator_mode==2)break;
					}
					
					else
					{
						LR_num.bits.LR3=1;
						LR_num.bits.LR4=0;

					}
				}
			
				else
				{
					if(y_postion==y_firstpos)Y_DIRECTION=0;
					else
					{
						LR_num.bits.LR4=1;		
						LR_num.bits.LR3=0;

					}
					
				}
			}
		}
		if(!XY_DIRECTION)							//motor on right
		{
			LR_num.bits.LR6=1;			
			LR_num.bits.LR5=0;				//goto left
		
			if(!KR0)						//left limit
			{
				LR_num.bits.LR5=1;		
				
				if(!Y_DIRECTION)			//motor on first postion
				{
					if(y_postion==y_endpos)
					{
						Y_DIRECTION=1;
						while(operator_mode==2)break;
					}
						
						
					else
					{
						LR_num.bits.LR3=1;
						LR_num.bits.LR4=0;

					}
				}
				else
				{
					if(y_postion==y_firstpos)Y_DIRECTION=0;
					else
					{
						LR_num.bits.LR4=1;		
						LR_num.bits.LR3=0;

					}
					
				}				
			}
		}
	
	}
		
	Nop();
	
}




//*****************************************************************//autorun
	
void autorun()
{
//	Nop();
//	staus[6]=1;
//	if(staus[6]==1)START=1;
//	if(staus[7]==1)START=0;
//	if(START)
//	{
//		jingei_count=jingei_count+1;
//		TRISE=0X00;
//		pluse_counter=0;	
//		RE5=0;	
//
//		motor_jingei_encoder=20;	//unit :encoder
//		z_encoder=motor_jingei_encoder;
//							
//		total_pluse=z_encoder;
//		PWM_ON=1;								//enable pwm
//		T2_ON=1;								//enable timer2	
//
//		while(KR10);							//Wait  pluse attend flag , server end flag
//		z_postion=z_postion+motor_jingei;		//unit:mm
//		halfauto();
//		HALFAUTO=0;							//half auto flag
//		if(jingei_count==jingei_times)
//		{
//			halfauto();
//			halfauto();
//			START=0;
//			jingei_count=0;
//		}
//		
//	
//	
//	}
//	else									//stop
//	{
//		Lrnum.bits.LR3=1;				//close y head
//		Lrnum.bits.LR4=1;				//clode y backwards
//		Lrnum.bits.LR5=1;				//close x left
//		Lrnum.bits.LR6=1;				//close x right
//		Lrnum.bits.LR7=1;				//close z upwards
//		Lrnum.bits.LR8=1;				//close z downwards
//			
//	}
//			
//	Nop();
	
	
}





























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -