rfserver.lst
来自「MCS51的实现无线接收发送(315M或433M)源程序代码。」· LST 代码 · 共 1,348 行 · 第 1/5 页
LST
1,348 行
C51 COMPILER V7.50 RFSERVER 05/12/2006 19:00:38 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE RFSERVER
OBJECT MODULE PLACED IN .\RfServer.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\RfServer.c OPTIMIZE(4,SPEED) REGFILE(.\RfCtrl.ORC) ORDER DEBUG OBJECTEXTEND CODE SYM
-BOLS NOCOND PAGEWIDTH(132) PAGELENGTH(1000) OBJECT(.\RfServer.obj)
line level source
1 /**********************************************************
2 * RfServer.c *
3 **********************************************************/
4 #define RFSERVER_GLOBALS
5 //=========================================================
6 #include "Os\Sm5964.h"
7 #include "Os\Struct.h"
8 #include "Os\Hardware.h"
9 #include "Os\Uart.h"
10 #include "Os\Tools.h"
11 #include "Os\Error.h"
12 #include "Os\OS.h"
13 #include "Os\TmrTsk.h"
14 #include "Os\TskMan.h"
15 #include "Os\Tmr2.h"
16 #include "Os\Int01.h"
17 #include "Config.h"
18 #include "ApplyStruct.h"
19 #include "RfServer.h"
20 //=========================================================
21 #define DEBUG_RFSERVER 1
22 //=========================================================
23 #define RFRECVDATABUFLEN 20
24 #define RFSENDDATABUFLEN 20
25 //=========================================================
26 #define FLAG1 0XFF
27 #define FLAG2 0XFE
28 //=========================================================
29 #define HOST 0X01
30 #define SOSS 0X02
31 #define AMU 0X03
32 //=========================================================
33 #define IDSERIALLEN 4
34 //=========================================================
35 #define ADDR_IDENTITY 0X8000
36 #define ADDR_ID_SERIAL 0X8001
37 #define ADDR_AMU_NUM 0X8010
38 #define ADDR_HOST 0X8020
39 //=========================================================
40 #define AMUNORECV 18
41 //=========================================================
42 static INT8UX AmuNum,AmuNoRecvCnt,Status;
43 static INT8UX AmuData[10][5];
44 static INT8UX LoopIndex;
45 static INT8UX CurRecvIdSerial[IDSERIALLEN];
46
47 static INT8UX RfRecvDataBuf[RFRECVDATABUFLEN];
48 static INT8UX RfRecvDataLen;
49 static INT8UX RfSendDataBuf[RFSENDDATABUFLEN];
50 static INT8UX RfSendDataLen;
51 //=========================================================
52 static void RfServerTmrProc(void)
53 {
54 1 INT8U Identity;
55 1
56 1 #if DEBUG_RFSERVER
57 1 //MDebugStrLF((INT8UC *)"RfServerTmrProc()");
58 1 #endif
59 1
60 1 Identity=RdRom(ADDR_IDENTITY);
61 1 if(Identity==HOST)
62 1 {
63 2 if(LoopIndex<AmuNum)
64 2 {
65 3 AmuData[LoopIndex][4]=3; //处于通讯失败
66 3
67 3 RfSendDataLen=0;
68 3 RfSendDataBuf[RfSendDataLen++]=FLAG1;
69 3 MovXX(RfSendDataBuf+RfSendDataLen,AmuData[LoopIndex],IDSERIALLEN);
70 3 RfSendDataLen+=IDSERIALLEN;
71 3 MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
72 3 RfSendDataLen+=IDSERIALLEN;
73 3 RfSendDataBuf[RfSendDataLen++]=0X01;
74 3 RfSendDataBuf[RfSendDataLen++]=Status;
75 3 RfSendDataBuf[RfSendDataLen++]=GetChkSum(RfSendDataBuf+1,RfSendDataLen-1);
76 3 RfSendDataBuf[RfSendDataLen++]=FLAG2;
77 3 #if DEBUG_RFSERVER
78 3 MDebugExMemHex(RfSendDataBuf,RfSendDataLen);
79 3 #endif
80 3 RfSend(RfSendDataBuf,RfSendDataLen);
81 3 }
82 2 if(++LoopIndex>=AmuNum) LoopIndex=0;
83 2 StartTmr(RFSERVERTMRID,SECOND5);
84 2 }
85 1 else if(Identity==AMU)
86 1 {
87 2 if(Status==0x40)
88 2 {
89 3 RfSendDataLen=0;
90 3 RfSendDataBuf[RfSendDataLen++]=FLAG1;
91 3 MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_HOST,IDSERIALLEN);
92 3 RfSendDataLen+=IDSERIALLEN;
93 3 MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
94 3 RfSendDataLen+=IDSERIALLEN;
95 3 RfSendDataBuf[RfSendDataLen++]=0X02;
96 3 RfSendDataBuf[RfSendDataLen++]=Status;
97 3 RfSendDataBuf[RfSendDataLen++]=GetChkSum(RfSendDataBuf+1,RfSendDataLen-1);
98 3 RfSendDataBuf[RfSendDataLen++]=FLAG2;
99 3 #if DEBUG_RFSERVER
100 3 MDebugStrLF((INT8UC *)"求救");
101 3 MDebugExMemHex(RfSendDataBuf,RfSendDataLen);
102 3 #endif
103 3 RfSend(RfSendDataBuf,RfSendDataLen);
104 3
105 3 StartTmr(RFSERVERTMRID,SECOND10);
106 3 }
107 2 }
108 1 else if(Identity==SOSS)
109 1 {
110 2 RfSend(RfSendDataBuf,RfSendDataLen);
111 2 }
112 1
113 1 }
114 //=========================================================
115 void InitRfServerTsk(void)
116 {
117 1 INT8U Identity;
118 1
119 1 #if DEBUG_RFSERVER
120 1 MDebugStrLF((INT8UC *)"InitRfServerTsk()");
121 1 #endif
122 1
123 1 Identity=RdRom(ADDR_IDENTITY);
124 1
125 1 #if DEBUG_RFSERVER
126 1 MDebugPara("身份:",Identity);
127 1 MDebugCodeHex((INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
128 1 #endif
129 1
130 1 if(Identity==HOST)
131 1 {
132 2 Status=0;
133 2 LoopIndex=0;
134 2 AmuNum=0;
135 2 //AmuNum=RdRom(ADDR_AMU_NUM);
136 2 //MovCX((INT8UX *)AmuData,(INT8UC *)(ADDR_AMU_NUM+1),AmuNum*5);
137 2
138 2 #if DEBUG_RFSERVER
139 2 MDebugPara("AmuNum:",AmuNum);
140 2 //MDebugExMemHex((INT8UX *)AmuData,AmuNum*5);
141 2 #endif
142 2
143 2 InstallTmr(RFSERVERTMRID,RfServerTmrProc);
144 2 StartTmr(RFSERVERTMRID,SECOND5);
145 2 }
146 1 else if(Identity==SOSS)
147 1 {
148 2 InstallTmr(RFSERVERTMRID,RfServerTmrProc);
149 2 }
150 1 else if(Identity==AMU)
151 1 {
152 2 Status=0;
153 2 AmuNoRecvCnt=0;
154 2 InstallTmr(RFSERVERTMRID,RfServerTmrProc);
155 2 StartTmr(RFSERVERTMRID,SECOND5);
156 2 }
157 1 }
158 //=========================================================
159 void RfServerTskEntry(void)
160 {
161 1 #if DEBUG_RFSERVER
162 1 MDebugStrLF((INT8UC *)"RfServerTskEntry()");
163 1 #endif
164 1 }
165 //=========================================================
166 static void HdlRfFrame(void)
167 {
168 1 INT8U i,Identity,*Data;
169 1
170 1 #if DEBUG_RFSERVER
171 1 //MDebugStrLF((INT8UC *)"HdlRfFrame()");
172 1 //MDebugExMemHex(RfRecvDataBuf,RfRecvDataLen);
173 1 #endif
174 1
175 1 Identity=RdRom(ADDR_IDENTITY);
176 1 if(Identity==AMU)
177 1 {
178 2 if(CmpXCString(RfRecvDataBuf+1,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN)!=STR_EQUAL)
179 2 {
180 3 #if DEBUG_RFSERVER
181 3 //MDebugStrLF((INT8UC *)"不是我的ID");
182 3 #endif
183 3 return;
184 3 }
185 2 if(CmpXCString(RfRecvDataBuf+1+IDSERIALLEN,(INT8UC *)ADDR_HOST,IDSERIALLEN)!=STR_EQUAL)
186 2 {
187 3 #if DEBUG_RFSERVER
188 3 //MDebugStrLF((INT8UC *)"不是我的中心");
189 3 #endif
190 3 return;
191 3 }
192 2 #if DEBUG_RFSERVER
193 2 //MDebugExMemHex(RfRecvDataBuf,RfRecvDataLen);
194 2 #endif
195 2 Data=(INT8U *)(RfRecvDataBuf+1+IDSERIALLEN+IDSERIALLEN);
196 2 switch(*Data)
197 2 {
198 3 case 0x01:
199 3 AmuNoRecvCnt=0;
200 3
201 3 Status=*(Data+1);
202 3 if(Status==0x40)
203 3 {
204 4 #if DEBUG_RFSERVER
205 4 MDebugStrLF((INT8UC *)"HST触发报警");
206 4 #endif
207 4 }
208 3 else
209 3 {
210 4 #if DEBUG_RFSERVER
211 4 MDebugStrLF((INT8UC *)"HST查询状况");
212 4 #endif
213 4 }
214 3
215 3 RfSendDataLen=0;
216 3 RfSendDataBuf[RfSendDataLen++]=FLAG1;
217 3 MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_HOST,IDSERIALLEN);
218 3 RfSendDataLen+=IDSERIALLEN;
219 3 MovCX(RfSendDataBuf+RfSendDataLen,(INT8UC *)ADDR_ID_SERIAL,IDSERIALLEN);
220 3 RfSendDataLen+=IDSERIALLEN;
221 3 RfSendDataBuf[RfSendDataLen++]=0X81;
222 3 RfSendDataBuf[RfSendDataLen++]=Status;
223 3 RfSendDataBuf[RfSendDataLen++]=GetChkSum(RfSendDataBuf+1,RfSendDataLen-1);
224 3 RfSendDataBuf[RfSendDataLen++]=FLAG2;
225 3 #if DEBUG_RFSERVER
226 3 MDebugExMemHex(RfSendDataBuf,RfSendDataLen);
227 3 #endif
228 3 RfSend(RfSendDataBuf,RfSendDataLen);
229 3 break;
230 3
231 3 case 0xc0:
232 3 #if DEBUG_RFSERVER
233 3 MDebugStrLF((INT8UC *)"收到SOSS报警应答");
234 3 #endif
235 3
236 3 break;
237 3 }
238 2 }
239 1
240 1 else if(Identity==SOSS)
241 1 {
242 2 #if DEBUG_RFSERVER
243 2 //MDebugExMemHex(RfRecvDataBuf,RfRecvDataLen);
244 2 #endif
245 2 Data=(INT8U *)(RfRecvDataBuf+1+IDSERIALLEN+IDSERIALLEN);
246 2 if((*Data==0x02)&&(*(Data+1)==0x40))
247 2 {
248 3 #if DEBUG_RFSERVER
249 3 MDebugStrLF((INT8UC *)"收到求救信号");
250 3 #endif
251 3
252 3 UartSendLen=0;
253 3 UartSendBuf[UartSendLen++]=0X7F;
254 3 UartSendBuf[UartSendLen++]=6;
255 3 UartSendBuf[UartSendLen++]=0X0F;
256 3 MovXX(UartSendBuf+UartSendLen,RfRecvDataBuf+1+IDSERIALLEN,IDSERIALLEN);
257 3 UartSendLen+=IDSERIALLEN;
258 3 UartSendBuf[UartSendLen++]=GetChkSum(UartSendBuf+2,UartSendLen-2);
259 3 #if DEBUG_RFSERVER
260 3 //MDebugExMemHex(UartSendBuf,UartSendLen);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?