📄 code.lst
字号:
200 1 {
201 2
202 2 //=====================等待NRF905接收
203 2
204 2 if (r_flag && DR) // Ifr recive data ready...
205 2 {//Delay(500);
206 3 //if(DR)
207 3 //retest=1;
208 3 retest=1;
209 3 r_flag=0;
210 3 retrieving_flag=1;
211 3 RxPacket(); // ... recive data
212 3 fir_dis = RxBuf[1]; //jsq++;
213 3 sec_dis = RxBuf[2];
214 3 thi_dis = RxBuf[3];
215 3 for_dis = jsq;if (jsq<15)jsq++; else jsq=0;
216 3
217 3 /* Delay(10000);
218 3 Delay(10000);
219 3 Delay(10000);
220 3 retest=0;
221 3 Resend(); */
222 3
223 3 // Config905();
224 3 SetRxMode();
225 3 // Delay(1000);
226 3 retrieving_flag=0;
227 3 r_flag=1;
228 3
229 3 }
230 2
231 2
232 2 if(ready2send||time_up)
233 2 {
234 3 SetTxMode();
235 3
236 3 Delay(100);
237 3
238 3 TxPacket();
239 3 SetRxMode();
240 3 ready2send=0;
C51 COMPILER V7.50 CODE 06/25/2004 19:21:10 PAGE 5
241 3 time_up=0;
242 3 } //=====================
243 2
244 2
245 2 }
246 1 }
247
248 /*******************************************************************************************/
249
250 /*******************************************************************************************/
251 //function Config905();
252 /*******************************************************************************************/
253 void Config905(void)
254 {
255 1 uchar i,flag=1;
256 1 CSN=0; PB8255=PB; // Spi enable for write a spi command
257 1 SpiWrite(WC); // Write config command写放配置命令
258 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
259 1 {
260 2 SpiWrite(RxTxConf.buf[i]);
261 2 }
262 1 CSN=1; PB8255=PB; // Disable Spi
263 1
264 1
265 1
266 1 CSN=0;PB8255=PB;
267 1 SpiWrite(RC);
268 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
269 1 {
270 2 temp.buf[i]=SpiRead();
271 2 }
272 1 CSN=1; PB8255=PB;
273 1 for(i=0;i<RxTxConf.n;i++)
274 1 {
275 2 if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
276 2 }
277 1 fir_dis=flag;
278 1 if(flag!=11)
279 1 Config905();
280 1 }
281
282 /*******************************************************************************************/
283 void FixConfig(void) //fix the configuration command if it goes wrong
284 {
285 1 uchar i,flag=1;
286 1 TRX_CE=0;PB8255=PB;Delay(100);
287 1 CSN=0; PB8255=PB;
288 1 SpiWrite(RC);
289 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
290 1 {
291 2 temp.buf[i]=SpiRead();
292 2 }
293 1 CSN=1; PB8255=PB;
294 1 for(i=0;i<RxTxConf.n;i++)
295 1 {
296 2 if ( temp.buf[i] == RxTxConf.buf[i]) flag++;
297 2 }
298 1 if (flag!=(RxTxConf.n+1))
299 1 {
300 2 for_dis=10;
301 2
302 2 TRX_CE=0;PB8255=PB;Delay(100);
C51 COMPILER V7.50 CODE 06/25/2004 19:21:10 PAGE 6
303 2
304 2 Config905();
305 2
306 2
307 2 }
308 1 }
309 /*******************************************************************************************/
310
311 //function SpiWrite();
312
313 /*******************************************************************************************/
314 //function TxPacket();
315 /*******************************************************************************************/
316 void TxPacket(void)
317 {
318 1 uchar i;
319 1 TRX_CE=0;
320 1 //Config905();
321 1 CSN=0; PB8255=PB; // Spi enable for write a spi command
322 1 SpiWrite(WTP); // Write payload command
323 1 for (i=0;i<SB;i++)
324 1 {
325 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
326 2 }
327 1 CSN=1; PB8255=PB; // Spi disable
328 1 Delay(1);
329 1 CSN=0; PB8255=PB; // Spi enable for write a spi command
330 1 SpiWrite(WTA); // Write address command
331 1 for (i=0;i<(RxTxConf.n-6);i++) // Write 4 bytes address
332 1 {
333 2 SpiWrite(RxTxConf.buf[i+5]);
334 2 }
335 1 CSN=1; // Spi disable
336 1 TRX_CE=1; PB8255=PB; // Set TRX_CE high,start Tx data transmission
337 1 Delay(1000); // while (DR!=1);
338 1 TRX_CE=0; PB8255=PB; // Set TRX_CE low
339 1 }
340 /*******************************************************************************************/
341 //function RxPacket();
342 /*******************************************************************************************/
343 void RxPacket(void)
344 {
345 1 uchar i;
346 1 TRX_CE=0; PB8255=PB; // Set nRF905 in standby mode
347 1 Delay(100);
348 1 CSN=0; PB8255=PB; // Spi enable for write a spi command
349 1 SpiWrite(RRP); // Read payload command
350 1 for (i=0;i<SB;i++)
351 1 {
352 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
353 2 }
354 1 CSN=1; PB8255=PB; // Disable spi
355 1 while(DR||AM) _nop_();
356 1 //P0= RxBuf[0]; // Buffer[0] output from P0 port...
357 1 TRX_CE=1; PB8255=PB;
358 1 /* if (!(RxBuf[0]==0&&RxBuf[1]==0) )
359 1 for (i=0;i<SB;i++)
360 1 {
361 1 TmpBuf[i]=RxBuf[i]; // Read data and save to buffer
362 1 } */
363 1 //xx=(RxBuf[0]>>4)&0x0f;
364 1 for (i=0;i<SB;i++) TxData(RxBuf[i]);
C51 COMPILER V7.50 CODE 06/25/2004 19:21:10 PAGE 7
365 1
366 1 }
367 /*******************************************************************************************/
368 //function SetTxMode();
369 /*******************************************************************************************/
370 void SetTxMode(void)
371 {
372 1 TX_EN=1;
373 1 TRX_CE=0; PB8255=PB;
374 1 Delay(100); // delay for mode change(>=650us)
375 1 r_flag=0;
376 1 }
377 /*******************************************************************************************/
378 //function SetRxMode();
379 /*******************************************************************************************/
380 void SetRxMode(void)
381 {
382 1
383 1 TRX_CE=0; PB8255=PB;
384 1 Delay(100);
385 1 Config905();
386 1 //FixConfig();
387 1 Delay(100);
388 1 TX_EN=0;
389 1 TRX_CE=1; PB8255=PB;
390 1 Delay(100); // delay for mode change(>=650us)
391 1 r_flag=1;
392 1
393 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1411 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = 96 ----
PDATA SIZE = ---- ----
DATA SIZE = 34 1
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -