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

📄 05.c

📁 msp430和nrf905的例子,联系qqliuyong007@163.com
💻 C
字号:
void readreplase(void)//继电器释放或电能表复位
{
    unsigned char *q;
    //p=(unsigned char *)&rel;
    q=(unsigned char *)&systemsetup.sbzh;
	switch(rxbuf[2])
	{
	case 0x00:
	  if(rxbuf[3]==0x00)
	  {
	   break;
	   }
	   else
	   { 
	      switch(rxbuf[3])
	      {
	       case 1:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0001;            ///??????????????????????????
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xfffe;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;
	       case 2:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0002; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xfffd;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;
	       case 3:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0004; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xfffb;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;
	       case 4:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0008; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xfff7;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;
	       case 5:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0010; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xffef;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;
	        case 6:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0020; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xffdf;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;
	        case 7:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0040; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xffbf;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break; 
	        case 8:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0x0080; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0xff7f;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }
	            break;   
	        case 0xff:
	            if((rxbuf[4]==0x00)&&(rxbuf[5]==0xff))
	            rel.lockstate|=0xffff; 
	            else if((rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
	            rel.lockstate&=0x0000;
	            else
	            {
	            answernum=0x01;
                    exceptionalanswer();
                    }  
                    break;
	       default:
	             answernum=0x05;
                     exceptionalanswer();
	       break;
	       }
	  
	   }
       break;
     case 0x01:
       if((rxbuf[3]==0xff)&&(rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
       {
         flag. edgcl=1;//电表复位
        }
        break;
      case 0x10:
       if((rxbuf[3]==0xff)&&(rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
       {
         flag.evecl=1;// 清除事件记录
        }
        break;
      case 0x20:
       if((rxbuf[3]==0xff)&&(rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
       {
         flag.limicl=1;//清除最大最小值
        }
        break;
      case 0x30:
       if((rxbuf[3]==0xff)&&(rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
       {
         flag.warnflag=1;//定值清零
        }
        break;
     case 0x40:
       if((rxbuf[3]==0xff)&&(rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
       {
         flag.feeflag=1;//费率清零
        }
        break;
     case 0x50:
       if((rxbuf[3]==0xff)&&(rxbuf[4]==0x00)&&(rxbuf[5]==0x00))
       {
         *(q+2)=rxbuf[5];
         *(q+3)=rxbuf[4];//更改设备地址
        }
        break;
      default:
      answernum=0x01;
      exceptionalanswer();
      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];
	txbuf[6]=rxbuf[6];
	txbuf[7]=rxbuf[7];
	P3OUT |= BIT7;  //P3.7为高电平为发送模式
	flag.transfer_ok=FAULT;
	i=0;
	
 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 + -