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

📄 mainback.c

📁 此程序用于恒温箱控制
💻 C
📖 第 1 页 / 共 3 页
字号:
 
#include <stdarg.h>///add,03-8-22,自定义printf
#include <string.h>
#include<intrins.h>
#include "main.h"
 
 
 

                       
	  
unsigned char xdata      rcv_buff[360]; 
#define      TC35_IGT   P17
#define                 BUFF_LEN1 98
#define                 BUFF_LEN2 358
unsigned char idata  decode_buff[60]; 
unsigned char xdata  code_buff[100]; 
uchar     t50ms,t50ms1, t1s1,t1s2,t1m1,t1m2,t1h1,t1s3,t1s4,times;
uchar    rcv_point;
bit  success_bit,message_bit,data_bit,device_use_bit,cnet_bit;
bit setting_pa_bit=0,setting_weaken_bit=0,setting_freq_bit=0,setting_alc_bit=0;	
bit first_bit,send_bit;	 
uchar error,alarm_enable1,alarm_enable2,alarm_enable3;
uchar upa_pow,dpa_pow,upa_tem,dpa_tem,alarm1,alarm2,alarm3 ;
//uchar  bdata  alarm3,alarm_enable3;
//sbit  alarm3_6=alarm3^6;
//sbit  alarm3_7=alarm3^7;
//sbit  alarm_enable3_6=alarm_enable3^6;
//sbit  alarm_enable3_7=alarm_enable3^7;
uchar  alarm_back1,alarm_back2,alarm_back3;
void            	UART();
void            	T0_int();
void                    resetTC35();
void            	init_CPU(); 
//void            	start_TC35();
void            	init_TC35(); 
//void                    delay(uint dat);
 
void            	Clear_rcv_buff();
uchar   		rcv_serch(uchar *serch); 
uchar   	printat(uchar *COMMAND,uchar *RESULT);
void                   rest_24c64_data(void);
void                   receive_message();
//void                  delay_70us(void);
void                  putunchar (char c);
void                 printf(const char *fmt, ...);
void                write_array(uchar array0[], uint write_adr,uchar n);
void                 search_net ();
void                 treatment(uchar temp); 
uint                   cal_crc(uchar *ptr, uchar len);
void                 data_one_two(uchar *source_adr ,uchar *destination_adr, uchar Len);
uchar                 data_two_one(uchar Hight,uchar Low); 
void                  send_data();
uchar                 read_port(uchar adr);
void                  write_port(uchar adr,uchar dat );	
void                  write_mb1(uint dat);
void                  write_mb2(uint dat, uchar dat2);
void                  write_mb3(uint dat);
void                  write_mb4(uint dat, uchar dat2);
void                   receive_data();
void                  delay50us();
uchar                  tlc540(uchar adr);
void                   send_alarm();
void                    start_init();
uchar  temp1;
void main()
 {
 	uchar i , temp, temp3;
 	unsigned  long   temp2;
 	//unsigned char code   *pr;
// start:  resetTC35();
    //   resetTC35();
      // pr=(char   *) 0x14;
     //  *pr=3;
        init_CPU();
        WDT=1;
        i=read_24c64(reset_24c64_adr);
        if(i!=start_flag[0])  rest_24c64_data(); 
        temp3=read_24c64(com_mode_adr);
         if(temp3==1)  search_net();
           temp3=read_24c64(com_mode_adr);
        if(temp3==1)   init_TC35();
         start_init() ;
       
        ES=1;
        message_bit=0;
        data_bit=0;
        setting_pa_bit=0;
        setting_weaken_bit=0;
        setting_alc_bit=0;
        setting_alc_bit=0;
        setting_freq_bit=0;
        success_bit=1;
         times=3;
         first_bit=1; 
         alarm_back1=0;
        alarm_back2=0;	
        alarm_back3=0;
        Clear_rcv_buff();
         while(1)
         {
         	
         	
         	/*while(1)//test
         	{
         	delay(100);
         	//t1s1=0;
         	
         	WDT=1;		
         	delay(200);	
         	P14=0; 
         	P12=1; 
         	P11=0; 
         	P10=0; 
         	//P1=4;
         	//LE=0;	
         	//while(t1s1<5){WDT=1;};
         	//WDT=1;		
         	//delay(200);
         	//WDT=1;		
         	//delay(200);	
         	//WDT=1;	
         	//delay(100);
         	//WDT=1;		
         	//delay(200);
         	//delay(100);
         	//WDT=1;		
         	//delay(200);
         	//temp=read_24c64(freq_adr+4);
         	       
         	 //write_mb1(0x8401);        	      	 
         	//write_mb2(0xea14,0x01); 
         	//write_mb1(0x8081); g
         	//write_mb2(0x5046,0x5); g
         	//while(t1s1<=2){}
         	//write_mb1(0x8a01);// cd
         	//write_mb2(0xc034,0x5); //cd
         	write_mb1(0x8401);// yd
         	write_mb2(0xea66,0x1); //yd
         	putunchar(0x31);
         	
         	//P1=5;
         	WDT=1;		
         	delay(100);
         	delay(100);
         	// P12=1; 
         	//P11=0; 
               // P10=1; 
         	//temp=read_24c64(freq_adr+5);
         	//  if(temp==0xff) continue;
         	      	// P1=i ;
         	//write_mb1(0x8401);        	      	 
         	//write_mb2(0xea66,1); 
         	//write_mb1(0x8a01); //cd
         	//write_mb2(0xbe3e,0x5); //cd
         	//write_mb3(0x8401); //yd
         	//write_mb4(0xea14,0x1); //yd
                //P14=1; 
         	while(1){
         		WDT=1;	
         		};
         	//t1s1=0;	
         	}      //test*/
              /* while(1)//test
         	{
         	WDT=1;	
         	putunchar(0x31);	
         	delay(100);
         	delay(100);	
         	WDT=1;	
         	P10=0; 
         	P11=0; 
         	P12=4; 
         	P14=0; 
         	LE=0;
         	delay(3000);
         	LE=1;
         	delay(3000);
         	//t1s1=0;	
         	}    //test  */
         	WDT=1;
         	if(data_bit)
         	  receive_data();
         	  
         	if(message_bit)
         	  receive_message();
         	if(setting_pa_bit);
         	 { 
         	 	
         	  temp=read_24c64(pa_on_adr);         	   
         	  temp=temp&0xe0;	
         	  temp1=read_24c64(upa_weaken_adr);
         	  temp1=temp1&0x1F;
         	 write_port(0,temp|temp1); 
         	 setting_pa_bit=0;
         	 }
         	 if(setting_weaken_bit)
         	  {
         	    temp =read_24c64(pa_on_adr);
         	  temp =temp&0xe0;	
         	  temp1 =read_24c64(upa_weaken_adr);         	          	            	  
         	   write_port(0,temp|temp1); 
         	  temp=read_24c64(dpa_weaken_adr);
         	   temp=~temp;
         	   write_port(1,temp&0x1F); 
         	   setting_weaken_bit=0;	
         	  }
         	  if(setting_alc_bit)	
         	  {
         	    for(i=0;i<4;i++)
         	    {
         	    	temp=read_24c64(alc_adr+i);
         	    	
         	        X9241(temp,i);
         	     }
         	     setting_alc_bit=0;
         	   } 
         	if(setting_freq_bit)
         	  {
         	    temp1=read_24c64(net_adr);	
         	     if(temp1==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(temp1==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(100);
         	      	 } 
         	      	}
         	  else if(temp1==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; 	
         	      	setting_freq_bit=0;
         	      
         	   }
               if(t1s4>=1)
                 {
                 temp=read_24c64(upa_max_adr);
                 upa_pow= tlc540(1);
                 temp2=temp*upa_pow;
                   //upa_pow=1;//test
                 upa_pow=temp2/0xff;
                  delay(1);
                  upa_tem=tlc540(2);
                  //upa_tem=3;
                  temp2=85*upa_tem;
                   upa_tem=temp2/0xff;
                   delay(1);
                   //dpa_pow=4;
                    WDT=1;
                   dpa_pow =tlc540(3);
                  temp=read_24c64(dpa_max_adr);
                  temp2=dpa_pow*temp;
                 dpa_pow =temp2/0xff;
                   delay(1);
                  // dpa_tem=5;
                 dpa_tem=tlc540(0);
                 temp2=85*dpa_tem;
                 dpa_tem=temp2/0xff;
                   t1s4=0;	
                 }
                if(t50ms1>10) 
                 {
                 t50ms1	=0;
                 alarm1=read_port(4);
                 alarm1=alarm_enable1&alarm1;                
                  alarm2=read_port(2);
                 alarm2=alarm_enable2&alarm2;
                 alarm3=read_port(3);
                 temp=0x02&alarm_enable3;
                 temp=temp>>1;
                 alarm_enable3=temp|alarm_enable3;
                 //alarm_enable3_7=alarm_enable3_6;
                 alarm3=alarm_enable3&alarm3;
                  temp=0x01&alarm3;
                  temp=temp<<1;
                  alarm3=temp|alarm3;
                // alarm3_6=alarm3_6|alarm3_7;
                   }	
                                                 
                 /*if(first_bit)
                  {
                  first_bit=0;	
                     alarm_back1=alarm1;
                     alarm_back2=alarm2;	
                    alarm_back3=alarm3;
                  if((alarm1!=0)||(alarm2!=0)||(alarm3!=0))
                    {
                    	delay(10);
                    	 alarm1=read_port(4);
                         alarm1=alarm_enable1&alarm1;                
                        alarm2=read_port(2);
                        alarm2=alarm_enable2&alarm2;
                         alarm3=read_port(3);
                        alarm3=alarm_enable3&alarm3;
                     if((alarm1!=0)||(alarm2!=0)||(alarm3!=0))
                    	 send_alarm();	
                      // alarm_back1=alarm1;
                      // alarm_back2=alarm2;	
                      // alarm_back3=alarm3;
                     }  
                  }*/	
                if((alarm_back1!=alarm1)||(alarm_back2!=alarm2)||(alarm_back3!=alarm3))
                   {
                   	delay(10);
                   	alarm1=read_port(4);
                        alarm1=alarm_enable1&alarm1;                
                        alarm2=read_port(2);
                        alarm2=alarm_enable2&alarm2;
                        alarm3=read_port(3);
                         temp=0x02&alarm_enable3;
                         temp=temp>>1;
                          alarm_enable3=temp|alarm_enable3;
                 //alarm_enable3_7=alarm_enable3_6;
                          alarm3=alarm_enable3&alarm3;
                           temp=0x01&alarm3;
                           temp=temp<<1;
                           alarm3=temp|alarm3;
                     if((alarm_back1!=alarm1)||(alarm_back2!=alarm2)||(alarm_back3!=alarm3))
                  	{ 
                  		 send_alarm();
                  		 times=3;
                          }	
                          
                          
                   }
                 if(!success_bit)
                  {
                   if((t1m1>=3)&&(times!=0))
              //   if((t1s1>=30)&&(times!=0))
                     {
                     	//t1s1=0;
                       send_alarm();
                       // t1m1=0;
                       	times--;
                      t1h1=0; 		
                     }	
                     if(t1h1>=2)
                     times=3;
                     
                  }	   
	      /* if(t1s3>60)//注册网络/// 
			{
				j=0;
				do
				{
					 
					  WDT=1;
					 if(message_bit)
					 receive_message();
					 //if(data_bit)
					 //receive_data();
					printf("AT+CREG?\r\n");//不要封装,否则影响计时
					delay(1);ES=1;
					t1s1=0;
					do
					{
						delay(50);
						i=rcv_serch(",1");
					}while(i>BUFF_LEN1 && t1s1<2);///mod,11-1,2d
					if(i<BUFF_LEN1) break;
					j++;
					if(j>60)///mod,4-10,自复位
					{
						 
					  goto start;
					} 
				}while(1);
               			 t1s3=0;
			}   */ 
	}
 }
void receive_data()
 {
  uchar i,temp;
  uint crc_value;
   delay(1000); 
   t50ms=0;t1s1=0;
   do{delay(50);i=rcv_serch("X02");}while(i>BUFF_LEN1 && t1s1<2);///mod,03-8-22
    ES=0;///add,3-28,以防充乱缓冲区
   
	if(i>BUFF_LEN1) 
	{
	 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(type_adr,temp);//选择设备类型
	   putunchar(rcv_buff[i+6]);
	   putunchar(rcv_buff[i+7]);
	  printf("OK");
	   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网//02移频
	    putunchar(rcv_buff[i+6]);
	   putunchar(rcv_buff[i+7]);
	  printf("OK");
	    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未使用
	    putunchar(rcv_buff[i+6]);
	   putunchar(rcv_buff[i+7]);
	  printf("OK");
	    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);
	   putunchar(rcv_buff[i+6]);
	   putunchar(rcv_buff[i+7]);
	  printf("OK");
	   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);
	  putunchar(rcv_buff[i+6]);
	   putunchar(rcv_buff[i+7]);
	  printf("OK");
	  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();
	 //  putunchar(0x30+rcv_buff[i+6]);
	  // putunchar(0x30+rcv_buff[i+7]);
	  printf("OK");
	   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 receive_message()
{
	uchar i ,temp;
	 uint crc_value;
	//delay(200);
	Clear_rcv_buff();
	 
	printf("AT+CMGR=1\r\n");    //读取no.1
	delay(1);ES=1;
	delay(4000);///mod,03-8-22,03-9-13,短信后期发送保险起见
	 
	t50ms=0;t1s1=0;
	
	do{delay(50);i=rcv_serch("X02");}while(i>BUFF_LEN1 && t1s1<2);///mod,03-8-22
	ES=0;///add,3-28,以防充乱缓冲区
	
	if(i>BUFF_LEN1) 
	{
		///rcv_point=0;///mod,03-8-22

⌨️ 快捷键说明

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