📄 hardware.lst
字号:
899 2 break;
900 2 }
901 1 }
902
903 //-------------------------------------------------------------------------
904 //函数名称:void SampleStartControl(void)
905 //功 能:开始采样
906 //输入参数:无
907 //返 回:无
908 //完成日期:4/16/2007
909 //-------------------------------------------------------------------------
910 void SampleStartControl(void)
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 16
911 {
912 1 TMR3CN |= 0x04;
913 1 }
914
915 //-------------------------------------------------------------------------
916 //函数名称:void SampleStopControl(void)
917 //功 能:停止采样
918 //输入参数:无
919 //返 回:无
920 //完成日期:4/16/2007
921 //-------------------------------------------------------------------------
922 void SampleStopControl(void)
923 {
924 1 TMR3CN &= ~0x04;
925 1 }
926
927 //--------------------------------------------------------------------------------------------------
928 //函数名称:void SoftReset(void)
929 //功 能:软件复位
930 //输入参数:无
931 //返 回:无
932 //-------------------------------------------------------------------------------------------------
933 void SoftReset(void)
934 {
935 1 RSTSRC |= 0x10;
936 1 }
937
938 //-------------------------------------------------------------------------
939 //函数名称:void InitSampleType(void)
940 //功 能:将采样类型初始化成位变量的形式
941 //输入参数:无
942 //返 回:无
943 //-------------------------------------------------------------------------
944 void InitSampleType(void)
945 {
946 1 if((uchSampleType == 13) || (uchSampleType == 16) || (uchSampleType == 18))
947 1 {
948 2 b_NotIntegralChannelType = 1;
949 2 b_IntegralChannelType = 0;
950 2 b_LVDTChannelType = 0;
951 2 }
952 1 else if ((uchSampleType == 14) || (uchSampleType == 17))
953 1 {
954 2 b_NotIntegralChannelType = 0;
955 2 b_IntegralChannelType = 1;
956 2 b_LVDTChannelType = 0;
957 2 }
958 1 else if ((uchSampleType == 22) || (uchSampleType == 28))
959 1 {
960 2 b_NotIntegralChannelType = 0;
961 2 b_IntegralChannelType = 0;
962 2 b_LVDTChannelType = 1;
963 2 }
964 1 else
965 1 {
966 2 b_NotIntegralChannelType = 1;
967 2 b_IntegralChannelType = 0;
968 2 b_LVDTChannelType = 0;
969 2 }
970 1 }
971
972
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 17
973
974 //--------------------------------------------------------
975 //函数名称:void ADC0_ISR (void) interrupt 15
976 //功 能:采样中断采样数据,
977 //输入参数:无
978 //返 回:无
979 //作 者:佟文杰
980 //----------------------------------------------------------
981 void ADC0_ISR (void) interrupt 15
982 {
983 1 AD0INT = 0;
984 1 if (b_NotIntegralChannelType == 1) //非积分通道数据采集 a-a v-v d-d
985 1 {
986 2 // if((AMX0SL == 0x00)||(AMX0SL == 0x01)||(AMX0SL == 0x02)||(AMX0SL == 0x03))
987 2 // {
988 2 if(AMX0SL == 0x00)
989 2 {
990 3 AMX0SL = 0x01;
991 3 SampBuffer0[SamplePTR0] = ADC0;
992 3 SamplePTR0 = (SamplePTR0 + 1) & MAXLENGTH;
993 3 }
994 2 else if(AMX0SL == 0x01)
995 2 {
996 3 AMX0SL = 0x02;
997 3 SampBuffer1[SamplePTR1] = ADC0;
998 3 SamplePTR1 = (SamplePTR1 + 1) & MAXLENGTH;
999 3 }
1000 2 else if(AMX0SL == 0x02)
1001 2 {
1002 3 AMX0SL = 0x03;
1003 3 SampBuffer2[SamplePTR2] = ADC0;
1004 3 SamplePTR2 = (SamplePTR2 + 1) & MAXLENGTH;
1005 3 }
1006 2 else
1007 2 {
1008 3 AMX0SL = 0x00;
1009 3 SampBuffer3[SamplePTR3] = ADC0;
1010 3 SamplePTR3 = (SamplePTR3 + 1) & MAXLENGTH;
1011 3
1012 3 // if((SamplePTR3%uiGroupLength) == 0)
1013 3 if((SamplePTR3 & 0x0ff) == 0)
1014 3 {
1015 4 SetSampleLocationStatus(uchSampleLocationCounter);
1016 4 uchSampleLocationCounter = ( uchSampleLocationCounter + 1 ) & 0x0f;
1017 4
1018 4 SetSampleCompleteStatusAD(SAMPLECOMPLETETRUE);
1019 4 SetSampleCompleteStatusMain(SAMPLECOMPLETETRUE);
1020 4 SetCurProcessingIndex();
1021 4 }
1022 3 }
1023 2 }
1024 1 else if (b_IntegralChannelType == 1) //积分通道数据采集 a-v v-d
1025 1 {
1026 2 // if((AMX0SL == 0x04)||(AMX0SL == 0x01)||(AMX0SL == 0x05)||(AMX0SL == 0x03))
1027 2 // {
1028 2 if(AMX0SL == 0x04) //积分1通道
1029 2 {
1030 3 AMX0SL = 0x01;
1031 3 SampBuffer0[SamplePTR0] = ADC0;
1032 3 SamplePTR0 = (SamplePTR0 + 1) & MAXLENGTH;
1033 3 }
1034 2
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 18
1035 2 else if(AMX0SL == 0x01) //直流1通道
1036 2 {
1037 3 AMX0SL = 0x05;
1038 3 SampBuffer1[SamplePTR1] = ADC0;
1039 3 SamplePTR1 = (SamplePTR1 + 1) & MAXLENGTH;
1040 3 }
1041 2
1042 2 else if(AMX0SL == 0x05) //积分2通道
1043 2 {
1044 3 AMX0SL = 0x03;
1045 3 SampBuffer2[SamplePTR2] = ADC0;
1046 3 SamplePTR2 = (SamplePTR2 + 1) & MAXLENGTH;
1047 3 }
1048 2
1049 2 else //直流2通道
1050 2 {
1051 3 AMX0SL = 0x04;
1052 3 SampBuffer3[SamplePTR3] = ADC0;
1053 3 SamplePTR3 = (SamplePTR3 + 1) & MAXLENGTH;
1054 3
1055 3 if((SamplePTR3 & 0x0ff) == 0)
1056 3 {
1057 4 SetSampleLocationStatus(uchSampleLocationCounter);
1058 4 uchSampleLocationCounter = ( uchSampleLocationCounter + 1 ) & 0x0f;
1059 4 SetSampleCompleteStatusAD(SAMPLECOMPLETETRUE);
1060 4 SetSampleCompleteStatusMain(SAMPLECOMPLETETRUE);
1061 4 SetCurProcessingIndex();
1062 4 }
1063 3 }
1064 2 }
1065 1 else if (b_LVDTChannelType == 1) //22 28 LVDT通道类型
1066 1 {
1067 2 // if((AMX0SL == 0x01) || (AMX0SL == 0x03))
1068 2 // {
1069 2 if(AMX0SL == 0x01)
1070 2 {
1071 3 AMX0SL = 0x03;
1072 3 SampBuffer1[SamplePTR1] = ADC0;
1073 3 SamplePTR1 = (SamplePTR1 + 1) & MAXLENGTH;
1074 3 }
1075 2 else
1076 2 {
1077 3 AMX0SL = 0x01;
1078 3 SampBuffer3[SamplePTR3] = ADC0;
1079 3 SamplePTR3 = (SamplePTR3 + 1) & MAXLENGTH;
1080 3
1081 3 if((SamplePTR3 & 0x0ff) == 0)
1082 3 {
1083 4 SetSampleLocationStatus(uchSampleLocationCounter);
1084 4 uchSampleLocationCounter = ( uchSampleLocationCounter + 1 ) & 0x07;
1085 4 SetSampleCompleteStatusAD(SAMPLECOMPLETETRUE);
1086 4 SetSampleCompleteStatusMain(SAMPLECOMPLETETRUE);
1087 4 }
1088 3 }
1089 2 }
1090 1 else
1091 1 {
1092 2 SoftReset(); //如果通道类型不对,立即重新启动系统
1093 2 }
1094 1 }
1095
1096 /////////////////////////////////////////////////////////////////////////////////////////
C51 COMPILER V7.10 HARDWARE 09/18/2008 14:09:27 PAGE 19
1097 //unsigned char readCANreg(unsigned char xdata *regAddr)
1098 //入口参数:读取的地址
1099 //函数返回:读出的数据
1100 //全局变量:无
1101 //功能描述:在读某一地址的数据时,调用该函数
1102 //函数说明:从SJA1000中读取数据
1103 /////////////////////////////////////////////////////////////////////////////////////////
1104 unsigned char readCANreg(unsigned char xdata *regAddr)
1105 {
1106 1 unsigned char uchValue;
1107 1 uchValue = *regAddr;
1108 1 return uchValue;
1109 1 }
1110 unsigned char readCANregRemote(unsigned char xdata *regAddr)
1111 {
1112 1 unsigned char uchValue;
1113 1 uchValue = *regAddr;
1114 1 return uchValue;
1115 1 }
1116 /////////////////////////////////////////////////////////////////////////////////////////
1117 //void writeCANreg(unsigned char xdata *regAddr, unsigned char value)
1118 //入口参数:写的地址,写的数据
1119 //函数返回:无
1120 //全局变量:无
1121 //功能描述:在写某一地址的数据时,调用该函数
1122 //函数说明:向SJA1000中写入数据
1123 ///////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -