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

📄 mmm.c

📁 矿工定位系统单端
💻 C
📖 第 1 页 / 共 3 页
字号:
   unsigned int idata x;
 
  switch(ch4state)
  {
    case 0:
	    CH4POW=1;
        for(i=0;i<3;i++) //求平均值
        { x=x+read1543(8);
         }
          x=x/3;
        if(x>=Z_PORT)
          {  x=x-Z_PORT;
            
		    sprintf(ms," %03d",x);
            SendStr_MAX7219(ms);
            if(x>=MID_LIMT) ch4state=1;
	      }  //is +
        else
          {  x=Z_PORT-x;
		     sprintf(ms,"-%03d",x);
             SendStr_MAX7219(ms);
	      }//-
	 
    break;
    case 1:
	    CH4POW=1;
	  voice(1);
	   for(i=0;i<3;i++) //求平均值
         { 
		  x=x+read1543(8);
         }
         x=x/3;
	    if(x>=HIGH_LIMT){ch4state=2;CH4POW=0;CH4_DELAY=0;}
		if(x<MID_LIMT)ch4state=0;
		sprintf(ms," %03d",x);
        SendStr_MAX7219(ms);
		 return 1;
    break;
    case 2:
	  CH4POW=0;
	    voice(2);
	if(CH4_DELAY>2) { CH4POW=1;ch4state=1;}
	sprintf(ms,"hhhh");
    SendStr_MAX7219(ms);
  
	 return 1;
    break;
    default :
     ch4state=0;
    break;
 
  }
}
//**************************************************************************
void main(void)
{
     unsigned int  xx=0;

     unsigned char data i=0,j,ttt,uuu;
	 unsigned long idata yyy=0;
   P0=0;
  
   TX_EN=0;
   CH4POW=1;
   rest_delay=0;
   En485 = RECV;
   //Delay100ms(1);
   TX_EN=1;
   init_com();
   InitREG();
   UartInit();
   Test_led=!Test_led;
  Delay100ms(1);
   Comm_Off();
   PWR_UP=1;
   Test_led=!Test_led;
   EA=1;
  //  Ch4_test();
   Init_X25045(0x00);
  /* ByteWrite_Check (22,0X34);
  if( ByteRead_Check (22)==0x34)//测试25045
  {   Test_led=!Test_led;
      Delay100ms(10); 
 	 Test_led=!Test_led;
  }*/

   if((ByteRead_Check(20)==0x00)||(ByteRead_Check(20)==0xff))ADDR=0XD2;
  else
   ADDR=ByteRead_Check(20);
  // ADDR=0xd2;
  if(ADDR%2)
   {
    CS=0;
   }
  else
   {
     CS=1;
    }
  for(i=0;i<4;i++)//clear
   {
     for(j=0;j<16;j++)
        RemainRec[i][j]=0;
   }
   Watch_dog();
   for(i=0;i<8;i++)Call_id[i]=0;
  Ch4_test();

  while(1)
   {
   
     TX_EN=1;
	 Watch_dog();
  if(rest_delay>750)while(1);
 
   if (Cmdok)		  //通讯
	{ rest_delay=0;
	    Watch_dog();
      	Cmdok = FALSE;
		Waring=0;                    //报警清掉
	  	RecvReady = FALSE;
	  	SendReady = FALSE;
	  	cmd_execution();
	  	SendReady = TRUE ;   //发起始字
	  	TI = 1;
     
    }
   CH4_DELAY++;
   for(i=1;i<201;i++)
   { 
     if(i%10==0){Check_call();Ch4_test();}
     if(rest_delay>750)while(1);
     Watch_dog(); 
    if (Cmdok)		  //通讯
	 {rest_delay=0;
      	Cmdok = FALSE;
	  	RecvReady = FALSE;
	  	SendReady = FALSE;
	  	cmd_execution();
	  	SendReady = TRUE ;   //发起始字
	  	TI = 1;
       Test_led=!Test_led;
     }
	  Watch_dog(); 
	 //ttt=Find(i);
	 ttt=0;
      if(ttt==0)
	  { 
      
	   
	    ttt=Find(i,0);
	  
       if(ttt)
	    {
		  Card_id[i]=4;//循环监测的次数
		 if((i%4)==0)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x01;
			   uuu=uuu&0xfd;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x02;
			   uuu=uuu&0xfe;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
		 if((i%4)==1)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x04;
			   uuu=uuu&0xf7;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x08;
			   uuu=uuu&0xfb;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
		 if((i%4)==2)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x10;
			   uuu=uuu&0xdf;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x20;
			   uuu=uuu&0xef;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
		 if((i%4)==3)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x40;
			   uuu=uuu&0x7f;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x80;
			   uuu=uuu&0xbf;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
	     Test_led=!Test_led;//在区域
	    }
		else                                //不再区域
		{
           if((i%4)==0)
          {
		       uuu=RemainRec[i/64][(i%64)/4];
               if(uuu&0x03)             //如果原来就存在
                {  
                   ttt=Find(i,0);     //再次查找
                    if(ttt==0)
	                {
				       Card_id[i]--;
					   if( Card_id[i]==0)
					   {
                        uuu=uuu&0xfc;                 
                        RemainRec[i/64][(i%64)/4]=uuu;
					   }
                    }
                }
               else        //原来就不在
                { 
				  if(!Waring)              //没有报警信息
				  {
			       uuu=uuu&0xfc;                     //清零
                   RemainRec[i/64][(i%64)/4]=uuu;
				  }
                }
				  
		  }
		 if((i%4)==1)
          {
		  
			   uuu=RemainRec[i/64][(i%64)/4];
               if(uuu&0x0c) 
                {
                   ttt=Find(i,0);     //再次查找
                    if(ttt==0)
	                {  Card_id[i]--;
					   if( Card_id[i]==0)
					   {
                        uuu=uuu&0xf3;                 
                        RemainRec[i/64][(i%64)/4]=uuu;
                      }
                    }
                 }
               else
               {
			     if(!Waring)              //没有报警信息
				  {
			      uuu=uuu&0xf3;
                  RemainRec[i/64][(i%64)/4]=uuu;
				  }
               }
			 
		  }
		 if((i%4)==2)
          {
		  
			   uuu=RemainRec[i/64][(i%64)/4];
			  if(uuu&0x30) 
                {
                   ttt=Find(i,0);     //再次查找
                    if(ttt==0)
	                {  Card_id[i]--;
					   if( Card_id[i]==0)
					   {
                       uuu=uuu&0xcf;                 
                       RemainRec[i/64][(i%64)/4]=uuu;
                       }
                    }
                 }
			  else
			  {
			     if(!Waring)              //没有报警信息
				  {
			       uuu=uuu&0xcf;
                   RemainRec[i/64][(i%64)/4]=uuu;
			      }
			  }
		  }
		 if((i%4)==3)
          {
		  
			   uuu=RemainRec[i/64][(i%64)/4];
			   if(uuu&0xc0) 
                {
                   ttt=Find(i,0);     //再次查找
                    if(ttt==0)
	                {  Card_id[i]--;
					   if( Card_id[i]==0)
					   {
                        uuu=uuu&0x3f;                 
                        RemainRec[i/64][(i%64)/4]=uuu;
                       }
                    }
                 }
			  else
			  {
			     if(!Waring)              //没有报警信息
				  {
			       uuu=uuu&0x3f;
                   RemainRec[i/64][(i%64)/4]=uuu;
				  }
			  }
		  }
		}
	  }
	  else
       { 
	      Card_id[i]=4;//循环监测的次数
	    if((i%4)==0)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x01;
			   uuu=uuu&0xfd;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x02;
			   uuu=uuu&0xfe;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
		  if((i%4)==1)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x04;
			   uuu=uuu&0xf7;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x08;
			   uuu=uuu&0xfb;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
		   if((i%4)==2)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x10;
			   uuu=uuu&0xdf;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x20;
			   uuu=uuu&0xef;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
		   if((i%4)==3)
          {
		   if(ttt==0x01)
	          {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x40;
			   uuu=uuu&0x7f;
               RemainRec[i/64][(i%64)/4]=uuu;
			  }
		   if(ttt==0x02)
		     {
			   uuu=RemainRec[i/64][(i%64)/4];
			   uuu=uuu|0x80;
			   uuu=uuu&0xbf;
               RemainRec[i/64][(i%64)/4]=uuu;
			 }
		  }
	   Test_led=!Test_led;
       }
  }
}
}

⌨️ 快捷键说明

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