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

📄 dvs-comprotoc.lst

📁 电话报警主机AT89S52单片机并带有网络模块通信协议
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   DVS_COMPROTOC                                                         02/27/2009 15:46:10 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DVS_COMPROTOC
OBJECT MODULE PLACED IN dvs-comprotoc.OBJ
COMPILER INVOKED BY: D:\Program Files\keil2.0\C51\BIN\C51.EXE dvs-comprotoc.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //dvs-comprotoc.c
   2          #include "DVS-V1.0.H"
   3          
   4          
   5          //=========================================== 函数定义 ==========================================
   6          void ScanComProtoc();                                                                                                                           //扫描串口协议  
   7          void RxTCPSame(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);//返回协议     
   8          void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);              
   9          //===============================================================================================
  10          
  11          
  12          //=========================================== 外部定义 ==========================================
  13          //位
  14          extern bit guc_Bit_BuChe;                                                                                                                       //布撤防:1为布,0为撤
  15          extern bit guc_bitRsCom;                                                                                                                        //中断接收完毕
  16          
  17          extern bit guc_bit_SenAlar ;                                                                                                            //传感器报警
  18          extern bit guc_BitTel ;                                                                                                                         // 拔打电话标致位
  19          //变里
  20          extern unsigned int  data       guc_Timer0;                                                                                             //拔号按键定时计数器
  21          extern unsigned char data  guc_AlarCnt;                                                                                         //拔号时计算器
  22          //数组
  23          extern unsigned char idata RsBuf[32];                                                                                           //接收缓冲区
  24          //函数
  25          extern void Delay1Ms(unsigned int auc_time);                                                                            //延时1MS
  26          extern void ONAlarSoun();                                                                                                                       //打开警号声
  27          extern void BuFan();                                                                                                                            //布防处理
  28          extern void CheFan();                                                                                                                           //撤防处理
  29          extern void SendToData(unsigned char *p,unsigned char Long);                                            //发送命令
  30          extern void SendASC(unsigned char ASC);                                                                                         //发送-个ASCII
  31          extern void WrEEPROM(unsigned char address,unsigned char indata);                                       //写EEPROM
  32          extern unsigned char RdEEPROM(unsigned char address);                                                           //读EEPROM
  33          //===============================================================================================
  34          
  35          
  36          
  37          
  38          //===============================================================================================
  39          //语法格式: RxTCPSame() 
  40          //实现功能: 返回相同的协议
  41          //参数:         
  42          //auc_Command:命令字;auc_Send_Len数据长度;*pDst:数据
  43          //返回:         无
  44          //创建时间:2008-12-26          修改时间:
  45          //创建人员:                    修改人员:
  46          //===============================================================================================
  47          void RxTCPSame(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst)
  48          {
  49   1              unsigned char data luc_i,luc_temp;
  50   1              luc_temp = 0xfe^auc_Command^0x00^0x01^auc_Send_Len;                                                     //异或协议区
  51   1              for(luc_i = 0 ; luc_i < auc_Send_Len ;luc_i ++)                                                         //异或数据区
  52   1              {
  53   2                      luc_temp = *(pDst+luc_i)^luc_temp;
  54   2              }
  55   1              SendASC(0xfe);                                                                                                                          //返回起始码
C51 COMPILER V7.06   DVS_COMPROTOC                                                         02/27/2009 15:46:10 PAGE 2   

  56   1              SendASC(auc_Command);                                                                                                           //返回命令字
  57   1              SendASC(0x00);                                                                                                                          //返回分包标记
  58   1              SendASC(0x01);                                                                                                                          //返回命令序号
  59   1              SendASC(auc_Send_Len);                                                                                                          //返回数据区长度
  60   1              SendToData(pDst,auc_Send_Len);                                                                                          //返回数据区
  61   1              SendASC(luc_temp) ;                                                                                                                     //返回异或值
  62   1      }
  63          
  64          
  65          
  66          //===============================================================================================
  67          //语法格式:     judgeRAYTC()    
  68          //实现功能: 判断返回协议是否定义协议相同
  69          //参数:         
  70          //auc_Command:命令字;auc_Send_Len数据长度;*pDst:数据
  71          //返回:         无
  72          //创建时间:2009-01-08          修改时间:
  73          //创建人员:                    修改人员:
  74          //==============================================================================================
  75          void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst)
  76          {
  77   1      //      unsigned char data luc_i;
  78   1              RxTCPSame(auc_Command,auc_Send_Len,pDst);
  79   1              guc_Timer0 = 32;                                                                                                                //定时1秒
  80   1              while(1)                                                                                                                                //等待回返回信息
  81   1              {
  82   2                      if(RsBuf[0]==0xFE)
  83   2                      {
  84   3                              Delay1Ms(30);
  85   3                              break;
  86   3                      }
  87   2                      if(guc_Timer0==0) break;                                                                                        //如果没有等到返回信息也返回
  88   2              }
  89   1              RsBuf[0] = 0x00;
  90   1      //      for(luc_i = 0 ; luc_i < 30 ; luc_i ++)                                                                  //清除接收缓冲区
  91   1      //      {
  92   1      //              RsBuf[luc_i] = 0x00;
  93   1      //      }
  94   1              guc_bitRsCom = 0;
  95   1      }
  96          
  97          
  98          /*
  99          //===============================================================================================
 100          //语法格式:     judgeTCPSame()  
 101          //实现功能: 判断协议是否定义协议相同
 102          //参数:         无
 103          //返回:         如果相同返回1,如果不同返回0
 104          //创建时间:2008-12-25          修改时间:
 105          //创建人员:                    修改人员:
 106          //===============================================================================================
 107          unsigned char judgeTCPSame()
 108          {
 109                  unsigned char data luc_len,luc_xordata;
 110                  unsigned char data luc_temp,luc_i;
 111                  luc_len = RsBuf[4];                                                                                                                     //获取数据长度
 112                  luc_xordata = RsBuf[4+luc_len+1];                                                                                       //获取校验值
 113                  luc_temp = RsBuf[0]^RsBuf[1]^RsBuf[2]^RsBuf[3]^RsBuf[4];                                        //异或协议值区
 114                  for(luc_i = 0 ; luc_i < luc_len ;luc_i ++)                                                                      //异或数据区
 115                  {
 116                          luc_temp = RsBuf[5+luc_i]^luc_temp;
 117                  }
C51 COMPILER V7.06   DVS_COMPROTOC                                                         02/27/2009 15:46:10 PAGE 3   

 118                  if((luc_xordata==luc_temp )&&(RsBuf[2]==0)&&(RsBuf[3]==1))      return 1;               //如果相同则返回1
 119                  else
 120                  {
 121                  //      luc_len = 0x02;                                                                                                                 //返回参数的数据长度错误
 122                  //      RxTCPSame(RsBuf[1],1,&luc_len);
 123                          return 0 ;                                                                                                                              //否则返回0
 124                  }
 125          }
 126          */
 127          
 128          
 129          
 130          //===============================================================================================
 131          //语法格式: SetComPhone()       
 132          //实现功能: 设置串口电话号码
 133          //参数:         无
 134          //返回:         无
 135          //创建时间:2008-12-26          修改时间:
 136          //创建人员:                    修改人员:
 137          //===============================================================================================
 138          void SetComPhone()
 139          {
 140   1              unsigned char data luc_Phone_nub;
 141   1              unsigned char data luc_temp;
 142   1              unsigned char data luc_i;
 143   1              bit luc_BitOk;
 144   1              luc_Phone_nub = RsBuf[5];                                                                                                               //获取电话组数
 145   1              luc_temp = RsBuf[0]^RsBuf[1]^RsBuf[2]^RsBuf[3]^RsBuf[4]^RsBuf[5];
 146   1      
 147   1      
 148   1      
 149   1              for(luc_i = 0 ; luc_i < RsBuf[4]-1; luc_i ++)
 150   1              {
 151   2                      if((RsBuf[luc_i+6])<13) luc_BitOk = 1; 

⌨️ 快捷键说明

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