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

📄 uart0.c

📁 主要用340单片机的控制的温和湿度采集和向主机发送已接受主机设置参数。
💻 C
📖 第 1 页 / 共 5 页
字号:
    readnum+=6;

  switch (rbuf[readnum])
  {
  case '1':                                                //115200
      readnum+=7;
      succeedre();
      CKCON|=0x08;
	  TH1=0xcc;
	  break;
  case '2':                                                //1200
       readnum+=5;
      succeedre();
      CKCON|=0x02;
      CKCON&=~0x09;
	  TH1=0x98;
	  break;
  case '3':                                                //230400
      readnum+=7;
      succeedre(); 
	 CKCON|=0x08;
	  TH1=0xe6;
	  break;
  case '4':                                                //14400
      readnum++;
      if (rbuf[readnum]==4)
	  {
      readnum+=5;
      succeedre();
      CKCON|=0x01;
      CKCON&=~0x0a;
	  TH1=0x98;
	  }
	  else                                                 //2400
	  {
      readnum+=4;
      succeedre();
      CKCON&=~0x0b;
	  TH1=0x30;
	  }
	  break;
  case '6':                                                //9600
      readnum+=5;
      succeedre();
      CKCON|=0x01;
      CKCON&=~0x0a;
	  TH1=0x64;
	  break;
  case '7':                                                //57600
      readnum+=6;
      succeedre();
      CKCON|=0x08;
	  TH1=0x98;
	  break;
  case '8':                                                //28800
      readnum+=6;
      succeedre();
      CKCON|=0x08;
	  TH1=0x30;
	  break;
   }
}

/******************************************************************************
*读取历史数据子程序*
*******************************************************************************/
void load()

{
 //    readnum=readnum99(4);
     readnum+=5;
	 switch (rbuf[readnum])
	 {
     case 'O':
		length=4140;
	 datatimepro();
     readnum+=2;
     datatime[3]=rbuf[readnum]-0x30;
     datatime[3]*=10;
     readnum+=1;
     datatime[3]+=rbuf[readnum]-0x30;
	 datatime[4]=0;
     readnum+=3;
     succeedre();
	 get_history_dataa();
		break;
     case 'U':
		length=69;
			 datatimepro();
     readnum+=2;
     datatime[3]=rbuf[readnum]-0x30;
     datatime[3]*=10;
     readnum+=1;
     datatime[3]+=rbuf[readnum]-0x30;
     readnum+=2;
     datatime[4]=rbuf[readnum]-0x30;
     datatime[4]*=10;
     readnum+=1;
     datatime[4]+=rbuf[readnum]-0x30;
     readnum+=2;
     minutelength=rbuf[readnum]-0x30;
     minutelength*=10;
     readnum+=1;
     minutelength+=rbuf[readnum]-0x30;
     readnum+=3;
     succeedre();
	 get_history_dataa();
        break;
     case 'A':
	    length=99360;
			 datatimepro();
	 datatime[3]=0;
	 datatime[4]=0;
     readnum+=3;
     succeedre();
	 get_history_dataa();	
		break;
	 default:
	 readnum=rnum;
     lostre();
	 break;
     }
}
/******************************************************************************
*读取历史数据时间子程序*
*******************************************************************************/
void datatimepro()
{
 //    readnum=readnum99(8);
     readnum+=9;
     datatime[0]=rbuf[readnum]-0x30;
     datatime[0]*=10;
 //    readnum=readnum99(1);
     readnum++;
     datatime[0]+=rbuf[readnum]-0x30;
 //    readnum=readnum99(2);
     readnum+=2;
     datatime[1]=rbuf[readnum]-0x30;
     datatime[1]*=10;
 //    readnum=readnum99(1);
     readnum++;
     datatime[1]+=rbuf[readnum]-0x30;
 //    readnum=readnum99(2);
     readnum+=2;
     datatime[2]=rbuf[readnum]-0x30;
     datatime[2]*=10;
 //    readnum=readnum99(1);
     readnum++;
     datatime[2]+=rbuf[readnum]-0x30;
}

/******************************************************************************
*读取一小时内的分钟历史数据子程序*
*******************************************************************************/
void onehor()
{
     int j;
/*	 datatimepro();
     readnum=readnum99(1);
     datatime[3]=rbuf[readnum]-0x30;
     datatime[3]*=10;
     readnum=readnum99(i);
     datatime[3]+=rbuf[readnum]-0x30;
	 datatime[4]=0;
     readnum=readnum99(3);
*/
	  //调用取数据子函数
     uporload=1;
   	for(j=0;j<7;j++)
	 {
     tbuf[writenum]=id[j];
	 writenum++;
	 }
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]=0x30;           //0
	 writenum++;
     tbuf[writenum]='T';           //U
	 writenum++;
     tbuf[writenum]='A';           //P
	 writenum++;
     tbuf[writenum]='L';           //D
	 writenum++;
     tbuf[writenum]='O';           //A
	 writenum++;
     tbuf[writenum]='A';           //T
	 writenum++;
     tbuf[writenum]='D';           //A
	 writenum++;
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]='O';           //O
	 writenum++;
     tbuf[writenum]='N';           //N
	 writenum++;
     tbuf[writenum]='E';           //E
	 writenum++;
     tbuf[writenum]='H';           //H
	 writenum++;
     tbuf[writenum]='O';           //O
	 writenum++;
     tbuf[writenum]='R';           //R
	 writenum++;
     tbuf[writenum]=0x20;           //			
	 writenum++;
     tbuf[writenum]='2';           //			
	 writenum++;
     tbuf[writenum]='0';           //			
	 writenum++;
     data_tra();                     //调用数据转换子程序	 
     tbuf[writenum]=0x0D;           //回车
	 writenum++;
     tbuf[writenum]=0x0A;           //换行
	 writenum++;
	 writenum=0;
	 send();                        //数据发送
}


/******************************************************************************
*读取用户指定时间点历史数据子程序*
*******************************************************************************/
void userld()
{
     unsigned char j;
/*	 datatimepro();
     readnum=readnum99(1);
     datatime[3]=rbuf[readnum]-0x30;
     datatime[3]*=10;
     readnum=readnum99(1);
     datatime[3]+=rbuf[readnum]-0x30;
     readnum=readnum99(2);
     datatime[4]=rbuf[readnum]-0x30;
     datatime[4]*=10;
     readnum=readnum99(1);
     datatime[4]+=rbuf[readnum]-0x30;
	 readnum=readnum99(1);

  k=rbuf[readnum]-0x30;
     k*=10;
     readnum=readnum99(1);
     k+=rbuf[readnum]-0x30;
	 length*=k;

     readnum=readnum99(3);
*/
	  //调用取数据子函数
     uporload=1;
     for(j=0;j<7;j++)
	 {
     tbuf[writenum]=id[j];
	 writenum++;
	 }
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]=0x30;           //0
	 writenum++;
     tbuf[writenum]='T';           //U
	 writenum++;
     tbuf[writenum]='A';           //P
	 writenum++;
     tbuf[writenum]='L';           //D
	 writenum++;
     tbuf[writenum]='O';           //A
	 writenum++;
     tbuf[writenum]='A';           //T
	 writenum++;
     tbuf[writenum]='D';           //A
	 writenum++;
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]='U';           //U
	 writenum++;
     tbuf[writenum]='S';           //S
	 writenum++;
     tbuf[writenum]='E';           //E
	 writenum++;
     tbuf[writenum]='R';           //R
	 writenum++;
     tbuf[writenum]='L';           //L
	 writenum++;
     tbuf[writenum]='D';           //D
	 writenum++;
     tbuf[writenum]=0x20;           //			
	 writenum++;
     tbuf[writenum]='2';           //			
	 writenum++;
     tbuf[writenum]='0';           //			
	 writenum++;
     data_tra();                     //调用数据转换子程序	 
     tbuf[writenum]=0x0D;           //回车
	 writenum++;
     tbuf[writenum]=0x0A;           //换行
	 writenum++;
	 writenum=0;
	 send();                        //数据发送

	 
}


/******************************************************************************
*读取一天内历史数据子程序*
*******************************************************************************/

void allday()
{
     int j;
/*	 datatimepro();
	 datatime[3]=0;
	 datatime[4]=0;
     readnum=readnum99(3);	
*/
     uporload=1;
   	 for(j=0;j<7;j++)
	 {
     tbuf[writenum]=id[j];
	 writenum++;
	 }
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]=0x30;           //0
	 writenum++;
     tbuf[writenum]='T';           //U
	 writenum++;
     tbuf[writenum]='A';           //P
	 writenum++;
     tbuf[writenum]='L';           //D
	 writenum++;
     tbuf[writenum]='O';           //A
	 writenum++;
     tbuf[writenum]='A';           //T
	 writenum++;
     tbuf[writenum]='D';           //A
	 writenum++;
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]='A';           //A
	 writenum++;
     tbuf[writenum]='L';           //L
	 writenum++;
     tbuf[writenum]='L';           //L
	 writenum++;
     tbuf[writenum]='D';           //D
	 writenum++;
     tbuf[writenum]='A';           //A
	 writenum++;
     tbuf[writenum]='Y';           //Y
	 writenum++;
     tbuf[writenum]=0x20;           //			
	 writenum++;
     tbuf[writenum]='2';           //			
	 writenum++;
     tbuf[writenum]='0';           //			
	 writenum++;
     data_tra();                     //调用数据转换子程序	 
     tbuf[writenum]=0x0D;           //回车
	 writenum++;
     tbuf[writenum]=0x0A;           //换行
	 writenum++;
	 writenum=0;
	 send();                        //数据发送
	 
}
/******************************************************************************
*历史数搜索失败子程序*
*******************************************************************************/
void nodata()
{   
	 for(;readnum2<readnum-2;readnum2++)
	 {
	 tbuf[writenum]=rbuf[readnum2];
	 writenum++;
	 }
     tbuf[writenum]=0x20;           //0
	 writenum++;
	 tbuf[writenum]='E';           //E
	 writenum++;
     tbuf[writenum]='R';           //R
	 writenum++;
	 tbuf[writenum]='0';           //R
	 writenum++;
     tbuf[writenum]='0';           //O
	 writenum++;
	 tbuf[writenum]='4';           //R
	 writenum++;
     tbuf[writenum]=0x20;           //0
	 writenum++;
	 ordertimepro();
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]=0x0D;           //回车
	 writenum++;
     tbuf[writenum]=0x0A;           //换行
	 writenum++;
	 writenum=0;
	 send();
}
/******************************************************************************
*参数设置子程序*
*******************************************************************************/
void para()
{
    int i;
	readnum+=5;
    switch (rbuf[readnum])
	{
    case 'T':
	    readnum+=4;
		switch (rbuf[readnum])
		{
		case '1':
		     readnum+=2;
	         coetra();
		     tempcoe=COEFFMID;
             EEPROM_ByteWrite(0x10,0x00,coefficient);
             readnum+=2;
             succeedre();
		     break;
		case '2':
		     readnum+=2;
             coetra();
             tempcoe2=COEFFMID;
             EEPROM_ByteWrite(0x50,0x00,coefficient);
             readnum+=2;
             succeedre();
		      break;
		default:
	         readnum=rnum;
             lostre();
	         break;
        }
		break;
	case 'H':
	    readnum+=5;
	    coetra();
		humicoe=COEFFMID;
        EEPROM_ByteWrite(0x20,0x00,coefficient);
        readnum+=2;
		succeedre();
		break;
	case 'P':
        readnum+=5;
	    coetra();
		prescoe=COEFFMID;	
	    EEPROM_ByteWrite(0x30,0x00,coefficient); 
		readnum+=2;
		succeedre(); 
		break;
	case 'W':
         readnum+=5;
         for(i=0;i<3;i++)
         {
         coefficient[i]=rbuf[readnum];
         readnum++;
          }        
        windcoe=(0x2c-coefficient[0])*((coefficient[1]-0x30)*10+(coefficient[2]-0x30));
	    EEPROM_ByteWrite(0x40,0x00,coefficient); 
	    readnum+=2;
		succeedre(); 
		break;		  
	case 0x0a:	    
		for(i=0;i<7;i++)
	   {
       tbuf[writenum]=id[i];
	   writenum++;
	   }
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]=0x30;           //0
	 writenum++;
     tbuf[writenum]='T';           //U
	 writenum++;
     tbuf[writenum]='A';           //P
	 writenum++;
     tbuf[writenum]='P';           //D
	 writenum++;
     tbuf[writenum]='A';           //A
	 writenum++;
     tbuf[writenum]='R';           //T
	 writenum++;
     tbuf[writenum]='A';           //A
	 writenum++;
     tbuf[writenum]=0x20;           //0
	 writenum++;
     tbuf[writenum]='T';           //T
	 writenum++;
     tbuf[writenum]='E';           //E
	 writenum++;
     tbuf[writenum]='M';           //M
	 writenum++;
     tbuf[writenum]='P';           //P
	 writenum++;
     tbuf[writenum]=0x20;           //0
	 writenum++;	 	
	 EEPROM_ByteRead(0x10,0x00,coefficient);
	 for(i=0;i<7;i++)
	 {
       tbuf[writenum]=coefficient[i];

⌨️ 快捷键说明

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