📄 czx167-145-v2.2.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 + -