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

📄 czx167-v202.lst

📁 代码实现了载波抄读电能表
💻 LST
字号:
C51 COMPILER V7.09   CZX167_V202                                                           01/24/2008 08:27:32 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE CZX167_V202
OBJECT MODULE PLACED IN CZX167-V202.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CZX167-V202.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************************************/
   2          /*
   3          /*  Copyright (c) 2005,许继仪表股份有限公司
   4          /*
   5          /*  All Rights Reserved
   6          /*
   7          /*
   8          /*
   9          /*  文件名称:CZX165-145.C
  10          /*
  11          /*  文件标识:存档
  12          /*
  13          /*   摘    要:1、红外和载波通过485转发抄表控制程序
  14          /*            2、该项目包括文件:CZX167-145.c ; pl3105.h
  15          /*            3、CPU :PL3105
  16          /*            4、该程序仅适用于符合标准645协议485电能表或多功能表的抄读
  17          /*            5、载波信道CRC校验
  18          /*
  19          /*  功    能:0. 终端保存16个电表表号。
  20          /*            1. 接收到红外通讯后转RS485抄表。
  21          /*            2. 接收到载波通讯后转RS485抄表。
  22          /*            3. 自动查表,抄读电表时,若该电表是终端所管理的电表,则该终端能够将表号自动保存
  23          /*            4. 自动冻结功能,该终端能够根据设定的冻结时间将累计用电电量冻结 
  24          /*             
  25          /*  串口速率:1200BPS  偶校验
  26          /*
  27          /*  当前版本:2.02(发布)
  28          /*  作    者:王振举
  29          /*  完成日期:2006年07月04日
  30          /*
  31          /********************************************************************************************/
  32          
  33          #include "PL3105.h"
  34          
  35          #define uchar unsigned char
  36          #define uint  unsigned int
  37          //#include <INTRINS.H>
  38          
  39          #define  WR_24_COM  0xA2         /*24c04 读写命令字*/
  40          #define  RD_24_COM  0xA3
  41          
  42          //写24XX不同空间的地址指令
  43          #define  WR_2402    0xA0         // 24空间0-2K 不受保护的低半部分
  44          #define  WR_2404    0xA2         // 24空间2-4K 受保护的高半部分
  45          
  46          #define  add_password        0x10             // 24空间0-2K
  47          #define  add_password_bak    0x28             // 24空间0-2K
  48          #define  add_terminal        0x00             // 24空间0-2K
  49          #define  add_terminal_bak    0x18             // 24空间0-2K
  50          #define  add_frozenday       0x08             // 24空间0-2K
  51          #define  add_frozenday_bak   0x20             // 24空间0-2K
  52          
  53          /****** I/O 口设置 ********/
  54          
  55          //sbit led     = P1^0;                     // 24保存指示灯
C51 COMPILER V7.09   CZX167_V202                                                           01/24/2008 08:27:32 PAGE 2   

  56          
  57          sbit  wp24   = P3^3;
  58          sbit  bit_flag = P3^2;
  59          
  60          sbit S_Clk      = P1^5;                     // FM24C04的时钟口
  61          sbit S_Dat      = P1^6;                     // FM24C04的数据口
  62          
  63          sbit RXD_TXD = P3^7;                   // 载波数据输入、输出口
  64          // 位变量
  65          uchar bdata pl_data;    //发送载波数据移位使用
  66          sbit  pl_h = pl_data^7;
  67          uchar bdata BIT_BIT;    //
  68          sbit  r_x  = BIT_BIT^1;
  69          sbit  r_d  = BIT_BIT^2; 
  70          uchar bdata  Flag_Byte;                     // 位变量字节
  71          sbit FM24_Bit=Flag_Byte^0;                         // FM24C04 的数据位(SDA)
  72          
  73          //***载波通讯使用变量*****
  74          uchar data pl_8;        //发送位数计数器
  75          
  76          uchar data plret_l;     //载波发送复位计数器
  77          uint  data   x_09af;    //接收同步头
  78          uchar data   r_data;    //接收载波数据移位使用
  79          uchar data   r_8;       //接收位数计数器
  80          uchar data   r_len;     //载波接收字节计数器
  81          uchar data   r_len1;    //载波要接收的数据长度(字节数)
  82          
  83          /******* 全局变量设置 ******/
  84          uchar data   Watchdog_Reset;        // 复位看门狗标志:为0x9A时,可以复位看门狗.
  85          uchar data   Timer_RS_Answer;               // RS485应答时间
  86          
  87          
  88          uchar data   Timer_HW;                      // 红外发射/接收定时器
  89          
  90          uchar data   Timer_RS;                      // 485发射/接收定时器
  91          uchar data   Timer_Disp;                    // 显示时间间隔定时器(nx1S定时)
  92          uchar data   Timer_Disp_Temp;               // 显示时间间隔定时器(1S定时)
  93          uchar data   Disp_Pointer;                  // 显示内容指针
  94          //uchar data   Disp_A_D_T;                      // 显示地址还是时间标志
  95          
  96          uchar data   ZJ_SEND;                       // 中继下发标志
  97          uchar data   write_delay1;
  98          uchar data   write_delay2;
  99          uchar data   space_judge1;
 100          uchar data   space_judge2;
 101          uchar data   space_judge3;
 102          //uchar data   frozen_time;
 103          uchar data   HW_Re_OK;                      // 红外接收状态标志: "OK"=接收正确,  "ERR"=未接收到数据
 104          uchar data   ZB_Re_OK;                      // 载波接收状态标志: "OK"=接收正确,  "ERR"=未接收到数据
 105          uchar data   RS_Re_OK;                      // 485接收状态标志:  "OK"=接收正确,  "ERR"=未接收到数据
 106          uchar data   HW_ZB;                         // 红外/载波状态标志:"HW"=红外接收 ;"ZB"=载波接收
 107          uchar data   RS485_Txd_OK;                  // RS485发送状态标志: "OK"=数据准备好,  "ERR"=数据未准备好
 108          
 109          uchar data   HW_State;                      // 红外接收过程标志
 110          uchar data   RS485_State;                   // RS485接收过程标志
 111          uchar data   ZB_Read_Time;                  // 载波读时间标志:
 112          //uchar data   read_state_meter;          //载波读写数据时,需待状态字上传数据,故读写数据时分两帧下发,待
             -读写485表返回数据后,再抄读485表的状态字
 113          uchar data   RS485_Send_Sign;
 114          
 115          uchar data   HW_Pointer;                    // 红外BUF数据指针
 116          
C51 COMPILER V7.09   CZX167_V202                                                           01/24/2008 08:27:32 PAGE 3   

 117          uchar data   HW_Data_Len;                   // 红外规约中数据部分的长度
 118          uchar data   HW_Data_CRC;                   // 红外规约中的校验和
 119          
 120          uchar data   RS485_Pointer;                 // RS485 BUF数据指针
 121          
 122          uchar data   RS485_Data_Len;                // RS485 规约中数据部分的长度
 123          uchar data   RS485_Data_CRC;                // RS485 规约中的校验和
 124          
 125          uchar data   ZB_Txd_Len;                    // 载波发送数据长度
 126          uchar data   ZB_Glob_Len;                   // 载波全局发送数据长度
 127          //uchar  data    write_EEP_flag;                 //写EEPROM标志
 128          
 129          uchar data   NO_meter;                      //判断查表过程数据指针
 130          uchar data   how_time;                      ///发送次数
 131          //uchar data   check_frozen_flag;             //检查各电表是否已冻结标志
 132          //uchar data   frozen_pointer;                //读写冻结表底时电表指针
 133          //uchar data   zb_9010_1F;
 134          //uchar data   read_901F;          //
 135           
 136          uchar xdata    find_meter_flag;
 137          uchar xdata   find_meter_send;                   
 138          uchar xdata   judge_meter_send;                  
 139          uchar xdata  Infrared_buf[30];              // Com0中断所接收的数据(红外数据)
 140          uchar xdata  Carrier_buf[50];               // 载波中断所接收的数据(载波数据)
 141          uchar xdata  RS485_buf[30];                 // Com1中断所接收的数据(RS485数据)
 142          uchar xdata  Infrared_buf_bak[30];          // Com0中断所接收的数据(红外数据)备份
 143          uchar xdata  Carrier_buf_bak[50];           // 载波中断所接收的数据(载波数据)备份
 144          uchar xdata  RS485_buf_bak[30];             // Com1中断所接收的数据(RS485数据)备份
 145          
 146          uchar xdata  Send_Infrared_buf[30];         // Com0中断所发射的数据(红外数据)
 147          uchar xdata  Send_Carrier_buf[50];          // 载波中断所发射的数据(载波数据)
 148          uchar xdata  Send_RS485_buf[30];            // Com1中断所发射的数据(RS485数据)
 149          uchar xdata  Send_RS485_buf0[30];            // 读写电表所发射的数据(RS485数据)
 150          
 151          uchar xdata  Add_buf[7];                    // 当前电表地址(通讯用)
 152          uchar xdata  Read_buf[16];                   // 读取FM24时用的中间缓冲区
 153          uchar xdata  Write_buf[16];                  // 写入FM24时用的中间缓冲区
 154          //uchar xdata  frozen_485;                     //冻结电量出错时读485表标志
 155          uchar xdata  terminal_add[7];                    //终端表号
 156          //uchar xdata  frozenday[7];                    // 冻结日时
 157          uchar xdata  addr_checked[3];
 158          uchar xdata  ZJ_Add_buf[7];                 // 中继上传地址
 159          //uchar xdata  date[4];                       //当前日期
 160          //uchar xdata  time[3];                       //当前时间
 161          uchar xdata  Son_Add_buf[16][14];            // 子表号的电表地址       //前16块表号为终端所管理的16块表,

⌨️ 快捷键说明

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