📄 main.lst
字号:
245 1 ch = FRESELE << 1;
246 1 SpiReadWrite(ch);
247 1 CS = 0;
248 1 }
249
250 /*****************************************************************************************
251 //函数名:SendC()
252 //输入:发送的数据
253 //输出:无
254 //功能描述:串口初始化
255 /*****************************************************************************************/
256 void SendCh(char c)
257 {
258 1 TI = 0;
259 1 SBUF = c;
260 1 while(!TI);
261 1 TI = 0;
262 1 }
263
264 /*****************************************************************************************
265 //函数名:Nrf24E1Init()
266 //输入:无
267 //输出:无
268 //功能描述:Nrf24E1Init初始化,这里我们配置成32位地址。
269 /*****************************************************************************************/
270 void Nrf24E1Init()
271 {
272 1 int8u i;
273 1 SPICLK = 0; // Max SPI clock
274 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
275 1 CE = 0;
276 1 CS = 1; // RF SPI CS = 1
277 1 Delay100us(0);
278 1 SpiReadWrite(0x00); // We are not using the DuoCeiver functionallity
279 1 for(i=1;i<15;i++)
280 1 {
281 2 SpiReadWrite(RFConfig[i]);
282 2 }
283 1 CS = 0;
284 1
285 1 Delay100us(30);
286 1 }
287
288
289
290
291 /*****************************************************************************************
292 //函数名:int8u WaitAck(void)
293 //输入:无
294 //输出:返回应答信号
295 //功能描述:等待应答,并返回应答信号
296 /*****************************************************************************************/
297 int8u WaitAck(void)
298 {
299 1 int8u ack;
300 1 SetRxMode();
301 1 CE = 1;
302 1 ResetTimer(0);
303 1 while(DR1 == 0)
C51 COMPILER V7.08 MAIN 11/17/2006 16:38:05 PAGE 6
304 1 {
305 2 if (ReadTimer(0) > 10) // 3ms time-out/10MS
306 2 {
307 3 CE = 0;
308 3 return 0;
309 3 }
310 2 }
311 1 ack = SpiReadWrite(0);
312 1 while(DR1)
313 1 {
314 2 SpiReadWrite(0);
315 2 }
316 1 CE = 0;
317 1 return ack;
318 1 }
319 /*****************************************************************************************
320 //函数名:TransmitPacket(int8u *pBuf)
321 //输入:发送的数据
322 //输出:无
323 //功能描述:发送发送缓冲区的数据
324 /*****************************************************************************************/
325 TransmitPacket(int8u *pBuf,int8u crc)
326 {
327 1 int8u i;
328 1
329 1 SetTxMode();
330 1 CE = 1;
331 1 Delay100us(1);
332 1
333 1 for (i=0;i<ADDR_COUNT;i++)
334 1 {
335 2 SpiReadWrite(rfAddress[i]);
336 2 }
337 1 SpiReadWrite(crc);
338 1 for (i=0;i<4;i++)
339 1 {
340 2 SpiReadWrite(pBuf[i]);
341 2 }
342 1 CE = 0;
343 1 Delay100us(6); // Wait until finished transmitting (200us + 256us)//delay(5)
344 1 }
345
346
347 /******************************************************************************************
348 *******************************************************************************************
349 ************************************中断服务程序*******************************************
350 *******************************************************************************************
351 ******************************************************************************************/
352 void Timer0ISR (void) interrupt 1 using 1
353 {
354 1 TF0 = 0; // Clear Timer0 interrupt
355 1 TH0 = t0hrel; // Reload Timer0 high byte
356 1 TL0 = t0lrel; // Reload Timer0 low byte
357 1 timer[0]++; // Increment timer[0]
358 1 timer[1]++; // Increment timer[1
359 1 }
360
361
362 /*
363 void UartISR (void) interrupt 4 using 2
364 {
365 int8u temp;
C51 COMPILER V7.08 MAIN 11/17/2006 16:38:05 PAGE 7
366
367 EA = 0;
368 if(RI)
369 {
370 temp = SBUF;
371 if(temp == '@')//
372 {
373 Rx.Buf[0] = '@';
374 Rx.Counter = 1;
375 }
376 else if(temp == '*')//?β
377 {
378 Rx.Buf[Rx.Counter] = temp;
379 Rx.Buf[Rx.Counter + 1] = '\0';
380 Rx.NewData = 1;
381 }
382 else if(Rx.Counter < 39){
383 Rx.Buf[Rx.Counter] = temp;
384 Rx.Counter += 1;
385 }
386 RI = 0;
387 }
388 if(TI)
389 {
390 TI = 0;
391 }
392 EA = 1;
393 }
394 */
395
396
397
398
399
400
401
402 /******************************************************************************************
403 *******************************************************************************************
404 ******************************************主程序*******************************************
405 *******************************************************************************************
406 ******************************************************************************************/
407 main(void)
408 {
409 1 static int8u cmd,crc;
410 1 unsigned char i;
411 1 unsigned char adc_tmp;
412 1 unsigned char ack=0;
413 1 unsigned char re_send_times;
414 1
415 1 SciInit();
416 1 TimerInit();
417 1 ADCINIT();
418 1 EA=1;
419 1 LEDR=0;
420 1 LEDG=0;
421 1 delay(5000);
422 1 LEDR=1;
423 1 LEDG=1;
424 1 //TxBuf[0] = 0x40;
425 1 //TxBuf[1] = 0x41;
426 1 //TxBuf[2] = 0x42;
427 1 //TxBuf[3] = 0x43;
C51 COMPILER V7.08 MAIN 11/17/2006 16:38:05 PAGE 8
428 1
429 1 Nrf24E1Init();
430 1
431 1 while(1)
432 1 {
433 2 adc_tmp=ADCDATAH;
434 2 ADCCON&=~0X80;
435 2 ADCCON|=0X80;
436 2
437 2 //for(i=0;i<1;i++) SendCh(adc_tmp);
438 2 cmd=adc_tmp;
439 2 TxBuf[0] = adc_tmp;
440 2 TxBuf[1] = adc_tmp;
441 2 TxBuf[2] = adc_tmp;
442 2 TxBuf[3] = adc_tmp;
443 2
444 2 // 发送
445 2 ack=0;
446 2 re_send_times=0;
447 2 while(!ack)
448 2 {
449 3 TransmitPacket(TxBuf,cmd);
450 3 crc=0x00;
451 3 crc=WaitAck();
452 3 if(crc!=0xaa)
453 3 {
454 4 LEDR=1;
455 4 LEDG=0;
456 4 delay(5000);
457 4 LEDR=1;
458 4 LEDG=1;
459 4 ack=0;
460 4 re_send_times++;
461 4 if(re_send_times>=3) ack=1;
462 4 delay(10000);
463 4
464 4 }
465 3 else
466 3 {
467 4 LEDR=0;
468 4 LEDG=0;
469 4 delay(5000);
470 4 LEDR=1;
471 4 LEDG=1;
472 4 ack=1;
473 4 //delay(60000);
474 4 //delay(60000);
475 4 }
476 3 }
477 2 delay(60000);
478 2 delay(60000);
479 2 }
480 1 }
*** WARNING C280 IN LINE 410 OF MAIN.C: 'i': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 539 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 55 6
C51 COMPILER V7.08 MAIN 11/17/2006 16:38:05 PAGE 9
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -