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

📄 06.c

📁 msp430和nrf905的例子,联系qqliuyong007@163.com
💻 C
字号:
void downloadparameter(void)
{
   unsigned char j=0;
   unsigned short m;
   unsigned char *p;
   unsigned short adres;
  adres=(rxbuf[2]<<8)+rxbuf[3]-40000;
  adres=adres/100;
   if(rxbuf[5]>=128)
   {
     answernum=0x02;
     exceptionalanswer();
    }
    else
    {
      switch(adres)
      {
       case 20://系统设置1参数下载
         flag.flag0620=1;
         p=(unsigned char *)&systemsetup;
     //i=2*rxbuf[4];
         for(m=2*(rxbuf[3]-0x10);m<2*(rxbuf[3]-0x10+rxbuf[5]);m=m+2)   
         {

          *(p+m)=rxbuf[7+j];
          *(p+m+1)=rxbuf[6+j];
          j=j+2;
         }
        flag.system=1;
      
         break;
        case 5://定值通道参数下载
	 if(rxbuf[3]>=0x3e)
	{
		  flag.flag06511=1;
                  p=(unsigned char *)&Fixedvalue.alarm[0].logicalmode;
                  for(m=2*(rxbuf[3]-0x3e);m<2*(rxbuf[3]-0x3e+rxbuf[5]);m=m+2)   
                  {
          
                    *(p+m)=rxbuf[7+j];
                    *(p+m+1)=rxbuf[6+j];
                    j=j+2;
                   }
        }
	else
	{       flag.flag06501=1;
		p=(unsigned char *)&rel;
                 for(m=2*(rxbuf[3]-0x34);m<2*(rxbuf[3]-0x34+rxbuf[5]);m=m+2)   //为什么×2呢?应为上位机寄存器大小是十六位的
                 {
                  *(p+m)=rxbuf[7+j];
                  *(p+m+1)=rxbuf[6+j];
                  j=j+2;
                 }
	}
         break;
       case 6://复费率参数下载
        flag.flag0606=1;
         p=(unsigned char *)&againfee;
         for(m=2*(rxbuf[3]-0x98);m<2*(rxbuf[3]-0x98+rxbuf[5]);m=m+2)   //为什么×2呢?应为上位机寄存器大小是十六位的
         {

          *(p+m)=rxbuf[7+j];
          *(p+m+1)=rxbuf[6+j];
          j=j+2;
         }
         break;
       case 21://系统设置2参数下载
         flag.flag0621=1;
         p=(unsigned char *)&systemsetup1;
         for(m=2*(rxbuf[3]-0x74);m<2*(rxbuf[3]-0x74+rxbuf[5]);m=m+2)   //为什么×2呢?应为上位机寄存器大小是十六位的
         {

          *(p+m)=rxbuf[7+j];
          *(p+m+1)=rxbuf[6+j];
          j=j+2;
         }
         break;
	  
      default: break;
      }
      
   if(answernum==0x00)
   {
         txbuf[0]=rxbuf[0];
         txbuf[1]=rxbuf[1];
         txbuf[2]=rxbuf[2];
         txbuf[3]=rxbuf[3];
         txbuf[4]=rxbuf[4];
         txbuf[5]=rxbuf[5];
         T16=crc16(txbuf,6);
	     high8=T16 >> 8;
	     low8=T16 & 0xff; 
	     txbuf[6]=high8;
	     txbuf[7]=low8;
	     P3OUT |= BIT7;   //P4.2为高电平为发送模式
	     flag.transfer_ok=FAULT;
	     i=0;     
	     flag.gb=1;
	     flag.ds=4;      
 do 
  {
        TXBUF1=txbuf[i];
	while((IFG2 & UTXIFG1) == 0)     // USART0 TX buffer ready?
	{
	_NOP();
	}
   i++;	
  }while(i<8);
 } 
	flag.transfer_ok=TRUE;
         i=0;
         answernum=0x00;
              for(i=0;i<140;i++)
     {
     rxbuf[i]=0;
     txbuf[i]=0;
     }
   }
}

⌨️ 快捷键说明

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