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

📄 mainback.c

📁 此程序用于恒温箱控制
💻 C
📖 第 1 页 / 共 3 页
字号:
		///ES=0;RI=0;TI=1;///mod,03-8-22
		printf("AT+CMGD=1\r\n");    //删除no.1
		Clear_rcv_buff();
		delay(1);ES=1;
		//delay(2000);
		t50ms=0;t1s1=0;
		//Clear_rcv_buff();///add,12-13
		message_bit=0;///add,03-8-22来短信标志
 		return;
	}
	 if((rcv_buff[i+3]=='*')&&(rcv_buff[i+4]=='*')&&(rcv_buff[i+5]=='*'))
	  {
	  temp=	data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
	   write_24c64(type_adr,temp);//选择设备类型
	  
	   Clear_rcv_buff();	
	  data_bit=0;
	  ES=1;
	   return;
	   
	 }
	 if((rcv_buff[i+3]=='#')&&(rcv_buff[i+4]=='#')&&(rcv_buff[i+5]=='#'))
	  {
	  temp=	data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
	   write_24c64(net_adr,temp); //选择网络01为C网 00为G网
	    Clear_rcv_buff();	
	  data_bit=0;
	  ES=1;
	   return;
	 }
	  if((rcv_buff[i+3]=='8')&&(rcv_buff[i+4]=='8')&&(rcv_buff[i+5]=='8'))
	  {
	  temp=	data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
	  device_use_bit=(bit)temp;
	   write_24c64(device_use_adr,temp);  //选择设备是否已经使用0X00未使用
	    Clear_rcv_buff();	
	  data_bit=0;
	  ES=1;
	   return;
	 }
	  if((rcv_buff[i+3]=='7')&&(rcv_buff[i+4]=='7')&&(rcv_buff[i+5]=='7'))
	  {
	  temp=	data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
	  write_24c64(upa_max_adr,temp);
	   Clear_rcv_buff();	
	  data_bit=0;
	  ES=1;
	    return;
	     //设置上行最大功率
	 }
	   if((rcv_buff[i+3]=='6')&&(rcv_buff[i+4]=='6')&&(rcv_buff[i+5]=='6'))
	  {
	  temp=	data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
	 write_24c64(dpa_max_adr,temp);
	  Clear_rcv_buff();	
	  data_bit=0;
	  ES=1;
	   return;
	     //设置下行最大功率
	 }
	 if((rcv_buff[i+3]=='5')&&(rcv_buff[i+4]=='5')&&(rcv_buff[i+5]=='5'))
	  {
	  rest_24c64_data();
	   Clear_rcv_buff();	
	  data_bit=0;
	  ES=1;
	  return;
	 }
	   error= 0x00;
	treatment(i+1);
	if(send_bit) 
	{     	 	  	   		 
	 if(error!=0)
	  { 
	    decode_buff[11]= 0x00;
            decode_buff[10]=error;
       	     crc_value=cal_crc(decode_buff, 12);
            decode_buff[12]= (uchar)crc_value;
            crc_value=crc_value>>8;
             decode_buff[12+1]=crc_value;
             data_one_two(decode_buff ,code_buff , 12+2);
             code_buff[24+4]=0;	
               send_data(); 
	  }
	 else send_data();
	 }  
}	 
void  treatment(uchar temp) 
{
    uchar i,temp1,temp3;
     uint crc_value,temp2;
    for(i=0;i<12;i++)
     
    decode_buff[i]=data_two_one(rcv_buff[temp+2*i],rcv_buff[temp+2*i+1]) ;	
  
     if((decode_buff[4]==0x10)&&(decode_buff[10]==0x00))
        {  
          success_bit=1;
            times=3;
          send_bit=0;
            message_bit=0;  
             data_bit=0;
            Clear_rcv_buff();
	     ES=1;
          return;
        }
      else    send_bit=1;
   if(device_use_bit) 
    {   
      if(decode_buff[3]!=read_24c64(type_adr)) 
         {
       	error=0x06 ;
      	  return;
       	}
       
     if((decode_buff[5]!=read_24c64(device_adr))||(decode_buff[6]!=read_24c64(device_adr+1))||
      (decode_buff[7]!=read_24c64(device_adr+2))||(decode_buff[8]!=read_24c64(device_adr+3)))
      {
      	error=0x02 ;
      	  return;
       }
     if(decode_buff[9]!=read_24c64(device_adr+4))
       {
       	error=0x03 ;
      	  return;
      	}
      	
      	temp1=decode_buff[11];// command length
      	for(i=12;i<temp1+2+12;i++)
      	 
      	 decode_buff[i]=data_two_one(rcv_buff[temp+2*i],rcv_buff[temp+2*i+1]); 	
      	 
       crc_value=cal_crc(decode_buff,temp1+12);
       temp2=decode_buff[temp1+1+12];
       temp2=temp2<<8;
       temp2=temp2+decode_buff[temp1+12];
       if(crc_value!=temp2)
       {
       	error=0x05;
       	return;
        }
        if(decode_buff[10]!=0x00)
        {
       	error=0xA0;
       	return;
        }
      }   
      temp1=decode_buff[4];
     if(!device_use_bit ) 
     
       { 
       if(temp1!=0x30)	{error=0x02 ;return;};
        temp3=decode_buff[11];// command length
      	for(i=12;i<temp3+2+12;i++)
      	 
      	 decode_buff[i]=data_two_one(rcv_buff[temp+2*i],rcv_buff[temp+2*i+1]); 	
      	 
       crc_value=cal_crc(decode_buff,temp3+12);
       temp2=decode_buff[temp3+1+12];
       temp2=temp2<<8;
       temp2=temp2+decode_buff[temp3+12];
        if(crc_value!=temp2)
         {
       	error=0x05;
       	return;
        } 
      } 	       	              
      switch(temp1)
       {
          case	0x20:
            {    decode_buff[11]=0x22;
                for(i=0;i<15;i++)
                decode_buff[12+i]=read_24c64(control_hao_adr+i);
                for(i=0;i<15;i++)
                decode_buff[12+15+i]=read_24c64(alarm_hao_adr+i);
                decode_buff[12+30]=read_24c64(com_mode_adr);
                decode_buff[12+31]=alarm_enable1;
                decode_buff[12+32]=alarm_enable2;
                decode_buff[12+33]=alarm_enable3;
                crc_value=cal_crc(decode_buff,34+12);
                decode_buff[12+34]= (uchar)crc_value;
                crc_value=crc_value>>8;
                decode_buff[12+35]=(uchar)crc_value;
                data_one_two(decode_buff ,code_buff , 12+36);
                code_buff[24+72]=0;
               // send_data();
		  break;
	      }    	
         case  0x21:
           {
            decode_buff[11]=0x1D;	
            decode_buff[12]=read_24c64(factory_id_adr);
            decode_buff[12+1]=read_24c64(factory_id_adr+1);
            decode_buff[12+2]=read_24c64(type_adr);
            decode_buff[12+3]=read_24c64(version_adr);
            decode_buff[12+4]=read_24c64(version_adr+1);
            decode_buff[12+5]=~read_24c64(pa_on_adr);
            decode_buff[12+6]=~read_24c64(upa_weaken_adr);
            decode_buff[12+7]=read_24c64(dpa_weaken_adr);
            for(i=0;i<8;i++)
             {
             	decode_buff[12+8+i]=read_24c64(freq_adr+i);
             	//putunchar( read_24c64(freq_adr));//test
              }
            decode_buff[12+16]=upa_pow;
            decode_buff[12+17]=dpa_pow;
            decode_buff[12+18]=read_24c64(upa_max_adr);
            decode_buff[12+19]=read_24c64(dpa_max_adr);
            decode_buff[12+20]= upa_tem;
            decode_buff[12+21]= dpa_tem;
            decode_buff[12+22]= alarm1;
            decode_buff[12+23]= alarm2;
            decode_buff[12+24]= alarm3;
            for(i=0;i<4;i++)
            decode_buff[12+25+i]=read_24c64(alc_adr+i);
            crc_value=cal_crc(decode_buff,29+12);
            decode_buff[12+29]= (uchar)crc_value;
            crc_value=crc_value>>8;
             decode_buff[12+30]=(uchar)crc_value;
             data_one_two(decode_buff ,code_buff , 12+31);
             code_buff[24+62]=0;
             //send_data();
               break;
           }
         case 0x30:
          {
          decode_buff[11]= 0x00;
           
          for(i=0;i<5;i++)
            {
            write_24c64((device_adr+i),decode_buff[12+i]);
           // putunchar(decode_buff[12+i]);//test
            }
            for(i=0;i<5;i++)
            
            decode_buff[5+i]=read_24c64(device_adr+i);
            
              crc_value=cal_crc(decode_buff, 12);
            decode_buff[12]= (uchar)crc_value;
            crc_value=crc_value>>8;
             decode_buff[12+1]=(uchar)crc_value;
             data_one_two(decode_buff ,code_buff , 12+2);
             code_buff[24+4]=0;
             if(!device_use_bit	)
               {
               	write_24c64(device_use_adr,0x01);
               	device_use_bit=1;
                } 
           // send_data();
               break;	
            
         }   
        case 0x31: 
        { 
           decode_buff[11]= 0x00;
            for(i=0;i<15;i++)
             write_24c64((control_hao_adr+i),decode_buff[12+i]);	
             for(i=0;i<15;i++)
             write_24c64((alarm_hao_adr+i),decode_buff[12+15+i]);
             write_24c64(com_mode_adr,decode_buff[12+30]);
               crc_value=cal_crc(decode_buff, 12);
            decode_buff[12]= (uchar)crc_value;
            crc_value=crc_value>>8;
             decode_buff[12+1]=(uchar)crc_value;
             data_one_two(decode_buff ,code_buff , 12+2);
             code_buff[24+4]=0;	
          //   send_data();
               break;		
         } 
      case 0x32:
        {
         decode_buff[11]= 0x00;
            for(i=0;i<3;i++)
          write_24c64((alarm_enable_adr+i),decode_buff[12+i]);                 	
       	  alarm_enable1=decode_buff[12];
       	  alarm_enable2=decode_buff[13];
       	  alarm_enable3=decode_buff[14];
       	  
       	     crc_value=cal_crc(decode_buff, 12);
            decode_buff[12]= (uchar)crc_value;
            crc_value=crc_value>>8;
             decode_buff[12+1]=crc_value;
             data_one_two(decode_buff ,code_buff , 12+2);
             code_buff[24+4]=0;	
              // send_data();
               break;		
        }
      case 0x34:   
       {
       	decode_buff[11]= 0x00;
       	write_24c64(pa_on_adr,~decode_buff[12]);	
       	setting_pa_bit=1;
       	 crc_value=cal_crc(decode_buff, 12);
          decode_buff[12]= (uchar)crc_value;
          crc_value=crc_value>>8;
          decode_buff[12+1]=(uchar)crc_value;
          data_one_two(decode_buff ,code_buff , 12+2);
          code_buff[24+4]=0;	
         // send_data();
               break;		
        }
      case 0x35:
       {
       	decode_buff[11]= 0x00;
       	write_24c64(upa_weaken_adr,~decode_buff[12]);	
       	write_24c64(dpa_weaken_adr,decode_buff[13]);
       	setting_weaken_bit=1;	
       	 crc_value=cal_crc(decode_buff, 12);
          decode_buff[12]= (uchar)crc_value;
          crc_value=crc_value>>8;
          decode_buff[12+1]=(uchar)crc_value;
          data_one_two(decode_buff ,code_buff,12+2);
          code_buff[24+4]=0;	
        //  send_data();
           break;		
        }
       case 0x36:
       {
       	decode_buff[11]= 0x00;
       	for(i=0;i<8;i++)
         {	
         write_24c64(freq_adr+i,decode_buff[12+i]);
           
            }
       	setting_freq_bit=1;	       	 
       	 crc_value=cal_crc(decode_buff, 12);
          decode_buff[12]= (uchar)crc_value;
          crc_value=crc_value>>8;
          decode_buff[12+1]=(uchar)crc_value;
          data_one_two(decode_buff ,code_buff,12+2);
          code_buff[24+4]=0;	
          //send_data();
           break;		
        }
        case 0xD0:
       {
       	decode_buff[11]= 0x00;
       	for(i=0;i<4;i++)
       	write_24c64(alc_adr+i,decode_buff[12+i]);
       	setting_alc_bit=1;	       	 
       	 crc_value=cal_crc(decode_buff, 12);
          decode_buff[12]= (uchar)crc_value;
          crc_value=crc_value>>8;
          decode_buff[12+1]=(uchar)crc_value;
          data_one_two(decode_buff ,code_buff,12+2);
          code_buff[24+4]=0;	
          //send_data();
           break;		
        }   
        default : error=0xA0; break;
     }
              	
 }
 
void send_data()
  {  
        uchar i;
            if(message_bit)
                {
                  printf("AT+CMGS=\"+86");
		  for(i=0;i<11;i++)
	            putunchar(read_24c64(control_hao_adr+i));
		    delay(50);
		    printf("\"\r\n"); 
		    delay(500);
		    putunchar('X');	
		    printf(code_buff);
		     putunchar('X');	
		    delay(500); 
		   printf("\x1A");
		    delay(100);ES=1;///mod,9-30
				 
		delay(2000);
		delay(2000);
		delay(2000);
		t50ms=0;t1s1=0;
		do{delay(100);i=rcv_serch("CMGS:");}while(i>BUFF_LEN1 && t1s1<5);
		    //message_bit=0;
		  //  delay(500);    
		  printf("AT+CMGD=1\r\n");    //删除no.1
	 
	           delay(1);ES=1;
	            delay(2000);
	            t50ms=0;t1s1=0;
	            Clear_rcv_buff();
		   delay(10);
		  message_bit=0;  
		    
		 }
		 else if(data_bit)
		 {  
		   printf("###") ;
		   putunchar('X');	
		   printf(code_buff);		       
		   putunchar('X');
		   data_bit=0;
		  }
		     	
 	         Clear_rcv_buff();
	          ES=1;
  } 
unsigned int cal_crc(unsigned char *ptr, unsigned char len)
  {
  unsigned char i;
  unsigned int crc=0;
  while(len--!=0) 
     {
    for(i=0x80; i!=0; i/=2) 
        {
      if((crc&0x8000)!=0) {crc*=2; crc^=0x1021;}   /* 余式CRC乘以2再求CRC  */
        else crc*=2;
  if((*ptr&i)!=0) crc^=0x1021;                /* 再加上本位的CRC */
         }
    ptr++;
     }
  return(crc);
   }  
//void code_data() 
//{
	
	

uchar data_two_one(uchar Hight,uchar Low) 
{
	if(Hight<0x40){Hight=(Hight-0x30)<<4;}
	else{Hight=(Hight-0x37)<<4;}
	if(Low<0x40){Low=Low-0x30;}
	else{Low=Low-0x37;}
	return((Hight+Low));
} 
void data_one_two(uchar *source_adr ,uchar *destination_adr ,  uchar len) 
{
	uchar Temp,i;
	for(i=0;i<len;i++)
	
		{  
			Temp=*source_adr&0xf0;
			Temp=Temp>>4;
			if(Temp<0x0a)  *destination_adr=Temp+0x30; 
			else *destination_adr=Temp+0x37; 
			destination_adr++;
			Temp=*source_adr&0x0f;
			if(Temp<0x0a)  *destination_adr=Temp+0x30;
			else *destination_adr=Temp+0x37;
			destination_adr++;
			source_adr++;
		}
}
void search_net()
 {
      uchar i;
       // i=printat("AT+CREG?\r\n",",1");
        delay(1000);
	i=printat("AT+CREG?\r\n",",1");
	if(i>BUFF_LEN1)
	{
		 
	     do{
	          WDT=1;	  
		printf("NOSIGNAL");
		ES=1;
		delay(1000);
		 //WDT=1;	
		//delay(500);
		 WDT=1;	 
		 t1s1=0; 
		do{delay(50);i=rcv_serch("X02");}while(i>BUFF_LEN1 && t1s1<2);///mod,03-8-22
	        ES=0;
	        if((rcv_buff[i+3]=='4')&&(rcv_buff[i+4]=='4')&&(rcv_buff[i+5]=='4'))
	       { write_24c64(com_mode_adr,2);   break;}
	        
	  
		} while(1);
	}	
 	
 	
}




 
/*void resetTC35()
 {	
       TC35_IGT=0; 
        delay(200);
	TC35_IGT=1;
	 delay(100);
	 TC35_IGT=0; 
	delay(1000);
	TC35_IGT=1;	
 }*/	
void delay(uint dat)
{
        uchar i;
        while(dat--)
        {
        	WDT=1;
           	for(i=0;i<120;i++)
           	{;}
        }
}
/**************************************************************************
*    函数原型: void delay_70us(void)
*    功    能: 延时70us
**************************************************************************/
/*void delay_70us(void){
	unsigned int idata count;
	for(count=350;count>0;count--);
}*/
void init_CPU()
{
	 
	//MUSIC1=0;MUSIC2=0;
	//SFCF=0x42;
	WDTD=100;
	WDTC=0x0f;
	 
	SCON=0x50;
	TMOD=0x21; // T1:baut,T0:Time 16bit
	TCON=0x50; // TR0,TR1=1
	TH1=0xfd;TL1=0xfd;PCON=0; // Uart Baut=9600
    	TH0=0x4c;TL0=0x00;  // T0=50ms
	//T2CON=0x04; // T2:Time 16bit
	//RCAP2H=0x00;RCAP2L=0x00;
	IE=0x92; //开全局中断,定时器0。串口中断。
	IP=0x10; // UART高
	AUXR=0x00;//内部XRAM,ALE为1/6FOSC,AUXR=0x10外部XRAM
	 
}
void rest_24c64_data(void)
{   
	uchar i;
      write_array(start_control_hao,control_hao_adr,15);///add,03-8-22
      write_array(start_alarm_hao,alarm_hao_adr,15);
      write_24c64(reset_24c64_adr,start_flag[0]);
      write_24c64(device_use_adr,0);
      for(i=0;i<5;i++)
      write_24c64(device_adr,0);   
      write_24c64(type_adr,0); 
      write_24c64(com_mode_adr,2);  
      write_24c64(factory_id_adr,1);  
      write_24c64(factory_id_adr+1,4);  
      write_24c64(version_adr ,1); 
      write_24c64(version_adr+1 ,1); 
      for(i=0;i<3;i++)
      write_24c64(pa_on_adr+i ,0); 
      for(i=0;i<8;i++)
      write_24c64(freq_adr+i ,0xff); 
       write_24c64(upa_max_adr ,0x00); 
       write_24c64(dpa_max_adr ,0x00); 
       for(i=0;i<4;i++)
       write_24c64(alc_adr+i ,0x00); 
       write_24c64(device_use_adr ,0x00); 
        
       for(i=0;i<3;i++)

⌨️ 快捷键说明

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