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

📄 stepmotor.c

📁 全国机器人机械创新大赛的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	
			direct_B=0;//后脚前移,电机反转
			start_B();
			while(sw2==1);
			stop_B();
			Delays(20);
			direct_B=1;
			//启动结束     
/*
			flag_over=1;
	
			while(flag_over)
			{
				direct_A=1;//正转主轴上升
				power_A=1;
				while(sw6==1);
				power_A=0;
	
				direct_B=1;//前脚前移,电机正转
				start_B();
				while((sw1==1)&&(sw4==1));
				if(sw4==0)
					flag_over=0;
				direct_B=0;
				Delays(15);
				stop_B();
				if(flag_over==0)
					break;	
	
				direct_A=0;//反转下降
				power_A=1;
				while(sw7==1);
				power_A=0;
	
				direct_B=0;//后脚前移,电机反转
				start_B();
				while(sw2==1);
				direct_B=1;
				Delays(15);
				stop_B();
			}
*/
			flag_over=CS[0]-1;                                     
	
			while(flag_over)
			{
				direct_A=1;//正转主轴上升
				power_A=1;
				while(sw6==1);
				power_A=0;
	
				direct_B=1;//前脚前移,电机正转
				start_B();
				while(sw1==1);
				stop_B();
				Delays(20);
				direct_B=0;

				direct_A=0;//反转下降
				power_A=1;
				while(sw7==1);
				power_A=0;
	
				direct_B=0;//后脚前移,电机反转
				start_B();
				while(sw2==1);
				stop_B();
				Delays(20);
				direct_B=1;
				
				flag_over--;
				row++;
			}    
			direct_A=1;//正转主轴上升
			power_A=1;
			while(sw5==1);
			power_A=0;
	
			while(wait==1);//等待按键
			
			direct_B=1;//前脚前移,电机正转
			start_B();
			while(sw4==1);
			stop_B();
			Delays(20);
			direct_B=0;

			direct_A=0;//反转下降
			power_A=1;
			while(sw7==1);
			power_A=0;

			direct_B=0;//后脚前移,电机反转
			start_B();
			while(sw3==1);
			stop_B();
			Delays(20);
			direct_B=1;
		}
		else if(wait_down==0)
		{
			direct_B=1;//前脚前移,电机正转
			start_B();	
			while(sw4==1);
			stop_B();
			Delays(20);
			direct_B=0;
			
			direct_A=1;//正转主轴上升
			power_A=1;
			while(sw5==1);
			power_A=0;

//			while(wait_down==1);//等待按键
/*			
			direct_A=0;//反转下降
			power_A=1;
			while(sw6==0);
			power_A=0;
*/
			direct_B=0;//后脚前移,电机反转
			start_B();
			while(sw3==1);
			stop_B();
			Delays(20);
			direct_B=1;

			while(wait_down==1);//等待按键

			direct_A=0;//反转下降
			power_A=1;
			while(sw6==1);                  //原文件中是sw6==0
			power_A=0;

			flag_over=CS[1]-1;     //循环次数
			row=CS[1];
			
			while(flag_over)
			{
				direct_A=0;//反转下降
				power_A=1;
				Delays(6000);                          //原文件中是4200
				power_A=0;

				direct_B=1;//前脚前移,电机正转
				start_B();	
				while(sw1==1);
				stop_B();
				Delays(20);
				direct_B=0;

				direct_A=0;//反转下降
				power_A=1;
				while(sw7==1);
				power_A=0;

				direct_B=1;//前脚前移,电机正转
				start_B();
//				if(flag_over==1)
//				{
//					Delays(150);                      //原程序中是while(150)
//				}
//				else
//				{
					while(sw4==1);
//				}
				stop_B();
				Delays(20);
				direct_B=0;				

				direct_A=1;//正转主轴上升
				power_A=1;
				while(sw6==1);
				power_A=0;

				direct_B=0;//后脚前移,电机反转
				start_B();
				while(sw3==1);
				stop_B();
				Delays(20);
				direct_B=1;
                 row--;
				flag_over--;
				
			}

			direct_A=0;//反转下降                 最后一次循环开始                                                  
			power_A=1;
			Delays(6000);                          //原文件中是4200
			power_A=0;

			direct_B=1;//前脚前移,电机正转
			start_B();	
			while(sw1==1);
			stop_B();
			Delays(20);
			direct_B=0;

			direct_A=0;//反转下降
			power_A=1;
			while(sw7==1);
			power_A=0;

			direct_B=1;//前脚前移,电机正转
			start_B();
			Delays(600);                      //原程序中是while(150)
			stop_B();
			Delays(20);
			direct_B=0;				

			direct_A=1;//正转主轴上升
			power_A=1;
			while(sw6==1);
			power_A=0;

			direct_B=0;//后脚前移,电机反转
			start_B();
			while(sw3==1);
			stop_B();
			Delays(20);
			direct_B=1;                       //最后一次循环结束


			while(wait_down==1);//等待按键

			direct_A=0;//反转下降
			power_A=1;
			while(sw7==1);
			power_A=0;
		}
		else;	
	}
}
 /*********************************************************
	定时器0中服程序
	用于键盘参数设计与数码显示
	如果有键按下,先记下来,下次扫描才执行
  **********************************************************/	

	void timer0_int(void)  interrupt 1
	 {
		TR0=0;
  	    TH0=TH0_DATA;			// 0xd4cc<-->2mS (0xa999<-->4mS)
		TL0=TL0_DATA;
		while(w==80)     //中断80次刷新显示一次
  	     {
	       if(M==0)
	        {
			    CONVBIT0(floor,0);//floor显示到了第几层
			    CONVBIT0(row,4);  //row显示上了多少格
			    CONVBIT1(0,0);
			    CONVBIT1(0,4);
	         }
	       else
			 {};
		 w=0;
		 SF=~SF;
	      };	   // end while(w==80)

	  // 是否进入修改状态
 	    if(M==0)
	      {
			 x=DATA0[k];
			 y=DATA1[k];
	       }
	    else
	      {
			 y=10;	  //y=10对应的段码是黑码
			 if(k==R)
	            {
	              if(SF==0)
	                 {
					   x=10;
					  }
	              else
				    {
				     x=DATA0[k];
				    }
	             }
	         else
	           x=DATA0[k];
	       }
	     w++;

 	     SEND();

		 //键盘扫描
		 if(KEY==1)
		   {
		     if(k==TK)
		       {
		          switch(TK)
		            {
		               case 7:
		                 {
					       if(M==CSM)
					        {
					         M=1;
					        }
					       else
					       M++;
					       CONVBIT0(M,0);
					       CONVBIT0(CS[M-1],4);       
					      }
		                break;	
		                case 1:
					      {
					       if(R==7)
					       R=4;
					       else
					       R++;
					      }
					     break;
		                 case 2:
					      {
					       if(DATA0[R]==9)
					       DATA0[R]=0;
					       else
					       DATA0[R]++;
					      }
					     break;
		                 case 3:
					      {
					       if(DATA0[R]==0)
					       DATA0[R]=9;
					       else
					       DATA0[R]--;
					      }
					     break;
		                 case 4:
					      {
					       while(!M==0)
					        {
							  CS[M-1]=(DATA0[4]*1000+DATA0[5]*100+DATA0[6]*10+DATA0[7]);
							  j=(2*M-2);          		   
							  EDATA[j]=(CS[M-1]/0x100); 
							  EDATA[j+1]=(CS[M-1]%0x100);
							  EA=0;						   //写EEPROM,关中断
							  DEECON=0x00; 
					          DEEDAT=EDATA[j]; 
							  DEEADR=j; 
					          while((DEECON&0x80)==0); 
					          DEECON=DEECON&0x7F;
							  DEEDAT=EDATA[j+1];
							  DEEADR=(j+1);
							  while((DEECON&0x80)==0); 
							  EA=1;						   //完成写操作,开中断
					          R=4;
					          M=0;
					        };
					      }
					     break;
		             };	        //end  switch(TK)
		            TK=0x09;
		          }
		        else
		          {};  //end if(k==TK)
		      }
		  else
			{
			TK=k;
			};      //end 	if(KEY==1)

		  if(k==7)
		  k=0;
		  else
		  k++;
		  TR0=1;
		}
	
	
	

⌨️ 快捷键说明

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