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