📄 main.lst
字号:
302 2 RXNOM=0;
303 2 set=0;
304 2 }
305 1
306 1
307 1
308 1 TH0=0Xac;
309 1 TL0=0X95;
310 1 TR0=1;
311 1 }
312 //**********************************************************
313 void Send_ok(unsigned char key)
314 {
315 1 unsigned char i;
316 1 ES=0;
317 1 TX_EN=1;
318 1 Delay1msa(10);
319 1 for(i=0;i<3;i++)
320 1 {
321 2 SBUF = 0x88; // 发送数据
322 2 while(0==TI); // 等待发送完毕
323 2 TI = 0; // 清除发送标志
324 2 SBUF = 0xff; // 发送数据
325 2 while(0==TI); // 等待发送完毕
326 2 TI = 0; // 清除发送标志
327 2
328 2 SBUF = key; // 发送数据
329 2 while(0==TI); // 等待发送完毕
330 2 TI = 0; // 清除发送标志
331 2 SBUF = key; // 发送数据
332 2 while(0==TI); // 等待发送完毕
333 2 TI = 0; // 清除发送标志
334 2 }
335 1 if(key_tem==0x02)
336 1 {
337 2 wring_send_times--;
338 2 if(wring_send_times==0)
339 2 {
340 3 key_tem=0x01;
341 3 }
342 2 }
343 1 else
344 1 {
345 2 key_tem=0x01;
346 2 }
347 1 TX_EN=0;
348 1 Delay1msa(4);
349 1 ES=1;
350 1
351 1 }
352
353 /******************************************************************
354 * 名称:UART_SendByte
355 * 功能:向串口发送字节数据。
356 * 入口参数:dat 待发送的数据
357 * 出口参数:无
358 ******************************************************************
359 void UART_SendByte(uint8 dat)
C51 COMPILER V7.05 MAIN 04/13/2004 13:35:26 PAGE 7
360 { SBUF = dat; // 发送数据
361 while(0==TI); // 等待发送完毕
362 TI = 0; // 清除发送标志
363 }
364
365
366 /******************************************************************
367 * 名称:UART_SendCode
368 * 功能:读取FLASH中的数据,并发送到串口。
369 * 入口参数:addr 读取的起始地址
370 * no 读取的数据个数
371 * 出口参数:无
372 ******************************************************************
373 void UART_SendCode(uint16 addr, uint16 no)
374 { uint8 code *readp;
375
376 readp = addr;
377 for(; no>0; no--)
378 { UART_SendByte(*readp++); // 读取数据并发送
379 }
380 }
381
382 */
383 void flash_led(unsigned char j )
384 {
385 1 char i;
386 1 for(i=0;i<j;i++)
387 1 {
388 2 LED=0;
389 2 Delay1ms(50);
390 2 LED=1;
391 2 Delay1ms(50);
392 2 }
393 1 LED=1;
394 1 }
395 //******************************************************************
396 //**********************************************************
397 void Setok(void)
398 {
399 1
400 1 ES=0;
401 1 SBUF ='O'; // 发送数据
402 1 while(0==TI); // 等待发送完毕
403 1 TI = 0; // 清除发送标志
404 1 SBUF = 'K'; // 发送数据
405 1 while(0==TI); // 等待发送完毕
406 1 TI = 0; // 清除发送标志
407 1 ES=1;
408 1 }
409 //**************************************************************
410 void main(void)
411 {
412 1 unsigned char Link_ok=0,j,CS_state=0;
413 1
414 1 ports_init();
415 1 if(ISP)
416 1 {
417 2 user_uart_init();//用户串口初始化
418 2 watchdog_init();//初始化看门狗
419 2
420 2 }
421 1 else
C51 COMPILER V7.05 MAIN 04/13/2004 13:35:26 PAGE 8
422 1 {
423 2 uart_init(); //进入ISP模式
424 2 FLASH_WriteByte(0xc04, 0);
425 2 }
426 1 osc_init();
427 1 rtc_init();
428 1 EA=1;
429 1 ES=1;
430 1 CS=0;
431 1 TX_EN=0; //接收状态
432 1 PWR =1;
433 1 //rtc_start();
434 1 LED=0;
435 1 Delay100ms(2);
436 1 LED=1;
437 1 if((FLASH_ReadByte(0XC05)==0x55)&(FLASH_ReadByte(0XC06)==0xaa))//初始化模块的ID
438 1 {
439 2 EA=0;
440 2 ADDR=FLASH_ReadByte(0XC04);
441 2 EA=1;
442 2 //FLASH_WriteByte(0xc04, 0);
443 2 }
444 1 else
445 1 {
446 2 ADDR=0;
447 2 EA=0;
448 2 FLASH_WriteByte(0xc04, 0);
449 2 FLASH_WriteByte(0xc05, 0x55);
450 2 FLASH_WriteByte(0xc06, 0xAA);
451 2 EA=1;
452 2 }
453 1 //ADDR=0;
454 1 while(1)
455 1 {
456 2
457 2 if(ISP)
458 2 {
459 3 watchdog_start();
460 3
461 3 if(!KEY){wring_send_times=3; key_tem=0x02; LED=0; Delay100ms(2); LED=!LED;LED=0; Delay100ms(2); LED=!LE
-D;}//有键按下
462 3 watchdog_feed();
463 3 if(rxok)
464 3 {
465 4 rxok=0;
466 4 Send_ok(key_tem);
467 4 flash_led(4);
468 4 i=0;
469 4 LED=1;
470 4 Link_ok=1;
471 4 watchdog_feed();
472 4 }
473 3 if(set_ok)//设置模块的ID
474 3 {
475 4 watchdog_feed();
476 4 set_ok=0;
477 4 Send_ok(key_tem);
478 4
479 4 watchdog_feed();
480 4 EA=0;
481 4 FLASH_WriteByte(0xc04,RX_addr); //存入新ID
482 4 EA=1;
C51 COMPILER V7.05 MAIN 04/13/2004 13:35:26 PAGE 9
483 4 ADDR=RX_addr;
484 4 LED=0;
485 4 flash_led(4);
486 4 i=0;
487 4 LED=1;
488 4 Link_ok=1;
489 4 watchdog_feed();
490 4 }
491 3 rtc_start();
492 3 switch(CS_state)
493 3 {
494 4 case 0:
495 4 CS=0;
496 4 if(T_flag)
497 4 {
498 5 watchdog_feed();
499 5 rtc_stop();
500 5 T_flag=0;
501 5 i++;
502 5 if(i>3)
503 5 {
504 6 i=0;
505 6 watchdog_feed();
506 6 if(Link_ok)
507 6 {
508 7 Link_ok=0;
509 7 watchdog_feed();
510 7
511 7 }
512 6 else
513 6 {
514 7 LED=0;
515 7 Delay1ms(50);
516 7 LED=1;
517 7 j++;
518 7 watchdog_feed();
519 7 CS_state=1;
520 7 if(j>10)
521 7 {
522 8 j=0;
523 8 DIVM =0x00;
524 8 watchdog_feed();
525 8 power_mode(POWER_TOTALPOWERDOWN);//休眠
526 8 }
527 7 }
528 6 }
529 5 }
530 4 break;
531 4 case 1:
532 4 CS=1;
533 4 if(T_flag)
534 4 {
535 5 watchdog_feed();
536 5 rtc_stop();
537 5 T_flag=0;
538 5 i++;
539 5 if(i>3)
540 5 {
541 6 i=0;
542 6 watchdog_feed();
543 6 if(Link_ok)
544 6 {
C51 COMPILER V7.05 MAIN 04/13/2004 13:35:26 PAGE 10
545 7 Link_ok=0;
546 7 watchdog_feed();
547 7
548 7 }
549 6 else
550 6 {
551 7 LED=0;
552 7 Delay1ms(50);
553 7 LED=1;
554 7 j++;
555 7 watchdog_feed();
556 7 CS_state=0;
557 7 if(j>10)
558 7 {
559 8 j=0;
560 8 DIVM =0x00;
561 8 watchdog_feed();
562 8 power_mode(POWER_TOTALPOWERDOWN);//休眠
563 8 }
564 7 }
565 6 }
566 5 }
567 4 break;
568 4 default:
569 4 CS_state=0;
570 4 break;
571 4 }//end swtich
572 3
573 3
574 3 }
575 2 else
576 2 {
577 3 LED=!LED;
578 3 Delay100ms(10);
579 3
580 3
581 3
582 3 if(set_ok)//设置模块的ID
583 3 {
584 4
585 4 watchdog_feed();
586 4 set_ok=0;
587 4 EA=0;
588 4 FLASH_WriteByte(0xc04,RX_addr); //存入新ID
589 4 EA=1;
590 4 ADDR=RX_addr;
591 4 LED=0;
592 4 flash_led(4);
593 4 i=0;
594 4 LED=1;
595 4 Link_ok=1;
596 4 watchdog_feed();
597 4 Setok();
598 4 }
599 3 }
600 2 }
601 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1062 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.05 MAIN 04/13/2004 13:35:26 PAGE 11
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 10
IDATA SIZE = ---- ----
BIT SIZE = 4 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -