📄 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 + -