📄 nrf905e.lst
字号:
207 3 SetTxMode(); // Set Tx Mode
208 3 TxPacket(); // Transmit Tx buffer data
209 3 TxBuf[0] = 0xff;
210 3 SetRxMode(); // Set nRF905 in Rx mode
211 3 tf=0;
212 3 Delay(500);
213 3 //P0=0xff;
214 3 WXW=1;
215 3 }
216 2
217 2
218 2
219 2 //=====================等待NRF905接收
220 2 if (DR) // If recive data ready...
221 2 RxPacket(); // ... recive data
222 2 //=====================从串口接收到数据
223 2 if (rsbrf!=0)
224 2 {
225 3 switch(rsbrf)
226 3 {
227 4 case '0':P0=0x3f;TxBuf[0]=0x3f;delayf=1;break;
228 4 case '1':P0=0x06;TxBuf[0]=0x06;delayf=1;break;
229 4 case '2':P0=0x5b;TxBuf[0]=0x5b;delayf=1;break;
230 4 case '3':P0=0x4f;TxBuf[0]=0x4f;delayf=1;break;
231 4 case '4':P0=0x66;TxBuf[0]=0x66;delayf=1;break;
232 4 case '5':P0=0x6d;TxBuf[0]=0x6d;delayf=1;break;
233 4 case '6':P0=0x7d;TxBuf[0]=0x7d;delayf=1;break;
234 4 case '7':P0=0x07;TxBuf[0]=0x07;delayf=1;break;
235 4 case '8':P0=0x7f;TxBuf[0]=0x7f;delayf=1;break;
236 4 case '9':P0=0x6f;TxBuf[0]=0x6f;delayf=1;break;
237 4 case 'A':P0=0x77;TxBuf[0]=0x77;delayf=1;break;
238 4 case 'B':P0=0x7c;TxBuf[0]=0x7c;delayf=1;break;
239 4 //default:P0=0xff;TxBuf[0]=0xff;
240 4 }
241 3 //====================NRF905发送串口接收到的相应的字符
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 5
242 3 if(TxBuf[0]!=0xff)
243 3 if(TxBuf[0]!=0x00)
244 3 {
245 4 SetTxMode(); // Set Tx Mode
246 4 TxPacket(); // Transmit Tx buffer data
247 4 TxBuf[0] = 0xff;
248 4 SetRxMode(); // Set nRF905 in Rx mode
249 4 }
250 3 //=====================
251 3 if(delayf==1)
252 3 {
253 4 Delay(500);
254 4 delayf = 0;
255 4 P0 = 0x00;
256 4 }
257 3 }
258 2 //=====================
259 2 if(rsbrf!=0)
260 2 {
261 3 TxData(rsbrf);
262 3 rsbrf = 0 ;
263 3 }
264 2 //=====================
265 2 }
266 1 }
267
268 /*******************************************************************************************/
269 /*******************************************************************************************/
270 //function Config905();
271 /*******************************************************************************************/
272 void Config905(void)
273 {
274 1 uchar i;
275 1 CSN=0; // Spi enable for write a spi command
276 1 SpiWrite(WC); // Write config command写放配置命令
277 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 写放配置字
278 1 {
279 2 SpiWrite(RxTxConf.buf[i]);
280 2 }
281 1 CSN=1; // Disable Spi
282 1 }
283 /*******************************************************************************************/
284 //function SpiWrite();
285 /*******************************************************************************************/
286 void SpiWrite(uchar byte)
287 {
288 1 uchar i;
289 1 DATA_BUF=byte; // Put function's parameter into a bdata variable
290 1 for (i=0;i<8;i++) // Setup byte circulation bits
291 1 {
292 2
293 2 if (flag) // Put DATA_BUF.7 on data line
294 2 MOSI=1;
295 2 else
296 2 MOSI=0;
297 2 SCK=1; // Set clock line high
298 2 DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
299 2 SCK=0; // Set clock line low
300 2 }
301 1 }
302 /*******************************************************************************************/
303 //function SpiRead();
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 6
304 /*******************************************************************************************/
305 uchar SpiRead(void)
306 {
307 1 uchar i;
308 1 for (i=0;i<8;i++) // Setup byte circulation bits
309 1 {
310 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
311 2 SCK=1; // Set clock line high
312 2 if (MISO)
313 2 flag1=1; // Read data
314 2 else
315 2 flag1=0;
316 2
317 2
318 2 SCK=0; // Set clock line low
319 2 }
320 1 return DATA_BUF; // Return function parameter
321 1 }
322 /*******************************************************************************************/
323 //function TxPacket();
324 /*******************************************************************************************/
325 void TxPacket(void)
326 {
327 1 uchar i;
328 1 //Config905();
329 1 CSN=0; // Spi enable for write a spi command
330 1 SpiWrite(WTP); // Write payload command
331 1 for (i=0;i<32;i++)
332 1 {
333 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
334 2 }
335 1 CSN=1; // Spi disable
336 1 Delay(1);
337 1 CSN=0; // Spi enable for write a spi command
338 1 SpiWrite(WTA); // Write address command
339 1 for (i=0;i<4;i++) // Write 4 bytes address
340 1 {
341 2 SpiWrite(RxTxConf.buf[i+5]);
342 2 }
343 1 CSN=1; // Spi disable
344 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
345 1 Delay(1); // while (DR!=1);
346 1 TRX_CE=0; // Set TRX_CE low
347 1 }
348 /*******************************************************************************************/
349 //function RxPacket();
350 /*******************************************************************************************/
351 void RxPacket(void)
352 {
353 1 uchar i;
354 1 TRX_CE=0; // Set nRF905 in standby mode
355 1 CSN=0; // Spi enable for write a spi command
356 1 SpiWrite(RRP); // Read payload command
357 1 for (i=0;i<32;i++)
358 1 {
359 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
360 2 }
361 1 CSN=1; // Disable spi
362 1 while(DR||AM);
363 1 P0= RxBuf[0]; // Buffer[0] output from P0 port...
364 1 TRX_CE=1;
365 1 //xx=(RxBuf[0]>>4)&0x0f;
C51 COMPILER V7.06 NRF905E 04/21/2007 14:54:04 PAGE 7
366 1 //TxData(xx);
367 1 //=====================
368 1 switch(P0)
369 1 {
370 2 case 0x3f:TxData('0');;break;
371 2 case 0x06:TxData('1');;break;
372 2 case 0x5b:TxData('2');;break;
373 2 case 0x4f:TxData('3');;break;
374 2 case 0x66:TxData('4');;break;
375 2 case 0x6d:TxData('5');;break;
376 2 case 0x7d:TxData('6');;break;
377 2 case 0x07:TxData('7');;break;
378 2 case 0x7f:TxData('8');;break;
379 2 case 0x6f:TxData('9');;break;
380 2 case 0x77:TxData('A');;break;
381 2 case 0x7c:TxData('B');;break;
382 2 //default:P0=0xff;TxBuf[0]=0xff;
383 2 }
384 1 //=====================
385 1
386 1 Delay(500); // ...light led
387 1 P0=0xff; // Close led
388 1 }
389 /*******************************************************************************************/
390 //function SetTxMode();
391 /*******************************************************************************************/
392 void SetTxMode(void)
393 {
394 1 TX_EN=1;
395 1 TRX_CE=0;
396 1 Delay(1); // delay for mode change(>=650us)
397 1 }
398 /*******************************************************************************************/
399 //function SetRxMode();
400 /*******************************************************************************************/
401 void SetRxMode(void)
402 {
403 1 TX_EN=0;
404 1 TRX_CE=1;
405 1 Delay(1); // delay for mode change(>=650us)
406 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 954 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 70 5
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 + -