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