📄 czx167-v202.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 + -