📄 zb.lst
字号:
C51 COMPILER V8.08 ZB 02/17/2009 12:58:31 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE ZB
OBJECT MODULE PLACED IN zb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE zb.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #define ZB_GLOBALS
2
3
4
5 #include "includes.h"
6
7
8
9 /****************************变量定义*****************************/
10 static data INT8U ZB_BitCnt; /*位计数*/
11 static data INT8U ZB_ByteCnt; /*字节计数*/
12
13 static data INT8U ZB_GetSyncFlag; /*接受同步头标志*/
14 static data INT8U ZB_GetDatFlag; /*接受数据内容标志*/
15 static data INT8U ZB_GetSuccessFlag; /*接收一字节数据成功标志*/
16
17 static data INT8U ZB_HeadDatLen; /*同步头长度*/
18
19 static data INT16U ZB_HeadDat; /*同步头数据*/
20 static data INT8U ZB_SendByte; /*要发送的字节数据*/
21 static data INT8U ZB_RcvByte; /*接收到的字节数据*/
22
23 Com ZB_Com; /*通讯使用结构*/
24
25
26
27 /****************************本地函数定义*************************/
28 static void ZB_Tx (void);
29 static void ZB_Rx (void);
30
31
32
33 /****************************全局函数*****************************/
34 ZB_EXT void ZB_ParaInit (void)
35 /*===============================================
36 函数名: ZB_ParaInit
37 功能 : 载波功能参数初始化
38 输入 : 无
39 输出 : 无
40 ===============================================*/
41 {
42 1 ZB_BitCnt = 0;
43 1 ZB_ByteCnt = 0;
44 1
45 1 ZB_GetSyncFlag = 1;/*接收头标志*/
46 1 ZB_GetDatFlag = 0;
47 1 ZB_GetSuccessFlag = 0;
48 1
49 1 ZB_HeadDatLen = 0;
50 1
51 1 ZB_HeadDat = 0;
52 1 ZB_SendByte = 0;
53 1 ZB_RcvByte = 0;
54 1
55 1 ZB_MaxLen = 0;
C51 COMPILER V8.08 ZB 02/17/2009 12:58:31 PAGE 2
56 1 }
57
58
59
60
61 ZB_EXT void ZB_Course (void)
62 /*===============================================
63 函数名 : ZB_Course
64 功能 : 载波主流程
65 输入 : 无
66 输出 : 无
67 ===============================================*/
68 {
69 1
70 1 if (ZB_SendFlag){
71 2 ZB_SendFlag = 0;
72 2
73 2 PLM_RST = 0xa2;
74 2
75 2 PLM_RS = 1;/*转发送*/
76 2
77 2 }
78 1 }
79
80
81
82 /****************************本地函数*****************************/
83 void ZB_Int (void) interrupt 7
84 /*===============================================
85 函数名 : ZB_Int
86 功能 : 载波同步中断
87 输入 : 无
88 输出 : 无
89 ===============================================*/
90 {
91 1 if (1 == PLM_RS){
92 2 ZB_Tx();
93 2 }else{
94 2 ZB_Rx();
95 2 }
96 1 }
97
98
99
100 static void ZB_Tx (void)
101 /*===============================================
102 函数名 : ZB_Tx
103 功能 : 载波发送数据
104 输入 : 无
105 输出 : 无
106 ===============================================*/
107 {
108 1 if (0 == ZB_BitCnt){ /*取数据*/
109 2
110 2 switch (ZB_Com.TxPhase){
111 3
112 3 case 0:
113 3
114 3 ZB_SendByte = 0xff;
115 3 ZB_HeadDatLen ++;
116 3 if (6 == ZB_HeadDatLen){
117 4 ZB_HeadDatLen = 0;
C51 COMPILER V8.08 ZB 02/17/2009 12:58:31 PAGE 3
118 4 ZB_Com.TxPhase = 1;
119 4 }
120 3 break;
121 3
122 3
123 3 case 1:
124 3 LED_ZB = 0; /*开载波发送指示灯*/
125 3
126 3 ZB_SendByte = 0x09;
127 3 ZB_Com.TxPhase = 2;
128 3 break;
129 3
130 3
131 3 case 2: /*前3部分都是发送同步头,和数据无关*/
132 3
133 3 ZB_SendByte = 0xaf;
134 3 ZB_Com.TxPhase = 3;
135 3 break;
136 3
137 3
138 3 case 3: /*发整条帧*/
139 3
140 3 ZB_SendByte = COM_DatBuf[ZB_ByteCnt++];
141 3 if (ZB_ByteCnt == ZB_MaxLen){
142 4 ZB_ByteCnt = 0;
143 4 ZB_MaxLen = 0;
144 4 ZB_Com.TxPhase = 4;
145 4 }
146 3 break;
147 3
148 3
149 3 case 4: /*多发一字节,保证发送完整*/
150 3
151 3 ZB_SendByte = 0;
152 3 ZB_Com.TxPhase = 0;
153 3 ZB_Com.TxEnd = 1;
154 3 break;
155 3
156 3
157 3 default:
158 3 break;
159 3
160 3 }
161 2 }
162 1
163 1 PLM_RS = 1; /*启动发送*/
164 1 PLM_RST = 0xa2; /*防止发送时间过长,进入复位*/
165 1
166 1 if (ZB_BitCnt <8){ /*从高位到低位发送数据*/
167 2 if ((ZB_SendByte<<ZB_BitCnt) & 0x80){
168 3 ZB_RS = 1;
169 3 }else{
170 3 ZB_RS = 0;
171 3 }
172 2
173 2 ZB_BitCnt ++;
174 2 if (8 == ZB_BitCnt){ /*一个字节数据发送完成*/
175 3 ZB_BitCnt = 0;
176 3
177 3 if (1 == ZB_Com.TxEnd){ /*数据发送完成*/
178 4 ZB_Com.TxEnd = 0;
179 4
C51 COMPILER V8.08 ZB 02/17/2009 12:58:31 PAGE 4
180 4 LED_ZB = 1; /*关载波发送指示灯*/
181 4
182 4 PLM_RS = 0; /*转接收*/
183 4 }
184 3 }
185 2 }
186 1 }
187
188
189
190 static void ZB_Rx (void)
191 /*===============================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -