📄 main.lst
字号:
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 09/09/2004 17:04:02 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 09/09/2004 17:04:02 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=1; //接收状态
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
445 1 else
446 1 {
447 2 ADDR=0;
448 2 EA=0;
449 2 FLASH_WriteByte(0xc04, 0);
450 2 FLASH_WriteByte(0xc05, 0x55);
451 2 FLASH_WriteByte(0xc06, 0xAA);
452 2 EA=1;
453 2 }
454 1 while(1)
455 1 {
456 2 ES=0;
457 2 SBUF ='O'; // 发送数据
458 2 while(0==TI); // 等待发送完毕
459 2 TI = 0; // 清除发送标志
460 2 SBUF = 'K'; // 发送数据
461 2 while(0==TI); // 等待发送完毕
462 2 TI = 0; // 清除发送标志
463 2 ES=1;
464 2 }
465 1 //ADDR=0;
466 1 while(1)
467 1 {
468 2
469 2 if(ISP)
470 2 {
471 3 watchdog_start();
472 3
473 3 if(!KEY){wring_send_times=3; key_tem=0x02; LED=0; Delay100ms(2); LED=!LED;LED=0; Delay100ms(2); LED=!LE
-D;}//有键按下
474 3 watchdog_feed();
475 3 if(rxok)
476 3 {
477 4 rxok=0;
478 4 Send_ok(key_tem);
479 4 flash_led(4);
480 4 i=0;
481 4 LED=1;
482 4 Link_ok=1;
C51 COMPILER V7.05 MAIN 09/09/2004 17:04:02 PAGE 9
483 4 watchdog_feed();
484 4 }
485 3 if(set_ok)//设置模块的ID
486 3 {
487 4 watchdog_feed();
488 4 set_ok=0;
489 4 Send_ok(key_tem);
490 4
491 4 watchdog_feed();
492 4 EA=0;
493 4 FLASH_WriteByte(0xc04,RX_addr); //存入新ID
494 4 EA=1;
495 4 ADDR=RX_addr;
496 4 LED=0;
497 4 flash_led(4);
498 4 i=0;
499 4 LED=1;
500 4 Link_ok=1;
501 4 watchdog_feed();
502 4 }
503 3 rtc_start();
504 3 switch(CS_state)
505 3 {
506 4 case 0:
507 4 CS=0;
508 4 if(T_flag)
509 4 {
510 5 watchdog_feed();
511 5 rtc_stop();
512 5 T_flag=0;
513 5 i++;
514 5 if(i>3)
515 5 {
516 6 i=0;
517 6 watchdog_feed();
518 6 if(Link_ok)
519 6 {
520 7 Link_ok=0;
521 7 watchdog_feed();
522 7
523 7 }
524 6 else
525 6 {
526 7 LED=0;
527 7 Delay1ms(50);
528 7 LED=1;
529 7 j++;
530 7 watchdog_feed();
531 7 CS_state=1;
532 7 if(j>10)
533 7 {
534 8 j=0;
535 8 DIVM =0x00;
536 8 watchdog_feed();
537 8 power_mode(POWER_TOTALPOWERDOWN);//休眠
538 8 }
539 7 }
540 6 }
541 5 }
542 4 break;
543 4 case 1:
544 4 CS=1;
C51 COMPILER V7.05 MAIN 09/09/2004 17:04:02 PAGE 10
545 4 if(T_flag)
546 4 {
547 5 watchdog_feed();
548 5 rtc_stop();
549 5 T_flag=0;
550 5 i++;
551 5 if(i>3)
552 5 {
553 6 i=0;
554 6 watchdog_feed();
555 6 if(Link_ok)
556 6 {
557 7 Link_ok=0;
558 7 watchdog_feed();
559 7
560 7 }
561 6 else
562 6 {
563 7 LED=0;
564 7 Delay1ms(50);
565 7 LED=1;
566 7 j++;
567 7 watchdog_feed();
568 7 CS_state=0;
569 7 if(j>10)
570 7 {
571 8 j=0;
572 8 DIVM =0x00;
573 8 watchdog_feed();
574 8 power_mode(POWER_TOTALPOWERDOWN);//休眠
575 8 }
576 7 }
577 6 }
578 5 }
579 4 break;
580 4 default:
581 4 CS_state=0;
582 4 break;
583 4 }//end swtich
584 3
585 3
586 3 }
587 2 else
588 2 {
589 3 LED=!LED;
590 3 Delay100ms(10);
591 3
592 3
593 3
594 3 if(set_ok)//设置模块的ID
595 3 {
596 4
597 4 watchdog_feed();
598 4 set_ok=0;
599 4 EA=0;
600 4 FLASH_WriteByte(0xc04,RX_addr); //存入新ID
601 4 EA=1;
602 4 ADDR=RX_addr;
603 4 LED=0;
604 4 flash_led(4);
605 4 i=0;
606 4 LED=1;
C51 COMPILER V7.05 MAIN 09/09/2004 17:04:02 PAGE 11
607 4 Link_ok=1;
608 4 watchdog_feed();
609 4 Setok();
610 4 }
611 3 }
612 2 }
613 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 768 ----
CONSTANT SIZE = ---- ----
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 + -