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

📄 run.c

📁 应用于陵阳单片的电梯,
💻 C
字号:
#include <spce061a.h>
extern int key_code[16];
extern int next_floor;                            //下一次要到达的层
extern int floor;                                //层位置
extern int flag;                                   //运行方向标志  0为上  1为下  2为停止
void run()                                         //已到了某层,判断下一个运动方向 
{
	*P_Watchdog_Clear=0x0001;
	if(flag==1)                                    //上次为向下运动
	{
		if(floor==1)                                  //在第一层时
		{
			if(key_code[10]||key_code[2])     //第二层有呼叫信号,且要向上,或要上第二层	
					next_floor=2;             
		   else if(key_code[12]||key_code[3])     //第三层有呼叫信号,且要向上,或要上第三层
				    next_floor=3;
				else if(key_code[14]||key_code[4])     //第四层有呼叫信号,且要向上,或要上第四层
				           next_floor=4;
				    else if(key_code[15]||key_code[5])     //第五层有呼叫信号,且要向下,或要上第五层
				              next_floor=5;
				          else if(key_code[13])            //第四层有呼叫信号,且要向下
				              	   next_floor=4;
				              	else if(key_code[11])
				              		    next_floor=3;       //第三层有呼叫信号,且要向下
				              		else if(key_code[9])    //第二层有呼叫信号,且要向下
				              		          next_floor=2;    
				                         else next_floor=1;     //下一层为第一层,即不动				              
		}
		if(floor==2)                                        //在第二层时
		{
			if(key_code[8]||key_code[1])     //下一层为第一层	
			      next_floor=1;
		   else if(key_code[12]||key_code[3])     //下一层为第三层,即要向上行
				      next_floor=3;
				else if(key_code[14]||key_code[4])     //下一层为第四层
				            next_floor=4;
				    else if(key_code[15]||key_code[5])     //下一层为第五层
				                next_floor=5;
				         else if(key_code[13])
				                   next_floor=4;
				             else if(key_code[11])
				                     next_floor=3;	
				         else next_floor=2;     //下一层为第二层	,即不动	    
		}
		if(floor==3)
		{
			if(key_code[9]||key_code[2])     //下一层为第二层	
			     next_floor=2;
		   else if(key_code[8]||key_code[1])     //下一层为第一层	
			         next_floor=1;
                else if(key_code[10])
				          next_floor=2;
			        else if(key_code[14]||key_code[4])     //下一层为第四层,即要向上行
				            next_floor=4; 
				        else if(key_code[15]||key_code[5])     //下一层为第五层
				              next_floor=5;
				             else if(key_code[13])
				                      next_floor=4;
				                    else     next_floor=3; //下一层为第三层,即不动					                         			         
		}
		if(floor==4)
		{
			if(key_code[11]||key_code[3])     //下一层为第三层
				next_floor=3; 
		   else if(key_code[9]||key_code[2])     //下一层为第二层	
					next_floor=2;
			    else if(key_code[8]||key_code[1])     //下一层为第一层	
			            next_floor=1;
			         else if(key_code[10])     
			                  next_floor=2;
			             else if(key_code[12])     
			                       next_floor=3;
			                  else if(key_code[15]||key_code[5])     //下一层为第五层,即要向上行
				              next_floor=5;
				          else   next_floor=4;  //下一层为第四层,即不动		                 
		}	
	}
   else	if(flag==0)                                                //上次为向上运行
	{
		if(floor==2)
		{
			if(key_code[12]||key_code[3])     //下一层为第三层
				next_floor=3;
		  else if(key_code[14]||key_code[4])     //下一层为第四层
				     next_floor=4; 
			  else if(key_code[15]||key_code[5])     //下一层为第五层
				        next_floor=5;
				   else if(key_code[13])     
			                 next_floor=4;
			            else if(key_code[11])     
			                  next_floor=3;
				            else if(key_code[8]||key_code[1])     //下一层为第一层,要下行了	
			                         next_floor=1; 
			                     else   next_floor=2; //下一层为第二层,即不动          
		}
		if(floor==3)
		{
			if(key_code[14]||key_code[4])     //下一层为第四层
				 next_floor=4;
		   else if(key_code[15]||key_code[5])     //下一层为第五层
				    next_floor=5;
				else if(key_code[13])     
			               next_floor=4;         
				    else if(key_code[9]||key_code[2])     //下一层为第二层,要下行了	
					          next_floor=2;
					    else if(key_code[8]||key_code[1])     //下一层为第一层	
			                        next_floor=1;
			                 else if(key_code[10])     
			                         next_floor=2;
			                      else   next_floor=3; //下一层为第三层,即不动                
		}
		if(floor==4)
		{
			if(key_code[15]||key_code[5])     //下一层为第五层
				  next_floor=5;
		   else if(key_code[11]||key_code[3])     //下一层为第三层,要下行了
				     next_floor=3;
		       else if(key_code[9]|key_code[2])     //下一层为第二层	
					    next_floor=2;
					else if(key_code[8]||key_code[1])     //下一层为第一层	
			                  next_floor=1;
			              else if(key_code[10])     
			                      next_floor=2;
			                  else if(key_code[12])     
			                        next_floor=3;
			                       else   next_floor=4; //下一层为第四层,即不动     
		}
		if(floor==5)
		{
			if(key_code[13]||key_code[4])     //下一层为第四层
				   next_floor=4;
			else if(key_code[11]||key_code[3])     //下一层为第三层,要下行了
				       next_floor=3;
				 else if(key_code[9]|key_code[2])     //下一层为第二层	
					        next_floor=2;
					  else if(key_code[8]||key_code[1])     //下一层为第一层	
			                    next_floor=1;
			               else if(key_code[10])     
			                       next_floor=2;
			                    else if(key_code[12])     
			                             next_floor=3;
			                         else if(key_code[14])     
			                                   next_floor=4;
			                              else   next_floor=5; //下一层为第五层,即不动      				
		}
	}
	else if(flag==2)                                                      //停止了,
	{
		if(floor==1)                                  //在第一层时
		{			                                                        
			if(key_code[9]||key_code[10]||key_code[2])     //下一层为第二层	
					next_floor=2;
		   else if(key_code[11]||key_code[12]||key_code[3])     //下一层为第三层
				    next_floor=3;
				else if(key_code[13]||key_code[14]||key_code[4])     //下一层为第四层
				           next_floor=4;
				    else if(key_code[15]||key_code[5])     //下一层为第五层
				              next_floor=5;
				         else next_floor=1;     //下一层为第一层,即不动						           				              
		}
		if(floor==2)                                        //在第二层时
		{
			if(key_code[8]||key_code[1])     //下一层为第一层	
			      next_floor=1;
		   else if(key_code[11]||key_code[12]||key_code[3])     //下一层为第三层
				      next_floor=3;
				else if(key_code[13]||key_code[14]||key_code[4])     //下一层为第四层
				            next_floor=4;
				    else if(key_code[15]||key_code[5])     //下一层为第五层
				                next_floor=5;
				         else next_floor=2;     //下一层为第二层	,即不动	
		}
		if(floor==3)
		{
			if(key_code[9]||key_code[10]||key_code[2])     //下一层为第二层	
				next_floor=2;
		   else if(key_code[13]||key_code[14]||key_code[4])     //下一层为第四层
				    next_floor=4;
			   else  if(key_code[8]||key_code[1])     //下一层为第一层	
			            next_floor=1;
			         else if(key_code[15]||key_code[5])     //下一层为第五层
				               next_floor=5;
				          else next_floor=3;     //下一层为第三层	,即不动	        	
		}
		if(floor==4)
		{
			 if(key_code[15]||key_code[5])     //下一层为第五层
				  next_floor=5;
			else if(key_code[11]||key_code[12]||key_code[3])     //下一层为第三层
				      next_floor=3;
				 else if(key_code[9]||key_code[10]||key_code[2])     //下一层为第二层	
				          next_floor=2;
				      else  if(key_code[8]||key_code[1])     //下一层为第一层	
			                      next_floor=1;
			               else next_floor=4;    
		}
		if(floor==5)
		{
			if(key_code[13]||key_code[14]||key_code[4])     //下一层为第四层
				    next_floor=4;
		   else if(key_code[11]||key_code[12]||key_code[3])     //下一层为第三层
				      next_floor=3;
				else if(key_code[9]||key_code[10]||key_code[2])     //下一层为第二层	
				          next_floor=2;
				    else  if(key_code[8]||key_code[1])     //下一层为第一层	
			                   next_floor=1;
			             else next_floor=5;             
		}	         	
	}
	*P_Watchdog_Clear=0x0001;
}

⌨️ 快捷键说明

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