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

📄 czx167-145-v2.2.lst

📁 代码实现了载波抄读电能表
💻 LST
字号:
C51 COMPILER V7.50   CZX167_145_V2_2                                                       03/05/2008 10:04:29 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CZX167_145_V2_2
OBJECT MODULE PLACED IN CZX167-145-V2.2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CZX167-145-V2.2.c LARGE 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          #define  first_Son_addr      0x00             // 24空间2-4K
  53          #define  first_Son_addr_bak  0x80             // 24空间2-4K
  54          /****** I/O 口设置 ********/
  55          
C51 COMPILER V7.50   CZX167_145_V2_2                                                       03/05/2008 10:04:29 PAGE 2   

  56          //sbit led     = P1^1;                     // 24保存指示灯
  57          sbit  myled   = P0^4;                     //调试灯
  58          sbit  wp24    = P2^0;
  59          /////////////////////////////-----------------------------------
  60          sbit  key     = P0^3;
  61          sbit  RXD_TXD = P3^7;                   // 载波数据输入、输出口
  62          /////////////////////////////------------------------------------
  63          sbit S_Clk      = P2^1;                     // FM24C04的时钟口
  64          sbit S_Dat      = P1^5;                     // FM24C04的数据口
  65          
  66          //sbit  psk_out = P1^7;
  67          
  68          
  69          // 位变量
  70          uchar bdata pl_data;    //发送载波数据移位使用
  71          sbit  pl_h = pl_data^7;
  72          uchar bdata BIT_BIT;    //
  73          sbit  r_x  = BIT_BIT^1;
  74          sbit  r_d  = BIT_BIT^2; 
  75          uchar bdata  Flag_Byte;                     // 位变量字节
  76          sbit FM24_Bit=Flag_Byte^0;                         // FM24C04 的数据位(SDA)
  77          
  78          //***载波通讯使用变量*****
  79          uchar data pl_8;        //发送位数计数器
  80          
  81          uchar data plret_l;     //载波发送复位计数器
  82          uint  data   x_09af;    //接收同步头
  83          uchar data   r_data;    //接收载波数据移位使用
  84          uchar data   r_8;       //接收位数计数器
  85          uchar data   r_len;     //载波接收字节计数器
  86          uchar data   r_len1;    //载波要接收的数据长度(字节数)
  87          
  88          /******* 全局变量设置 ******/
  89          uchar data   Watchdog_Reset;        // 复位看门狗标志:为0x9A时,可以复位看门狗.
  90          uchar data   Timer_RS_Answer;               // RS485应答时间
  91          uchar data   Timer_HW;                      // 红外发射/接收定时器
  92          uchar data   Timer_RS;                      // 485发射/接收定时器
  93          uchar data   Timer_Disp;                    // 显示时间间隔定时器(nx1S定时)
  94          uchar data   Timer_Disp_Temp;               // 显示时间间隔定时器(1S定时)
  95          uchar data   Disp_Pointer;                  // 显示内容指针
  96          uchar data   ZJ_SEND;                       // 中继下发标志
  97          uchar data   space_judge1;
  98          uchar data   space_judge2;
  99          uchar data   space_judge3;
 100          uchar data   HW_Re_OK;                  // 红外接收状态标志: "OK"=接收正确,  "End"=接收数据处理完毕
 101          uchar data   ZB_Re_OK;                  // 载波接收状态标志: "OK"=接收正确,  "ERR"=接收数据处理完毕
 102          uchar data   RS_Re_OK;                  // 485接收状态标志:  "OK"=接收正确,  "ERR"=接收数据处理完毕
 103          uchar data   HW_ZB;                         // 红外/载波状态标志:"HW"=红外接收 ;"ZB"=载波接收
 104          uchar data   RS485_Txd_OK;                  // RS485发送状态标志: "OK"=数据准备好,  "End"=数据发送结束
 105          uchar data   HW_State;                  // 红外接收过程标志
 106          uchar data   ZB_Read_Time;              // 载波读时间标志:
 107          uchar data   RS485_Send_Sign;
 108          uchar data   HW_Pointer;                    // 红外BUF数据指针
 109          uchar data   HW_Data_Len;                   // 红外规约中数据部分的长度
 110          uchar data   HW_Data_CRC;                   // 红外规约中的校验和
 111          uchar data   RS485_Pointer;                 // RS485 BUF数据指针
 112          uchar data   RS485_Data_Len;                // RS485 规约中数据部分的长度
 113          uchar data   ZB_Txd_Len;                    // 载波发送数据长度
 114          uchar data   ZB_Glob_Len;                   // 载波全局发送数据长度                                 
 115          uchar xdata  Infrared_buf[30];              // Com0中断所接收的数据(红外数据)
 116          uchar xdata  Carrier_buf[50];               // 载波中断所接收的数据(载波数据)
 117          uchar xdata  RS485_buf[40];                 // Com1中断所接收的数据(RS485数据)
C51 COMPILER V7.50   CZX167_145_V2_2                                                       03/05/2008 10:04:29 PAGE 3   

 118          uchar xdata  Infrared_buf_bak[30];          // Com0中断所接收的数据(红外数据)备份
 119          uchar xdata  Carrier_buf_bak[50];           // 载波中断所接收的数据(载波数据)备份
 120          uchar xdata  RS485_buf_bak[30];             // Com1中断所接收的数据(RS485数据)备份
 121          uchar xdata  Send_Infrared_buf[30];         // Com0中断所发射的数据(红外数据)
 122          uchar xdata  Send_Carrier_buf[50];          // 载波中断所发射的数据(载波数据)
 123          uchar xdata  Send_RS485_buf[30];            // Com1中断所发射的数据(RS485数据)
 124          uchar xdata  Send_RS485_buf0[30];            // 读写电表所发射的数据(RS485数据)
 125          uchar xdata  Add_buf[7];                    // 当前电表地址(通讯用)
 126          uchar xdata  Read_buf[8];                   // 读取FM24时用的中间缓冲区
 127          uchar xdata  Write_buf[8];                  // 写入FM24时用的中间缓冲区
 128          uchar xdata  terminal_add[7];               // 终端表号
 129          uchar xdata  addr_checked[7];               // 自动寻表时组帧用地址
 130          uchar xdata  new_addr_checked[6];           // 载波接收到的新表地址
 131          uchar xdata  new_meter_Txd;
 132          uchar xdata  new_meter_flag;                // 载波通讯中发现新表的标志
 133          uchar xdata  flag_byte_No;                  // 自动寻表时按地址的低位到高位的顺序依次查询,flag_byte_No是

⌨️ 快捷键说明

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