📄 zdjjc.lst
字号:
906 4 if (UartBuf[2] > 15)
907 4 goto MODBUSOVER;
908 4
909 4 pBuf = UartBuf+3;
910 4
911 4 if (UartBuf[2] == 0) //当前班记录
912 4 {
913 5 //送当前班数据
914 5 //织带长度
915 5 UartBuf[3] = RunLength.b[0];
916 5 UartBuf[4] = RunLength.b[1];
917 5 //织带累计时间
918 5 UartBuf[5] = RunTime.b[0];
919 5 UartBuf[6] = RunTime.b[1];
920 5 //调试带长度
921 5 UartBuf[7] = DebugLength.b[0];
922 5 UartBuf[8] = DebugLength.b[1];
923 5 //调试带累计时间
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 16
924 5 UartBuf[9] = DebugTime.b[0];
925 5 UartBuf[10] = DebugTime.b[1];
926 5 //异常脉冲次数
927 5 UartBuf[11] = PulseCheat.b[0];
928 5 UartBuf[12] = PulseCheat.b[1];
929 5 //累计停机次数
930 5 UartBuf[13] = 0;
931 5 UartBuf[14] = curMotorStopCount;
932 5 //累计停机时间
933 5 UartBuf[15] = curMotorStopTimeLength.b[0];
934 5 UartBuf[16] = curMotorStopTimeLength.b[1];
935 5 //经线断次数
936 5 UartBuf[17] = JingCutCount;
937 5 //经线断时间
938 5 UartBuf[18] = JingCutTime;
939 5 //纬线断次数
940 5 UartBuf[19] = WeiCutCount;
941 5 //纬线断时间
942 5 UartBuf[20] = WeiCutTime;
943 5 //底线断次数
944 5 UartBuf[21] = DiCutCount;
945 5 //底线断时间
946 5 UartBuf[22] = DiCutTime;
947 5 //卷绕断次数
948 5 UartBuf[23] = JuanCutCount;
949 5 //卷绕断时间
950 5 UartBuf[24] = JuanCutTime;
951 5 //班开始结束时间
952 5 C24GetBuf (GROUP_TIME+GroupIndex*4, Time, 4);
953 5 UartBuf[25] = Time[0];
954 5 UartBuf[26] = Time[1];
955 5 UartBuf[27] = Time[2];
956 5 UartBuf[28] = Time[3];
957 5 //当班日期
958 5 v_Get1302(Time);
959 5 UartBuf[29] = Time[3];
960 5 UartBuf[30] = Time[4];
961 5 UartBuf[31] = Time[5];
962 5 UartBuf[32] = Time[6];
963 5 QueryIndex = RecordIndex;
964 5 }
965 4 else
966 4 {
967 5 if (RecordIndex < UartBuf[2])
968 5 QueryIndex = RecordIndex + RECORDCOUNT - UartBuf[2];
969 5 else
970 5 QueryIndex = RecordIndex - UartBuf[2];
971 5
972 5 //读指定班数据
973 5 C24GetBuf (RECORD_ROOT + QueryIndex*32, pBuf, 30);
974 5 }
975 4 UartBuf[2] = QueryIndex;
976 4 UartLength = 35;
977 4 break;
978 4 case 0x85:
979 4 pBuf = UartBuf+2;
980 4 //读当前设备时间
981 4 v_Get1302 (pBuf);
982 4 UartLength = 11;
983 4 break;
984 4 case 0x86:
985 4 pBuf = UartBuf+2;
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 17
986 4 //写当前设备时间
987 4 v_Set1302 (pBuf);
988 4 UartLength = 4;
989 4 break;
990 4 case 0x87:
991 4 BaudIndex = UartBuf[2];
992 4 C24SetBuf (BAUD_RATE, &BaudIndex, 1);
993 4 InitBaud();
994 4 UartLength = 4;
995 4 break;
996 4 case 0x88:
997 4 pBuf = UartBuf+2;
998 4 uKValue.b[0] = UartBuf[2];
999 4 uKValue.b[1] = UartBuf[3];
1000 4 C24SetBuf (KVALUE_H, pBuf, 2);
1001 4 UartLength = 4;
1002 4 break;
1003 4 default:
1004 4 goto MODBUSOVER;
1005 4 }
1006 3
1007 3 if (RxAddress != 0 &&
1008 3 UartBuf[0] == Address)
1009 3 {
1010 4 //计算CRC校验码
1011 4 CRC.w = CRC16(UartBuf, UartLength-2);
1012 4 UartBuf[UartLength-2] = CRC.b[0];
1013 4 UartBuf[UartLength-1] = CRC.b[1];
1014 4 //发送一字节,触发连续发送中断
1015 4 EN_SEND = TRUE;
1016 4 SBUF = UartBuf[0];
1017 4 }
1018 3 }
1019 2 }
1020 1 MODBUSOVER:
1021 1 REN = TRUE;
1022 1 RecOver = FALSE;
1023 1 }
1024
1025 void CutCheck (void) //断线检测
1026 {
1027 1 if (RunStatus)
1028 1 {
1029 2 if (JingStatus && (!JING_PIN))
1030 2 {
1031 3 JingCutCount ++;
1032 3 }
1033 2
1034 2 if (WeiStatus && (!WEI_PIN))
1035 2 {
1036 3 WeiCutCount ++;
1037 3 }
1038 2
1039 2 if (DiStatus && (!DIXI_PIN))
1040 2 {
1041 3 DiCutCount ++;
1042 3 }
1043 2
1044 2 if (JuanStatus && (!JUAN_PIN))
1045 2 {
1046 3 JuanCutCount ++;
1047 3 }
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 18
1048 2
1049 2 if (!JING_PIN)
1050 2 {
1051 3 displayBuf[6] |= 0x08;
1052 3 }
1053 2
1054 2 if (!WEI_PIN)
1055 2 {
1056 3 displayBuf[6] |= 0x10;
1057 3 }
1058 2
1059 2 if (!DIXI_PIN)
1060 2 {
1061 3 displayBuf[6] |= 0x20;
1062 3 }
1063 2
1064 2 if (!JUAN_PIN)
1065 2 {
1066 3 displayBuf[6] |= 0x40;
1067 3 }
1068 2
1069 2 JingStatus = JING_PIN;
1070 2 WeiStatus = WEI_PIN;
1071 2 DiStatus = DIXI_PIN;
1072 2 JuanStatus = JUAN_PIN;
1073 2 }
1074 1 }
1075
1076 uchar BCDToBin (uchar uBCD)
1077 {
1078 1 uchar uBin;
1079 1
1080 1 uBin = ((uBCD & 0xF0) >> 4) * 10 + (uBCD & 0x0F);
1081 1 return uBin;
1082 1 }
1083
1084 void CountTime (void)
1085 {
1086 1 uchar idata Time[7];
1087 1 uchar SubMin;
1088 1 //读第一次时间
1089 1 if (!TimeStatus)
1090 1 {
1091 2 v_Get1302 (Time);
1092 2 FirstMin = BCDToBin(Time[1]);
1093 2 TimeStatus = TRUE;
1094 2 }
1095 1 else
1096 1 {
1097 2 v_Get1302 (Time);
1098 2 NextMin = BCDToBin(Time[1]);
1099 2
1100 2 if (NextMin >= FirstMin)
1101 2 SubMin = NextMin - FirstMin;
1102 2 else
1103 2 SubMin = 60 - FirstMin + NextMin;
1104 2
1105 2 if (SubMin != 0)
1106 2 {
1107 3 if (RunStatus)
1108 3 {
1109 4 RunTime.w += SubMin;
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 19
1110 4
1111 4 if (MOTOR)
1112 4 curMotorStopTimeLength.w += SubMin;
1113 4 }
1114 3 else
1115 3 DebugTime.w += SubMin;
1116 3
1117 3 if (!JING_PIN)
1118 3 {
1119 4 JingCutTime += SubMin;
1120 4 if (JingCutCount == 0)
1121 4 JingCutCount = 1;
1122 4 }
1123 3
1124 3 if (!WEI_PIN)
1125 3 {
1126 4 WeiCutTime += SubMin;
1127 4 if (WeiCutCount == 0)
1128 4 WeiCutCount = 1;
1129 4 }
1130 3
1131 3 if (!DIXI_PIN)
1132 3 {
1133 4 DiCutTime += SubMin;
1134 4 if (DiCutCount == 0)
1135 4 DiCutCount = 1;
1136 4 }
1137 3
1138 3 if (!JUAN_PIN)
1139 3 {
1140 4 JuanCutTime += SubMin;
1141 4 if (JuanCutCount == 0)
1142 4 JuanCutCount = 1;
1143 4 }
1144 3
1145 3 TimeStatus = FALSE;
1146 3 }
1147 2
1148 2 }
1149 1 }
1150
1151 void main ()
1152 {
1153 1 uchar idata TimeBuf[7];
1154 1 uchar data i, j;
1155 1
1156 1 RstStatus = RST_PIN;
1157 1
1158 1 InitParam ();
1159 1
1160 1 while (TRUE)
1161 1 {
1162 2 if (IsReceive)
1163 2 {
1164 3 for (i=0; i<TIMEOUT; i++)
1165 3 for (j=0; j<TIMEOUT; j++)
1166 3 {
1167 4 if (RecOver)
1168 4 {
1169 5 ModbusProcess();
1170 5 break;
1171 5 }
C51 COMPILER V7.50 ZDJJC 02/27/2006 21:10:46 PAGE 20
1172 4 }
1173 3 IsReceive = FALSE;
1174 3 Rindex = 0;
1175 3 }
1176 2
1177 2 if (KeyFlag)
1178 2 {
1179 3 KeyProc();
1180 3 KeyFlag = FALSE;
1181 3 }
1182 2
1183 2 if (GroupSaveCount >= 100)
1184 2 {
1185 3 //换班
1186 3 GroupSaveCount = 0;
1187 3 v_Get1302 (TimeBuf);
1188 3 ChangeGroup(TimeBuf[2], TimeBuf[1]);
1189 3 }
1190 2
1191 2 CutCheck ();
1192 2 CountTime ();
1193 2 }
1194 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 5325 ----
CONSTANT SIZE = 536 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 33
IDATA SIZE = 89 60
BIT SIZE = 14 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -