📄 hardware.lst
字号:
675 //-------------------------------------------------------------------------------------------------
676 void ReadExternFlash(unsigned char xdata *destination,unsigned char xdata *source,unsigned int uiLength)
677 {
678 1 unsigned int xdata uiL;
679 1
680 1 source = source + FLASHFIRSTADDRESS;
681 1
682 1 EA = 0;
683 1 for (uiL=0; uiL<uiLength; uiL++)
684 1 {
685 2 *destination = *source;
686 2 source++;
687 2 destination++;
688 2 }
689 1 EA = 1;
690 1 }
691
692 //--------------------------------------------------------------------------------------------------
693 //函数名称:void ReadFlashDefaultPara(unsigned char xdata *destination,unsigned char code *source,unsigned
- int uiLength)
694 //功 能:根据长度将FLASH存储器源地址的内容读出来放到目的地址中
695 //输入参数:目的地址、源地址、数据长度 ,源地址是相对地址,程序中所用的地址为基址+相对地址
696 //返 回:无
697 //完成日期:4/13/2007
698 //-------------------------------------------------------------------------------------------------
699 void ReadFlashDefaultPara(unsigned char xdata *destination,unsigned char code *source,unsigned int uiLengt
-h)
700 {
701 1 unsigned int xdata uiL;
702 1
703 1 EA = 0;
704 1
-
-
-
-
705 1 for (uiL=0; uiL<uiLength; uiL++)
706 1 {
707 2 *destination = *source;
708 2 source++;
709 2 destination++;
710 2 }
711 1 EA = 1;
712 1 }
713
714 //--------------------------------------------------------------------------------------------------
715 //函数名称:unsigned char GetCANAdress(void)
716 //功 能:通过P5口得到通信的地址
717 //输入参数:无
718 //返 回:CAN通信地址
719 //完成日期:4/13/2007
720 //-------------------------------------------------------------------------------------------------
721 unsigned char GetCANAdress(void)
722 {
723 1 unsigned char uchCANAdress;
724 1
725 1 uchCANAdress = P5 & 0x1f;
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 13
726 1 return uchCANAdress;
727 1 }
728
729 //--------------------------------------------------------------------------------------------------
730 //函数名称:void InitRuningLEDControl(void)
731 //功 能:初始化灯闪烁的定时器
732 //输入参数:无
733 //返 回:无
734 //完成日期:4/13/2007 定时25.6ms中断一次
735 //-------------------------------------------------------------------------------------------------
736 void InitRuningLEDControl(void)
737 {
738 1 TF2 = 0; // 清除标志位
739 1 RCLK0 = 0;
740 1 TCLK0 = 0;
741 1 CPRL2 = 0;
742 1 TR2 = 1; //配置定时器2为自动重装载方式
743 1 EXEN2 = 0;
744 1 CT2 = 0; //由系统时钟提供时钟
745 1
746 1 CKCON &= 0xdf;
747 1 TL2 = 0xf0;
748 1 TH2 = 0xf0;
749 1 RCAP2L = 0x00;
750 1 RCAP2H = 0x48;
751 1 ET2 = 0; //禁止中断
752 1 PT2 = 0; //设置为低优先级
753 1 }
754
755 //--------------------------------------------------------------------------------------------------
756 //函数名称:void RuningLEDStart(void)
757 //功 能:开始灯的闪烁控制
758 //输入参数:无
759 //返 回:无
760 //完成日期:4/13/2007
761 //-------------------------------------------------------------------------------------------------
762 void RuningLEDStart(void)
763 {
764 1 ET2 = 1;
765 1 }
766
767 //--------------------------------------------------------------------------------------------------
768 //函数名称:void RuningLEDStop(void)
769 //功 能:停止灯的闪烁控制
770 //输入参数:无
771 //返 回:无
772 //完成日期:4/13/2007
773 //-------------------------------------------------------------------------------------------------
774 void RuningLEDStop(void)
775 {
776 1 ET2 = 0;
777 1 }
778
779 //--------------------------------------------------------------------------------------------------
780 //函数名称:void ControlRuningLED_isr(void) interrupt 5
781 //功 能:控制OK灯的闪烁情况
782 //输入参数:无
783 //返 回:无
784 //完成日期:4/13/2007
785 //-------------------------------------------------------------------------------------------------
786 void ControlRuningLED_isr(void) interrupt 5
787 {
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 14
788 1 static unsigned int xdata uiCountValue = 0;
789 1 static unsigned char xdata uchLEDControlFlag = 0;
790 1
791 1 uiCountValue++;
792 1 TF2 = 0;
793 1 if (uiCountValue >= 3)
794 1 {
795 2 if (uchLEDControlFlag == 0)
796 2 {
797 3 HWOKLEDControl(0); //灯亮
798 3 uchLEDControlFlag = 1;
799 3 uiCountValue = 0;
800 3 }
801 2 else
802 2 {
803 3 HWOKLEDControl(1); //灯灭 他们的控制受系统OK状态控制
804 3 uchLEDControlFlag = 0;
805 3 uiCountValue = 0;
806 3 }
807 2 }
808 1
809 1 }
810
811 //*************************************************
812 // ADC0初始化 *
813 //*************************************************
814 void ADC0_Init (void)
815 {
816 1 ADC0CN = 0x44; //ADC0 控制
817 1 AMX0CF = 0x00; //单端输入
818 1 AMX0SL = 0x00; //采样通道初始化
819 1 ADC0CF = 0x58; //增益,时钟=22.1184/6M
820 1 REF0CN=0x02; //外部参考
821 1 AD0EN=1; //ADC0使能
822 1 EIE2|=0x02; //允许ADC中断
823 1 EIP2 |= 0x02; //采样ADC0中断为高优先级
824 1 }
825
826 //*************************************************
827 // 定时器3初始化 *
828 //*************************************************
829 void SetSampleRate(int counts)
830 {
831 1 TMR3CN = 0x00; // 停止定时器3,清除TF3,使用SYSCLK
832 1 TMR3RL = -counts; // 初始化重载值
833 1 TMR3 = 0xffff; // 立即重装载
834 1 EIE2 &= ~0x01; // 禁止定时器3中断
835 1 TMR3CN |= 0x04; // 启动定时器3
836 1 }
837
838 //-------------------------------------------------------------------------
839 //函数名称:void SetSampleTypeHW(unsigned char uchChannelType)
840 //功 能:将通道类型设置到硬件模块中
841 //输入参数:通道类型
842 //返 回:无
843 //完成日期:4/16/2007
844 //-------------------------------------------------------------------------
845 void SetSampleTypeHW(unsigned char uchChannelType)
846 {
847 1 SampleStopControl(); //HHH
848 1 if (((uchChannelType > 12) && (uchChannelType < 19)) || ((uchChannelType > 20) && (uchChannelType < 23))
-|| (uchChannelType == 28))
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 15
849 1 {
850 2 uchSampleType = uchChannelType;
851 2 }
852 1 else
853 1 {
854 2 uchSampleType = 13; //设定类型,不在范围之内默认轴位置
855 2 }
856 1 // SampleStartControl();
857 1 }
858
859 //-------------------------------------------------------------------------
860 //函数名称:void SetInitChannel(void)
861 //功 能:设置通道初始化
862 //输入参数:无
863 //返 回:无
864 //完成日期:4/16/2007
865 //-------------------------------------------------------------------------
866 void SetInitChannel(void)
867 {
868 1 switch(uchSampleType)
869 1 {
870 2 case 13: //加速度输入 输出加速度
871 2 AMX0SL = 0x00;
872 2 break;
873 2 case 14: //加速度输入 输出速度
874 2 AMX0SL = 0x04;
875 2 break;
876 2 case 15: // 加速度输入 输出位移
877 2 AMX0SL = 0x00;
878 2 break;
879 2 case 16: // 速度输入 输出速度
880 2 AMX0SL = 0x00;
881 2 break;
882 2 case 17: //速度输入 输出位移
883 2 AMX0SL = 0x04;
884 2 break;
885 2 case 18: // 位移输入 输出位移
886 2 AMX0SL = 0x00;
887 2 break;
888 2 case 21: // 涡流+速度 输出复合式振动
889 2 AMX0SL = 0x00;
890 2 break;
891 2 case 22: //LVDT输入 输出机壳膨胀
892 2 AMX0SL = 0x01;
893 2 break;
894 2 case 28: //LVDT输入 输出机壳膨胀
895 2 AMX0SL = 0x01;
896 2 break;
897 2 default:
898 2 AMX0SL = 0x00;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -