rfserver.lst

来自「MCS51的实现无线接收发送(315M或433M)源程序代码。」· LST 代码 · 共 1,348 行 · 第 1/5 页

LST
1,348
字号
C51 COMPILER V7.50   RFSERVER                                                                          05/12/2006 19:00:38 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE RFSERVER
OBJECT MODULE PLACED IN .\RfServer.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\RfServer.c OPTIMIZE(4,SPEED) REGFILE(.\RfCtrl.ORC) ORDER DEBUG OBJECTEXTEND CODE SYM
                    -BOLS NOCOND PAGEWIDTH(132) PAGELENGTH(1000) OBJECT(.\RfServer.obj)

line level    source

   1          /**********************************************************
   2          *                  RfServer.c                             *
   3          **********************************************************/
   4          #define RFSERVER_GLOBALS 
   5          //=========================================================
   6          #include "Os\Sm5964.h"
   7          #include "Os\Struct.h"
   8          #include "Os\Hardware.h"
   9          #include "Os\Uart.h"
  10          #include "Os\Tools.h"
  11          #include "Os\Error.h"
  12          #include "Os\OS.h"
  13          #include "Os\TmrTsk.h"
  14          #include "Os\TskMan.h"
  15          #include "Os\Tmr2.h"
  16          #include "Os\Int01.h"
  17          #include "Config.h"
  18          #include "ApplyStruct.h"
  19          #include "RfServer.h"
  20          //=========================================================
  21          #define DEBUG_RFSERVER   1
  22          //=========================================================
  23          #define RFRECVDATABUFLEN       20
  24          #define RFSENDDATABUFLEN       20
  25          //=========================================================
  26          #define FLAG1                  0XFF
  27          #define FLAG2                  0XFE
  28          //=========================================================
  29          #define HOST                   0X01
  30          #define SOSS                   0X02
  31          #define AMU                    0X03
  32          //=========================================================
  33          #define IDSERIALLEN            4
  34          //=========================================================
  35          #define ADDR_IDENTITY          0X8000
  36          #define ADDR_ID_SERIAL         0X8001
  37          #define ADDR_AMU_NUM           0X8010
  38          #define ADDR_HOST              0X8020
  39          //=========================================================
  40          #define AMUNORECV              18
  41          //=========================================================
  42          static INT8UX AmuNum,AmuNoRecvCnt,Status;
  43          static INT8UX AmuData[10][5];
  44          static INT8UX LoopIndex;
  45          static INT8UX CurRecvIdSerial[IDSERIALLEN];
  46          
  47          static INT8UX RfRecvDataBuf[RFRECVDATABUFLEN];
  48          static INT8UX RfRecvDataLen;
  49          static INT8UX RfSendDataBuf[RFSENDDATABUFLEN];
  50          static INT8UX RfSendDataLen;
  51          //=========================================================
  52          static void RfServerTmrProc(void)
  53          {
  54   1                INT8U Identity;
  55   1                
  56   1                #if DEBUG_RFSERVER
  57   1                //MDebugStrLF((INT8UC *)"RfServerTmrProc()");
  58   1                #endif
  59   1                
  60   1                Identity=RdRom(ADDR_IDENTITY);
  61   1                if(Identity==HOST)
  62   1                  {
  63   2                   if(LoopIndex<AmuNum)
  64   2                     {
  65   3                         AmuData[LoopIndex][4]=3; //处于通讯失败
  66   3                      
  67   3                         RfSendDataLen=0;
  68   3                         RfSendDataBuf[RfSendDataLen++]=FLAG1;
  69   3                         MovXX(RfSendDataBuf+RfSendDataLen,AmuData[LoopIndex],IDSERIALLEN);
  70   3                         RfSendDataLen+=IDSERIALLEN;
  71   3                         MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
  72   3                         RfSendDataLen+=IDSERIALLEN;
  73   3                         RfSendDataBuf[RfSendDataLen++]=0X01;
  74   3                         RfSendDataBuf[RfSendDataLen++]=Status;
  75   3                         RfSendDataBuf[RfSendDataLen++]=GetChkSum(RfSendDataBuf+1,RfSendDataLen-1);
  76   3                         RfSendDataBuf[RfSendDataLen++]=FLAG2;
  77   3                      #if DEBUG_RFSERVER
  78   3                      MDebugExMemHex(RfSendDataBuf,RfSendDataLen);
  79   3                      #endif
  80   3                         RfSend(RfSendDataBuf,RfSendDataLen);
  81   3                     }
  82   2                   if(++LoopIndex>=AmuNum) LoopIndex=0;
  83   2                   StartTmr(RFSERVERTMRID,SECOND5);
  84   2                  }
  85   1                else if(Identity==AMU)
  86   1                  {
  87   2                   if(Status==0x40)
  88   2                     {
  89   3                   RfSendDataLen=0;
  90   3                      RfSendDataBuf[RfSendDataLen++]=FLAG1;
  91   3                         MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_HOST,IDSERIALLEN);
  92   3                   RfSendDataLen+=IDSERIALLEN;
  93   3                         MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
  94   3                         RfSendDataLen+=IDSERIALLEN;
  95   3                         RfSendDataBuf[RfSendDataLen++]=0X02;
  96   3                         RfSendDataBuf[RfSendDataLen++]=Status;
  97   3                         RfSendDataBuf[RfSendDataLen++]=GetChkSum(RfSendDataBuf+1,RfSendDataLen-1);
  98   3                         RfSendDataBuf[RfSendDataLen++]=FLAG2;
  99   3                      #if DEBUG_RFSERVER
 100   3                      MDebugStrLF((INT8UC *)"求救");
 101   3                      MDebugExMemHex(RfSendDataBuf,RfSendDataLen);
 102   3                      #endif
 103   3                         RfSend(RfSendDataBuf,RfSendDataLen);
 104   3                         
 105   3                      StartTmr(RFSERVERTMRID,SECOND10);
 106   3                     }
 107   2                  }
 108   1                else if(Identity==SOSS)
 109   1                  {
 110   2            RfSend(RfSendDataBuf,RfSendDataLen);
 111   2                  }
 112   1      
 113   1      }
 114          //=========================================================
 115          void InitRfServerTsk(void)
 116          {
 117   1                INT8U Identity;
 118   1                
 119   1                #if DEBUG_RFSERVER
 120   1                MDebugStrLF((INT8UC *)"InitRfServerTsk()");
 121   1                #endif
 122   1                
 123   1                Identity=RdRom(ADDR_IDENTITY);
 124   1                
 125   1                #if DEBUG_RFSERVER
 126   1                MDebugPara("身份:",Identity);
 127   1                MDebugCodeHex((INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
 128   1                #endif
 129   1                
 130   1                if(Identity==HOST)
 131   1                  {
 132   2                   Status=0;
 133   2                   LoopIndex=0;
 134   2                   AmuNum=0;
 135   2                   //AmuNum=RdRom(ADDR_AMU_NUM);
 136   2                   //MovCX((INT8UX *)AmuData,(INT8UC *)(ADDR_AMU_NUM+1),AmuNum*5);
 137   2                
 138   2                   #if DEBUG_RFSERVER
 139   2                   MDebugPara("AmuNum:",AmuNum);
 140   2                   //MDebugExMemHex((INT8UX *)AmuData,AmuNum*5);
 141   2                   #endif
 142   2                
 143   2                   InstallTmr(RFSERVERTMRID,RfServerTmrProc);
 144   2                   StartTmr(RFSERVERTMRID,SECOND5);
 145   2                  }
 146   1                else if(Identity==SOSS)
 147   1                  {
 148   2                   InstallTmr(RFSERVERTMRID,RfServerTmrProc);
 149   2                  }
 150   1                else if(Identity==AMU)
 151   1                  {
 152   2                   Status=0;
 153   2                   AmuNoRecvCnt=0;
 154   2                   InstallTmr(RFSERVERTMRID,RfServerTmrProc);
 155   2                   StartTmr(RFSERVERTMRID,SECOND5);
 156   2                  }
 157   1      }
 158          //=========================================================
 159          void RfServerTskEntry(void)
 160          {
 161   1                #if DEBUG_RFSERVER
 162   1                MDebugStrLF((INT8UC *)"RfServerTskEntry()");
 163   1                #endif
 164   1      }
 165          //=========================================================
 166          static void HdlRfFrame(void)
 167          {
 168   1         INT8U i,Identity,*Data;
 169   1      
 170   1                #if DEBUG_RFSERVER
 171   1                //MDebugStrLF((INT8UC *)"HdlRfFrame()");
 172   1                //MDebugExMemHex(RfRecvDataBuf,RfRecvDataLen);
 173   1                #endif
 174   1                
 175   1                Identity=RdRom(ADDR_IDENTITY);
 176   1                if(Identity==AMU)
 177   1                  {
 178   2                   if(CmpXCString(RfRecvDataBuf+1,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN)!=STR_EQUAL)
 179   2                     {
 180   3                         #if DEBUG_RFSERVER
 181   3                      //MDebugStrLF((INT8UC *)"不是我的ID");
 182   3                      #endif
 183   3                      return;
 184   3                     }
 185   2                   if(CmpXCString(RfRecvDataBuf+1+IDSERIALLEN,(INT8UC *)ADDR_HOST,IDSERIALLEN)!=STR_EQUAL)
 186   2                     {
 187   3                         #if DEBUG_RFSERVER
 188   3                      //MDebugStrLF((INT8UC *)"不是我的中心");
 189   3                      #endif
 190   3                      return;
 191   3                     }
 192   2                   #if DEBUG_RFSERVER
 193   2                   //MDebugExMemHex(RfRecvDataBuf,RfRecvDataLen);
 194   2                   #endif
 195   2            Data=(INT8U *)(RfRecvDataBuf+1+IDSERIALLEN+IDSERIALLEN);
 196   2            switch(*Data)
 197   2              {
 198   3                      case 0x01:
 199   3                           AmuNoRecvCnt=0;
 200   3                           
 201   3                           Status=*(Data+1);
 202   3                           if(Status==0x40)
 203   3                             {
 204   4                              #if DEBUG_RFSERVER
 205   4                              MDebugStrLF((INT8UC *)"HST触发报警");
 206   4                              #endif
 207   4                             }
 208   3                           else
 209   3                             {
 210   4                              #if DEBUG_RFSERVER
 211   4                              MDebugStrLF((INT8UC *)"HST查询状况");
 212   4                              #endif
 213   4                             }
 214   3                           
 215   3                                 RfSendDataLen=0;
 216   3                              RfSendDataBuf[RfSendDataLen++]=FLAG1;
 217   3                              MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_HOST,IDSERIALLEN);
 218   3                              RfSendDataLen+=IDSERIALLEN;
 219   3                              MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
 220   3                              RfSendDataLen+=IDSERIALLEN;
 221   3                    RfSendDataBuf[RfSendDataLen++]=0X81;
 222   3                    RfSendDataBuf[RfSendDataLen++]=Status;
 223   3                              RfSendDataBuf[RfSendDataLen++]=GetChkSum(RfSendDataBuf+1,RfSendDataLen-1);
 224   3                              RfSendDataBuf[RfSendDataLen++]=FLAG2;
 225   3                              #if DEBUG_RFSERVER
 226   3                           MDebugExMemHex(RfSendDataBuf,RfSendDataLen);
 227   3                           #endif
 228   3                              RfSend(RfSendDataBuf,RfSendDataLen);
 229   3                      break;
 230   3                      
 231   3                      case 0xc0:
 232   3                      #if DEBUG_RFSERVER
 233   3                           MDebugStrLF((INT8UC *)"收到SOSS报警应答");
 234   3                           #endif
 235   3      
 236   3                      break;
 237   3              }
 238   2               }
 239   1               
 240   1         else if(Identity==SOSS)
 241   1                  {
 242   2                   #if DEBUG_RFSERVER
 243   2                   //MDebugExMemHex(RfRecvDataBuf,RfRecvDataLen);
 244   2                   #endif
 245   2            Data=(INT8U *)(RfRecvDataBuf+1+IDSERIALLEN+IDSERIALLEN);
 246   2            if((*Data==0x02)&&(*(Data+1)==0x40))
 247   2              {
 248   3                 #if DEBUG_RFSERVER
 249   3                      MDebugStrLF((INT8UC *)"收到求救信号");
 250   3                      #endif
 251   3                           
 252   3                      UartSendLen=0;
 253   3               UartSendBuf[UartSendLen++]=0X7F;
 254   3               UartSendBuf[UartSendLen++]=6;
 255   3               UartSendBuf[UartSendLen++]=0X0F;
 256   3                         MovXX(UartSendBuf+UartSendLen,RfRecvDataBuf+1+IDSERIALLEN,IDSERIALLEN);
 257   3                         UartSendLen+=IDSERIALLEN;
 258   3                         UartSendBuf[UartSendLen++]=GetChkSum(UartSendBuf+2,UartSendLen-2);
 259   3                         #if DEBUG_RFSERVER
 260   3                      //MDebugExMemHex(UartSendBuf,UartSendLen);

⌨️ 快捷键说明

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