?? hardware.lst
字號:
449 1 uchBypassStatusBak[1] = uchBypassStatusBak[0];
450 1 uchBypassStatusBak[0] = HWBypassStatus();
451 1
452 1 if(uchBypassStatus != uchBypassStatusBak[2])
453 1 {
454 2 if (uchBypassStatusBak[0] == uchBypassStatusBak[1] && uchBypassStatusBak[0] == uchBypassStatusBak[2])
455 2 {
456 3 uchBypassStatus = uchBypassStatusBak[0];
457 3 }
458 2 }
459 1 SetHWBypassStatusMain(uchBypassStatus);
460 1
461 1 uchTripleStatusBak[2] = uchTripleStatusBak[1];
462 1 uchTripleStatusBak[1] = uchTripleStatusBak[0];
463 1 uchTripleStatusBak[0] = HWTripleStatus();
464 1
465 1 if(uchTripleStatus != uchTripleStatusBak[2])
466 1 {
467 2 if (uchTripleStatusBak[0] == uchTripleStatusBak[1] && uchTripleStatusBak[0] == uchTripleStatusBak[2])
468 2 {
469 3 uchTripleStatus = uchTripleStatusBak[0];
470 3 }
471 2 }
472 1 SetHWTripleStatusMain(uchTripleStatus);
473 1
474 1 uiHeartbeatValue++;
475 1
476 1 }
477
478 //--------------------------------------------------------------------------
479 //函數名稱:void InitDA(void)
480 //功 能:DA初始化
481 //輸入參數:無
482 //返 回:無
483 //完成日期:4/12/2007
484 //--------------------------------------------------------------------------
485 void InitDA(void)
486 {
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 9
487 1 DAC0CN = 0x80; //使能,寫高字節更新
488 1 DAC1CN = 0x80;
489 1 }
490
491 //--------------------------------------------------------------------------
492 //函數名稱:void DirectCurrentOutput(unsigned char uchChannel, unsigned int uiDAValue)
493 //功 能:根據通道的選擇決定輸出的電流
494 //輸入參數:當前要輸出的DAC值和通道號,通道號:1表示第一通道;2表示第二通道
495 //返 回:無
496 //完成日期:4/12/2007
497 //--------------------------------------------------------------------------
498 void DirectCurrentOutput(unsigned char uchChannel, unsigned int uiDAValue)
499 {
500 1 if (uchChannel == 1)
501 1 {
502 2 DAC0L = uiDAValue;
503 2 DAC0H = uiDAValue >> 8;
504 2 }
505 1 if (uchChannel == 2)
506 1 {
507 2 DAC1L = uiDAValue;
508 2 DAC1H = uiDAValue >> 8;
509 2 }
510 1 }
511
512 //--------------------------------------
513 //函數名稱:void DisableDog(void)
514 //功 能:禁止看門狗
515 //輸入參數:無
516 //返 回:無
517 //完成日期:4/13/2007
518 //--------------------------------------
519 void DisableDog(void)
520 {
521 1 EA =0;
522 1
523 1 WDTCN = 0xde;
524 1 WDTCN = 0xad;
525 1
526 1 EA = 1;
527 1 }
528
529 //--------------------------------------
530 //函數名稱:void EnableDog(void)
531 //功 能:使能看門狗
532 //輸入參數:無
533 //返 回:無
534 //完成日期:4/13/2007
535 //--------------------------------------
536 void EnableDog(void)
537 {
538 1 WDTCN = 0xa5;
539 1 }
540
541 //--------------------------------------
542 //函數名稱:void FeedDog(void)
543 //功 能:喂看門狗
544 //輸入參數:無
545 //返 回:無
546 //完成日期:4/13/2007
547 //--------------------------------------
548 void FeedDog(void)
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 10
549 {
550 1 WDTCN = 0xa5;
551 1 }
552
553 //--------------------------------------------------------
554 //函數名稱:void InitADC1(void)
555 //功 能:ADC1轉換器初始化
556 //輸入參數:無
557 //返 回:無
558 //完成日期:4/13/2007
559 //----------------------------------------------------------
560 void InitADC1(void)
561 {
562 1 ADC1CF = 0xf9; //0.8MHZ
563 1 ADC1CN = 0x90;
564 1
565 1 EIE2 &= 0xf7; //關ADC1中斷
566 1 }
567
568 //--------------------------------------------------------
569 //函數名稱:void InitRef(void)
570 //功 能:參考電壓初始化
571 //輸入參數:無
572 //返 回:無
573 //完成日期:4/13/2007
574 //----------------------------------------------------------
575 void InitRef(void)
576 {
577 1 REF0CN |= 0x02;
578 1 REF0CN &= 0xe6;
579 1 }
580
581 //----------------------------------------------------------------------
582 //函數名稱:unsigned char HWTestSystemVoltage(unsigned char uchChannel)
583 //功 能:應用ADC1測量系統的電壓
584 //輸入參數:通道號
585 //返 回:所測量的通道的電壓值
586 //完成日期:4/13/2007
587 //----------------------------------------------------------------------
588 unsigned char HWTestSystemVoltage(unsigned char uchChannel)
589 {
590 1 xdata unsigned char uchNumberTest;
591 1 xdata unsigned int uiVoltageTest_data[5];
592 1
593 1 AMX1SL = uchChannel;
594 1
595 1 for (uchNumberTest=0; uchNumberTest<5; uchNumberTest++)
596 1 {
597 2 ADC1CN = ADC1CN & 0xdf; // AD1INT=0;
598 2 ADC1CN = ADC1CN | 0x10; // AD1BUSY=1;
599 2
600 2 while( (ADC1CN & 0x20) == 0) //wait AD1INT=1
601 2 {;}
602 2
603 2 uiVoltageTest_data[uchNumberTest] = ADC1;
604 2 }
605 1 return (uiVoltageTest_data[0] + uiVoltageTest_data[1] + uiVoltageTest_data[2]
606 1 + uiVoltageTest_data[3] + uiVoltageTest_data[4]) / 5;
607 1 }
608
609 //-----------------------------------------------------------------
610 //函數名稱:void SetExternalRAM(void)
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 11
611 //功 能:外部存儲器初始化,包括地址線、數據線、 ALE的工作方式
612 //輸入參數:無
613 //返 回:無
614 //完成日期:4/12/2007
615 //-----------------------------------------------------------------
616 void SetExternalRAM(void)
617 {
618 1 EMI0CF = 0x25; //27
619 1 EMI0TC = 0x8d; //20080322 ff
620 1 }
621
622 //--------------------------------------------------------------------------------------------------
623 //函數名稱:void WriteExternFlash(unsigned char xdata *destination, unsigned char xdata *Source, unsigned
-int uchLength)
624 //功 能:將源地址的內容根據長度寫入到外部28C64存儲器的目的地址中
625 //輸入參數:目的地址、源地址、數據長度(不包括校驗和位)但是程序已經把校驗和存入到內存當中了(存入一個字)
626 //返 回:無
627 //完成日期:4/13/2007 注意:寫一頁要有最少7到8毫秒的延時
628 //-------------------------------------------------------------------------------------------------
629 void WriteExternFlash(unsigned char xdata *destination, unsigned char xdata *Source, unsigned int uiLength
-)
630 {
631 1 unsigned int xdata uiL;
632 1 unsigned int xdata uiTempVariable;
633 1
634 1 uiTempVariable = CaculateCheckSum(Source, uiLength);
635 1 destination = destination + FLASHFIRSTADDRESS;
636 1
637 1 EA = 0;
638 1 uiLength = uiLength + 1;
639 1 for (uiL=1; uiL<uiLength; uiL++)
640 1 {
641 2 *destination = *Source;
642 2 destination++;
643 2 Source++;
644 2 if (uiL == 64)
645 2 {
646 3 EA = 1;
647 3 uiLength = uiLength - 64;
648 3 uiL = 0;
649 3 DelayTimeCount(2);
650 3 EA = 0;
651 3 }
652 2 }
653 1
654 1 EA = 1;
655 1 DelayTimeCount(2); //20080417
656 1 EA = 0;
657 1
658 1 *destination = uiTempVariable >> 8;
659 1 destination++;
660 1 EA = 1;
661 1 DelayTimeCount(2); //20080417
662 1 EA = 0;
663 1
664 1 *destination = uiTempVariable; //在內存中存儲的校驗和高位在前,低位在后
665 1 EA = 1;
666 1 DelayTimeCount(2);
667 1 }
668
669 //--------------------------------------------------------------------------------------------------
670 //函數名稱:void ReadExternFlash(unsigned char xdata *destination,unsigned char xdata *source,unsigned int
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 12
- uchLength)
671 //功 能:根據長度將外部28C64存儲器源地址的內容讀出來放到目的地址中
672 //輸入參數:目的地址、源地址、數據長度 ,源地址是相對地址,程序中所用的地址為基址+相對地址
673 //返 回:無
674 //完成日期:4/13/2007
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -