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

📄 mainback.c

📁 此程序用于恒温箱控制
💻 C
📖 第 1 页 / 共 3 页
字号:
       write_24c64(alarm_enable_adr+i ,0x00); 
       write_24c64( number_adr ,0x00); 
        write_24c64(net_adr ,0x00); 
        // write_24c64(first_bit_adr ,0x01); 
       
       
  }     
         
void write_array(uchar array0[], uint write_adr,uchar n)///add,03-8-22
{
	uchar i;
	for(i=0;i<n;i++)
	 write_24c64(write_adr+i,array0[i]);
}   	 	
void init_TC35()
{
        uchar i, error_cnt;
   	printat("AT+CREG=1\r\n","OK");  
	//printat("AT+CLIP=1\r\n","OK");
	printat("AT\Q0\r\n","OK");
	printat("ATE0\r\n","OK");//test	
	///delay(100);///mod,03-8-22
	 
	do                 //信息中心
	{
		WDT=1;
		Clear_rcv_buff();
		///rcv_point=0;///mod,03-8-22
		///ES=0;RI=0;TI=1;///mod,03-8-22
		printf("AT+CSCA=\"+86");
		for(i=0;i<11;i++)
		putunchar(start_message_hao[i]);
		delay(50);
		printf("\"\r\n");
		delay(1);ES=1;
		delay(100);
		t50ms=0;t1s1=0;
		do{i=rcv_serch("OK");}while(i>BUFF_LEN1 && t1s1<2);
		if(i>BUFF_LEN1) error_cnt++;
       	}while(i>BUFF_LEN1 && error_cnt<2);
         delay(200);
	i=printat("AT+CMGF=1\r\n","OK");
	delay(200);
	printat("AT+CMGD=1\r\n","OK");
	i=printat("AT+CNMI=2,1,0,0,1\r\n","OK");
	 
}
uchar rcv_serch(uchar *serch)
{
	uchar i,j,k,lenth;
	lenth=strlen(serch);
	for(i=0;i<=(BUFF_LEN1+2-lenth);i++)
	{
		k=0;
		for(j=0;j<lenth;j++)
		{
			if(rcv_buff[i+j]==serch[j]) k=k+1;
		}
		if(k==lenth) return i;
	}
	i=BUFF_LEN1+2;
	return i;
}
void Clear_rcv_buff()
{
	uint i;
	for(i=0;i<BUFF_LEN2+2;i++) rcv_buff[i]=0;
		rcv_point=0;///add,03-8-22
}
void putunchar (uchar c)///mod,03-8-22,自定义printf///mod,03-9-9可能更可靠
{
         TI = 0; 
         ES=0;///add,03-8-22,最后一次使用完需ES=1
         SBUF = c;
         while (!TI);
}
void printf(const char *fmt, ...)///add,03-8-22,自定义printf
{
	char type_char;
	va_list args;
	va_start (args, fmt);

///////暂时关闭串口中断并置位TI位////////
	ES=0; RI=0; TI=1;
	while(*fmt)
	{
		if (*fmt != '%' || *++fmt == '%')
		{
			putunchar(*fmt++);
			continue;
		}
			
		type_char = *fmt++;
		if(type_char == 'c')
		{
			putunchar(va_arg (args, char));
		}
	}
	va_end (args);
////恢复串口中断/////
//	while (!TI);
	///delay(1);///mod,03-8-22
	///ES=1;///mod,03-8-22连用时,外部控制更保险
}
uchar printat(uchar *COMMAND,uchar *RESULT)
{
	uchar i,j;
	j=0;
	do
	{       WDT=1;
		Clear_rcv_buff();
		///rcv_point=0;///mod,03-8-22
		///ES=0;RI=0;TI=1;///mod,03-8-22,自定义printf
		printf(COMMAND);
		delay(1);ES=1;///mod,03-8-22,自定义printf
		delay(100);///mod,03-8-22
		t50ms=0;t1s1=0;
		do{ WDT=1;i=rcv_serch(RESULT);}while(i>BUFF_LEN1 && t1s1<5);///mod,11-1,2d
		if(i>BUFF_LEN1) {j++;}///mod,11-1,2d,start_TC35(),mod,03-8-22
	}while(i>BUFF_LEN1 && j<5);
	delay(100);///add,03-8-22
	return i;
}
void T0_int() interrupt 1 using 2
{	TR0=0;
	TH0=TH0+0x4c;//TL0=0xe0; // T0=5ms
	t50ms++;
	t50ms1++; 
	if(t50ms>=20)
	{
		t50ms=0;
		t1s1++;
		t1s2++;
		t1s3++; 
		t1s4++;
		 
	}
	if(t1s2>=50)
	{
	 t1m1++;
	 t1m2++;
	 t1s2=0;
	} 
	if(t1m2>=60)
	 {
	 t1m2=0;
	 t1h1++;
	 }	
	
	TR0=1;
}
void UART() interrupt 4 using 1
{
	uint data i;
	if(TI) TI=0;
	if(RI)
	{
		RI=0;
		if(SBUF>0x09 && SBUF<0x80)
		{
			//AUXR=0;///add,4-4
		  	if(rcv_point < BUFF_LEN2 + 2)
		  	{
		  		rcv_buff[rcv_point]=SBUF;
		  		rcv_point++;		     	
		   	}
		  	else
			{
				for(i=0;i<(BUFF_LEN2+1);i++) rcv_buff[i]=rcv_buff[i+1];
					rcv_buff[BUFF_LEN2+1]=SBUF;		
			}
			    			
			 if(rcv_buff[rcv_point-1]=='I'&&rcv_point>3)
			{
				if(rcv_buff[rcv_point-2]=='T'&& rcv_buff[rcv_point-3]=='M' && rcv_buff[rcv_point-4]=='C')
					message_bit =1;///add,03-8-22来短信标志
			} 
			 if(rcv_buff[rcv_point-1]=='#'&&rcv_point>2) 
			 {
			  if(rcv_buff[rcv_point-2]=='#'&& rcv_buff[rcv_point-3]=='#')
			         data_bit=1;	
			 } 
		}
		//if(AUXR_flag)AUXR=0x02;///add,4-4;
	}
}
uchar  read_port(uchar adr)
 {
   uchar temp;
   P2=0xf8|adr;
   _nop_();
   _nop_();
   temp=P0;
   return temp;	
 	
  }
void write_port(uchar adr,uchar dat )
  {
     P2=0xf8|adr;
      _nop_();
      P0=dat;
      WR=0;
      _nop_();
      _nop_();
      WR=1;
      _nop_();
      _nop_();
   }   
void  write_mb1(uint dat)
   { 
   	uchar i;
   	uint temp;
   	LE=0;
   	for(i=0;i<16;i++)
   	 { 
   	 temp=0x8000&dat;  	
   	 CK=0;
   	 delay(2);	
	 if(temp==0)
   	   DA=0;
   	 else   DA=1;
   	   delay(2);
   	 CK=1;
   	 
   	   dat=dat<<1;  
   	 
   	}
   	 CK=0;
   	 delay(2);
   	  LE=1;
   	  delay(4);
   	  LE=0;
   	 
   }	   
 void  write_mb2(uint dat,uchar dat2)
   {
   	uchar i,temp1;
   	uint temp;
   	LE=0;
   	for(i=0;i<3;i++)
   	 {
   	  
   	 temp1=0x04&dat2;
   	   CK=0;
   	    delay(2);	
   	 if(temp1==0)
   	    DA=0;
   	  else DA=1;
   	   delay(2);
   	   CK=1;
   	   
   	   dat2=dat2<<1; 
   	   }  
   	  
      for(i=0;i<16;i++)
   	 { 
   	 temp=0x8000&dat;  	
   	 CK=0;
   	 delay(2);	
	 if(temp==0)
   	   DA=0;
   	 else   DA=1;
   	   delay(2);
   	 CK=1;
   	   
   	   dat=dat<<1;  
   
   	 
   	}
   	 CK=0;
   	 delay(2);
   	  LE=1;
   	  delay(4);
   	  LE=0;
   	  	   
  } 
  //test
 /*void  write_mb3(uint dat)
   { 
   	uchar i;
   	uint temp;
   	LE2=0;
   	for(i=0;i<16;i++)
   	 { 
   	 temp=0x8000&dat;  	
   	 CK=0;
   	 delay(2);	
	 if(temp==0)
   	   DA=0;
   	 else   DA=1;
   	   delay(2);
   	 CK=1;
   	   dat=dat<<1;  
   	 
   	}
   	 CK=0;
   	 delay(2);
   	  LE2=1;
   	  delay(2);
   	  LE2=0;
   	 
   }	   
 void  write_mb4(uint dat,uchar dat2)
   {
   	uchar i,temp1;
   	uint temp;
   	LE2=0;
   	for(i=0;i<3;i++)
   	 {
   	  
   	 temp1=0x04&dat2;
   	   CK=0;
   	    delay(2);	
   	 if(temp1==0)
   	    DA=0;
   	  else DA=1;
   	   delay(2);
   	   CK=1;
   	   dat2=dat2<<1; 
   	   }  
   	  
      for(i=0;i<16;i++)
   	 { 
   	 temp=0x8000&dat;  	
   	 CK=0;
   	 delay(2);	
	 if(temp==0)
   	   DA=0;
   	 else   DA=1;
   	   delay(2);
   	 CK=1;
   	   dat=dat<<1;  
   
   	 
   	}
   	 CK=0;
   	 delay(2);
   	  LE2=1;
   	  delay(2);
   	  LE2=0;
   	  	   
  } 
  //test */
  
 uchar tlc540(uchar adr)
   {
    uchar temp,temp1,i;    	
    CS=0;
    CLK=0;
    DAT=1;
    delay50us();
    for(i=0;i<4;i++)
     {
      temp1=temp1<<1;	
     temp=0x08&adr;
     if(temp==0)
      ADR=0;
      else ADR=1;
      adr=adr<<1; 
     delay50us();
      CLK=1;
     delay50us();
       CLK=0;
      delay50us(); 
      if(DAT==1)
       temp1++;
      }
    for(i=0;i<4;i++)
       {
       	temp1=temp1<<1;
       	 CLK=1;
         delay50us();
         CLK=0;
          delay50us();
      	 if(DAT==1)
         temp1++;
        }
        CS=1;
        return temp1;	
    }
    
   	
 void  delay50us()
  {
    uchar i=50;
    while(i--)
    {};
  }	     
void send_alarm() 
{
    uchar i,temp;
    uint crc_value;
    alarm_back1=alarm1;
    alarm_back2=alarm2;
    alarm_back3=alarm3;
   decode_buff[0]=0x02;
   decode_buff[1]=0x01;	
   decode_buff[2]=0x01;	
   decode_buff[3]=read_24c64(type_adr);
   decode_buff[4]=0x10;	
   for(i=0;i<5;i++)
   decode_buff[5+i]=read_24c64(device_adr+i);
   decode_buff[10]=0x00;
   decode_buff[11]=0x03;
   decode_buff[12]=alarm1;
   decode_buff[13]=alarm2;
   decode_buff[14]=alarm3;			
    crc_value=cal_crc(decode_buff, 15);
    decode_buff[15]= (uchar)crc_value;
    crc_value=crc_value>>8;
    decode_buff[16]=crc_value;
    data_one_two(decode_buff ,code_buff , 12+5);
    code_buff[24+10]=0;	
    temp=read_24c64(com_mode_adr);
         if(temp==0x01)
                {
                  printf("AT+CMGS=\"+86");
		  for(i=0;i<11;i++)
	            putunchar(read_24c64(alarm_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);///add,12-20上传余额
		t50ms=0;t1s1=0;
		do{delay(100);i=rcv_serch("CMGS:");}while(i>BUFF_LEN1 && t1s1<5);		 
		  // ES=1;
		   rcv_point=0;
		  
		    
		 }
	if(temp==0x02)
		 {  
		   printf("###") ;
		   putunchar('X');	
		   printf(code_buff);		       
		   putunchar('X');
		   ES=1;
		   rcv_point=0;
		   }  
	 success_bit=0;	  
	 t1m1=0;  
 } 		  	     
void start_init() 
  {
     uchar i,temp,temp1,temp3,temp4;
       temp3=read_24c64(number_adr);
      temp3++;
       write_24c64(number_adr,temp3);
         temp=read_24c64(pa_on_adr);
        temp=temp&0xe0;	
        temp1=read_24c64(upa_weaken_adr);
          temp1=temp1&0x1F;
       
        write_port(0,temp|temp1); 
          
         temp=read_24c64(dpa_weaken_adr);
         temp=~temp;
          write_port(1,temp&0x1F ); 
         //if(temp3>125)
       // {write_24c64(device_adr,0xee);
       // write_24c64(alarm_hao_adr,0x32);}//test
          for(i=0;i<4;i++)
         {
           temp=read_24c64(alc_adr+i);
            X9241(temp,i);
           }
        temp=read_24c64(device_use_adr);
        if(temp==1)
        device_use_bit=1;
       else device_use_bit=0;
       alarm_enable1=read_24c64(alarm_enable_adr);
       alarm_enable2=read_24c64(alarm_enable_adr+1);
       alarm_enable3=read_24c64(alarm_enable_adr+2);  
               	      	               
      temp4=read_24c64(net_adr);
     // if(temp==1) cnet_bit=1;
      //if(temp==0) cnet_bit=0;
      
       if(temp4==1)
       {	
         	 	for(i=0;i<4;i++)
         	      	{
         	      	WDT=1;	
         	      	temp=read_24c64(freq_adr+i);
         	      	 if(temp==0xff) continue;
         	      	 P1=i ;
         	      	 delay(100);
         	      	 write_mb1(CR);        	      	 
         	         write_mb2(CUmb1502[temp-1],CUHEAD);
         	         delay(100);
         	        
         	      	 } 
         	      	 for(i=4;i<8;i++)
         	      	{
         	        	WDT=1;	
         	      	temp=read_24c64(freq_adr+i);
         	      	 if(temp==0xff) continue;
         	      	 P1=i ;
         	      	  delay(100);
         	      	 write_mb1(CR);        	      	 
         	         write_mb2(CDmb1502[temp-1],CDHEAD); 
         	          delay(100);
         	      	 }
         	          
        } 
       else  if(temp4==0)
         {	   
         	 for(i=0;i<8;i++)
         	      	{
         	        WDT=1;	
         	      	temp=read_24c64(freq_adr+i);
         	      	 if(temp==0xff) continue;
         	      	 P1=i ;
         	      	 write_mb1(GR);        	      	 
         	         write_mb2(Gmb1502[temp],GHEAD); 
         	          delay(300);
         	      	 } 
         	      	 	
         }
         else if(temp4==2)
              {         for(i=0;i<4;i++)
         	      	{
         	      	WDT=1;	
         	      	temp=read_24c64(freq_adr+i);
         	      	 if(temp==0xff) continue;
         	      	 P1=i ;
         	      	 delay(100);
         	      	 write_mb1(YR);        	      	 
         	         write_mb2(YUmb1502[temp-1],YHEAD);
         	         delay(100);
         	        
         	      	 } 
         	      	 for(i=4;i<8;i++)
         	      	{
         	        	WDT=1;	
         	      	temp=read_24c64(freq_adr+i);
         	      	 if(temp==0xff) continue;
         	      	 P1=i ;
         	      	  delay(100);
         	      	 write_mb1(YR);        	      	 
         	         write_mb2(YDmb1502[temp-1],YHEAD); 
         	          delay(100);
         	      	 }
         	}      	 
         P14=1; 	         
  } 

⌨️ 快捷键说明

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