📄 nrf905.lst
字号:
203 3 {
204 4 //Model_0ne();
205 4 TxBuf[0]=0x11;
206 4 SetTxMode(); // Set Tx Mode
207 4 TxPacket(); // Transmit Tx buffer data
208 4 TxBuf[0] = '\0';
209 4 SetRxMode();
210 4 }
211 3 while(Key1==0);
212 3 }
213 2
214 2 if (Key2==0) //温度键
215 2 {
216 3 delays();
217 3 if (Key2==0)
218 3 {
219 4 //Model_Two();
220 4 TxBuf[0]=0x02;
221 4 SetTxMode(); // Set Tx Mode
222 4 TxPacket(); // Transmit Tx buffer data
223 4 TxBuf[0] = '\0';
224 4 SetRxMode();
225 4 }
226 3 while(Key2==0);
227 3 }
228 2
229 2
230 2 //=====================等待NRF905接收
231 2 if (DR)
232 2 { // If recive data ready...
233 3 RxPacket(); // ... recive data
234 3 //print_Str(RxBuf);
235 3
236 3 DisplayListChar_code(0,0,displayLCD);
237 3 DisplayOneChar(0,1, RxBuf[0] +'0');
238 3 //print_Char(RxBuf[0]+'0');
239 3 //print_Char(RxBuf[1]+'0');
240 3
241 3 DisplayOneChar(1,1, RxBuf[1] +'0');
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 5
242 3 DisplayOneChar(2,1, '.');
243 3 DisplayOneChar(3,1, RxBuf[2] +'0');
244 3 DisplayOneChar(4,1, RxBuf[3] +'0');
245 3
246 3 RxBuf[0]='\0';
247 3 }
248 2
249 2
250 2
251 2
252 2 if (RxWriteIndex>0)
253 2 {
254 3
255 3 print_Str(TxBuf);
256 3
257 3 SetTxMode(); // Set Tx Mode
258 3 TxPacket(); // Transmit Tx buffer data
259 3 TxBuf[0] = '\0';
260 3 for (ci=0; ci <32; ++ci)
261 3 {
262 4 TxBuf[ci] = '\0';
263 4 }
264 3
265 3 SetRxMode(); // Set nRF905 in Rx mode
266 3 RxWriteIndex = 0;
267 3
268 3 }
269 2
270 2 }
271 1
272 1 }
273 /*******************************************************************************************/
274 /*******************************************************************************************/
275 //function Config905();
276 /*******************************************************************************************/
277 void Config905(void)
278 {
279 1 uchar i;
280 1 CSN=0; // Spi enable for write a spi command
281 1 SpiWrite(WC); // Write config command写放配置命令
282 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
283 1 {
284 2 SpiWrite(RxTxConf.buf[i]);
285 2 }
286 1 CSN=1; // Disable Spi
287 1 }
288 /*******************************************************************************************/
289 //function SpiWrite();
290 /*******************************************************************************************/
291 void SpiWrite(uchar byte)
292 {
293 1 uchar i;
294 1 DATA_BUF=byte; // Put function's parameter into a bdata variable
295 1 for (i=0;i<8;i++) // Setup byte circulation bits
296 1 {
297 2
298 2 if (flag) // Put DATA_BUF.7 on data line
299 2 MOSI=1;
300 2 else
301 2 MOSI=0;
302 2 SCK=1; // Set clock line high
303 2 DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 6
304 2 SCK=0; // Set clock line low
305 2 }
306 1 }
307 /*******************************************************************************************/
308 //function SpiRead();
309 /*******************************************************************************************/
310 uchar SpiRead(void)
311 {
312 1 uchar i;
313 1 for (i=0;i<8;i++) // Setup byte circulation bits
314 1 {
315 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
316 2 SCK=1; // Set clock line high
317 2 if (MISO)
318 2 flag1=1; // Read data
319 2 else
320 2 flag1=0;
321 2
322 2
323 2 SCK=0; // Set clock line low
324 2 }
325 1 return DATA_BUF; // Return function parameter
326 1 }
327 /*******************************************************************************************/
328 //function TxPacket();
329 /*******************************************************************************************/
330 void TxPacket(void)
331 {
332 1 uchar i;
333 1 //Config905();
334 1 CSN=0; // Spi enable for write a spi command
335 1 SpiWrite(WTP); // Write payload command
336 1 for (i=0;i<32;i++)
337 1 {
338 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
339 2 }
340 1 CSN=1; // Spi disable
341 1 Delay(1);
342 1 CSN=0; // Spi enable for write a spi command
343 1 SpiWrite(WTA); // Write address command
344 1 for (i=0;i<4;i++) // Write 4 bytes address
345 1 {
346 2 SpiWrite(RxTxConf.buf[i+5]);
347 2 }
348 1 CSN=1; // Spi disable
349 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
350 1 Delay(1); // while (DR!=1);
351 1 TRX_CE=0; // Set TRX_CE low
352 1 }
353 /*******************************************************************************************/
354 //function RxPacket();
355 /*******************************************************************************************/
356 void RxPacket(void)
357 {
358 1 uchar i;
359 1 TRX_CE=0; // Set nRF905 in standby mode
360 1 CSN=0; // Spi enable for write a spi command
361 1 SpiWrite(RRP); // Read payload command
362 1 for (i=0;i<32;i++)
363 1 {
364 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
365 2 }
C51 COMPILER V8.05a NRF905 06/08/2008 19:08:31 PAGE 7
366 1 CSN=1; // Disable spi
367 1 while(DR||AM);
368 1 //P0= RxBuf[0]; // Buffer[0] output from P0 port...
369 1 TRX_CE=1;
370 1
371 1 }
372 /*******************************************************************************************/
373 //function SetTxMode();
374 /*******************************************************************************************/
375 void SetTxMode(void)
376 {
377 1 TX_EN=1;
378 1 TRX_CE=0;
379 1 Delay(1); // delay for mode change(>=650us)
380 1 }
381 /*******************************************************************************************/
382 //function SetRxMode();
383 /*******************************************************************************************/
384 void SetRxMode(void)
385 {
386 1 TX_EN=0;
387 1 TRX_CE=1;
388 1 Delay(1); // delay for mode change(>=650us)
389 1 }
390
391 void delays(void)
392 {
393 1 uchar i;
394 1
395 1 for (i=1800; i>0; --i);
396 1 }
397
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 638 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 71 2
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 + -