📄 stccoinbox.lst
字号:
1141 2 LcdSendData(21,nLcdDisplay2);
1142 2 nDisCount = 11;
1143 2 break;
1144 2 case 11:
1145 2 nLcdDisplay2 = Lcddis[11];
1146 2 LcdSendData(22,nLcdDisplay1);
1147 2 nDisCount = 0;
1148 2 break;
1149 2 default:
1150 2 nDisCount = 0;
1151 2 break;
1152 2 }
1153 1 }
1154
1155 void LcdSendCommand(uchar nCommand)
1156 {
1157 1 uchar nCount ;
1158 1 unsigned int nSerialData ;
1159 1 //bit bSendBit ;
1160 1 bLcdData = HIGH ;
1161 1 bLcdClock = HIGH ;
1162 1 bLcdCS = LOW ;
1163 1 nSerialData = 0x0400 | nCommand ;
1164 1 for(nCount=0;nCount<12;nCount++)
1165 1 {
1166 2 if(nSerialData & 0x0400)
1167 2 {
1168 3 bSendBit = 1 ;
C51 COMPILER V7.06 STCCOINBOX 11/10/2007 10:37:46 PAGE 20
1169 3 }
1170 2 else
1171 2 {
1172 3 bSendBit = 0 ;
1173 3 }
1174 2 bLcdData = bSendBit ;
1175 2 NOP() ;
1176 2 bLcdClock = LOW ;
1177 2 Delay();
1178 2 bLcdClock = HIGH ;
1179 2 nSerialData <<= 1 ;
1180 2 }
1181 1 bLcdCS = HIGH ;
1182 1 }
1183
1184 void LcdSendData(uchar nAddress,uchar nData)
1185 {
1186 1 uchar nCount ;
1187 1 unsigned int nSerialData ;
1188 1 //bit bSendBit ;
1189 1 bLcdData = HIGH ;
1190 1 bLcdClock = HIGH ;
1191 1 bLcdCS = LOW ;
1192 1 nAddress &= 0x3f ;
1193 1 nData &= 0x0f ;
1194 1 nSerialData = 0x0140 | nAddress ;
1195 1 nSerialData <<= 4 ;
1196 1 nSerialData |= nData ;//*nData:低位在前*/
1197 1 for(nCount=0;nCount<13;nCount++)
1198 1 {
1199 2 if(nSerialData & 0x1000)
1200 2 {
1201 3 bSendBit = 1 ;
1202 3 }
1203 2 else
1204 2 {
1205 3 bSendBit = 0 ;
1206 3 }
1207 2 bLcdData = bSendBit ;
1208 2 Delay();
1209 2 bLcdClock = LOW ;
1210 2 Delay();
1211 2 bLcdClock = HIGH ;
1212 2 nSerialData <<= 1 ;
1213 2 }
1214 1 bLcdCS = HIGH ;
1215 1 }
1216 /////////////////////////////////////////////////////////////////
1217 /*******************************************************/
1218 /******************按键扫描处理************************************/
1219 /******************************************************************/
1220 void Timer0() interrupt 1 using 2
1221 { ET0=0;
1222 1 TH0=0xf8; //TH0 = 0xf8; //2ms for 12MHZ
1223 1 TL0=0xcd; //TL0 = 0x30;
1224 1 //P0 = P0|0x80;
1225 1 P2 = P2|0x08;
1226 1 P3 = 0xff;
1227 1 P1 = P1|keyoff;
1228 1 nTimeCounter++;
1229 1 SendTime++;
1230 1 ReceiveTime++;
C51 COMPILER V7.06 STCCOINBOX 11/10/2007 10:37:46 PAGE 21
1231 1 Cointime++;
1232 1 // Movtime++;
1233 1 Totaltime++;
1234 1
1235 1 if(bCloseTC35iPermit)GsmDelayTime++;
1236 1 if(bDelay20mS)GsmDelayTime++;
1237 1 // if(bDelay160mS)Delay160mSTime++;
1238 1 // if(Delay160mSTime>80){Delay160mSTime=0;bDelay160mS=0;}
1239 1 // if(bDelay1S)Delay1STime++;
1240 1 // if(Delay1STime>500){Delay1STime=0;bDelay1S=0;}
1241 1 //if(bDelay3S)GsmDelayTime++;
1242 1 if((GsmDelayTime>10)&&(bDelay20mS)){GsmDelayTime=0;bDelay20mS=0;}
1243 1 if(GsmDelayTime>1500){GsmDelayTime=0;bCloseTC35iPermit=0;bStartGsm=0;}//bDelay3S=0;
1244 1 // if(Movtime>5000)
1245 1 // {Movtime=0;}
1246 1 keydata1 = P1&keyoff;
1247 1 /**********************Check coin signal for part A*********/
1248 1 ////////////////////////////////////////////////////////////
1249 1 if((T_Status==0)&&(nSpareMoney==0))
1250 1 {
1251 2
1252 2 if(((keydata1!=keyoff)||(bSensorCheck==0))&&(bCheckCoinA == 1))
1253 2 {
1254 3 //////////////////////////////////////////////////////////
1255 3 nKeyHighLevel2Counter++;
1256 3 nKeyLowLevel2Counter = 0;
1257 3 if(nKeyHighLevel2Counter>=KeyMaxHighLevel)
1258 3 {
1259 4 nKeyProcessStep2 = 1;
1260 4 //nKeyHighLevel2Counter =KeyMaxHighLe;
1261 4 if(bSensorCheck==0)//霍尔检测,显示投币总金额
1262 4 {
1263 5 bShowMoneyTotalPermit=1;
1264 5 bShowTotalcoinsumPermit=1;
1265 5 bdisp=1;Disp_Process();
1266 5 keystatus=0;
1267 5 Totaltime=0;
1268 5 }
1269 4 keydata = keydata1;
1270 4 bKeyPermit = FALSE;
1271 4 // if(nKeyHighLevel2Counter==KeyMaxHighLevel)Movtime=0;
1272 4 // bBeepFlag = TRUE;
1273 4 }
1274 3 }
1275 2
1276 2 //////////////////////////////////////////////
1277 2 else
1278 2 {
1279 3 if(nKeyProcessStep2 == 1)
1280 3 {
1281 4 nKeyLowLevel2Counter++;
1282 4 nKeyHighLevel2Counter = 0;
1283 4 if(nKeyLowLevel2Counter>=KeyMaxLowLevel)
1284 4 {
1285 5 nKeyProcessStep2 =2;
1286 5 nKeyLowLevel2Counter =KeyMaxLowLevel;
1287 5 bKeyPermit = TRUE;
1288 5 bEtime=0;
1289 5 }
1290 4 }
1291 3 if(nKeyProcessStep2 == 2)nKeyProcessStep2 = 0;
1292 3
C51 COMPILER V7.06 STCCOINBOX 11/10/2007 10:37:46 PAGE 22
1293 3 }
1294 2 }
1295 1 /////////////////////////////////////////////////////////////
1296 1 if((bCheckCoinA == 1)&&(bKeyCoin==0)) //上电处理
1297 1 {
1298 2 nHigh_CheckCoinCounter++;
1299 2 nLow_CheckCoinCounter = 0;
1300 2 if(nHigh_CheckCoinCounter>= PassWordFlashOnTime)
1301 2 {
1302 3 nCheckLevelStep = 1;
1303 3 nHigh_CheckCoinCounter = PassWordFlashOnTime;
1304 3 }
1305 2 }
1306 1 else
1307 1 {
1308 2 if(nCheckLevelStep == 1)
1309 2 {
1310 3 nLow_CheckCoinCounter++;
1311 3 nHigh_CheckCoinCounter = 0;
1312 3 if(nLow_CheckCoinCounter>= MaxLowLevel)
1313 3 {
1314 4
1315 4 nCheckLevelStep =2;
1316 4 if(nLow_CheckCoinCounter >= MaxLowLevel){nLow_CheckCoinCounter=MaxLowLevel;}/////// ////
1317 4
1318 4 }
1319 3 }
1320 2 }
1321 1
1322 1
1323 1 if(bPassWordPermit)PassWordDelay++;
1324 1 else PassWordDelay=0;
1325 1 if(Delay_ms)Delay_ms--;
1326 1 ET0=1;
1327 1 }
1328 ////////////////////////////////////////////////////////
1329 /////////////////////////////////////////////////////////
1330 void Send (void)
1331 {
1332 1 TI=0;
1333 1 ////////////////////////////////////////////////////////
1334 1 switch(T_Status)
1335 1 {
1336 2 case 0: bRest=0;bTxd0_SendPermit=0;bSetState=0;bSendCommand=0; break;
1337 2 case 1: if(Init_BackTime>=16)
1338 2 {Senddata1 = 0x35; Senddata2 = backtime[Init_BackTime-16];}
1339 2 else{Senddata1=0x34; Senddata2 = backtime[Init_BackTime];}
1340 2 bTxd0_SendPermit=1; SendTime=0; bGetCommand=0; bAckCommand=0; break;
1341 2 case 2: if(bGetCommand==1){T_Status=6; SendTime=0; bTxd0_SendPermit=0;break;}
1342 2 if(SendTime>500){T_Status=1;bTxd0_SendPermit=0;SendTime=0;break;}
1343 2 else{T_Status=2;bTxd0_SendPermit=0;break;}
1344 2 case 3: if(SendTime>5000){Senddata1=0x38;Senddata2=0x30;bTxd0_SendPermit=1;break;}//Walkon
1345 2 else{bTxd0_SendPermit=0;break;}
1346 2 case 4: Senddata1=0x36;Senddata2=0x30;bTxd0_SendPermit=1;bSetState=0;bRest=1;bSendCommand=0;break; //
1347 2 case 5: if(bSetState==1){T_Status=7; SendTime=0; bTxd0_SendPermit=0;break;}
1348 2 if(SendTime>500){T_Status=4;bTxd0_SendPermit=0;SendTime=0;break;}
1349 2 else{T_Status=5;bTxd0_SendPermit=0;break;}
1350 2 case 7: if(bSendCommand==1)
1351 2 {T_Status=0;bTxd0_SendPermit=0;SendTime=0;bSendCommand=0;bERR=0;bRun = Off;break;}
1352 2 if(SendTime>=32000){bTxd0_SendPermit=0;bRun = Off;SendTime=32000; bERR=1;break;} //E //r
1353 2 else{T_Status=7;bTxd0_SendPermit=0;break;}
1354 2 case 6: if(bAckCommand==1)
C51 COMPILER V7.06 STCCOINBOX 11/10/2007 10:37:46 PAGE 23
1355 2 {T_Status=3;bTxd0_SendPermit=0;bAckCommand=0;SendTime=0; break;}
1356 2 if(SendTime>=18000){T_Status=3;SendTime=0; bTxd0_SendPermit=0; break;} //E //r
1357 2 else{T_Status=6;bTxd0_SendPermit=0;break;}
1358 2 default: bTxd0_SendPermit=0; break;
1359 2 }
1360 1 // else{T_Status=0;bTxd0_SendPermit=0;Transmit_Point=6;}
1361 1 ////////////////////////////////////////////////////////
1362 1 if(bTxd0_SendPermit==1)
1363 1 {
1364 2 switch(Transmit_Point)
1365 2 {
1366 3 case 0: SBUF= SOI;Transmit_Point++;break;
1367 3 case 1: SBUF= DATAH;Transmit_Point++;break;
1368 3 case 2: SBUF= DATAL;Transmit_Point++;break;
1369 3 case 3: SBUF= Senddata1;Transmit_Point++;break;
1370 3 case 4: SBUF= Senddata2;Transmit_Point++;break;
1371 3 case 5: SBUF= EOI;Transmit_Point++;break;
1372 3 default:Transmit_Point=6;if((Senddata1==0x34)||(Senddata1==0x35)){T_Status=2;}
1373 3 if(Senddata1==0x38)
1374 3 {
1375 4 T_Status=3;
1376 4 if(SendTime>5000){SendTime=0;}
1377 4 }
1378 3 if(Senddata1==0x36){T_Status=5;}
1379 3 bTxd0_SendPermit=0;break;
1380 3 }
1381 2 }
1382 1 }
1383 /////////////////////////////////////////////////////////
1384 void Receive(void)
1385 {
1386 1 RI=0;
1387 1 switch (R_Status)
1388 1 {
1389 2 case 0: if(SBUF==SOI){R_Status=1;break;}
1390 2 else{R_Status=0;break;}
1391 2 case 1: if(SBUF==GETH){R_Status=2;break;}
1392 2 else{R_Status=0;break;}
1393 2 case 2: if(SBUF==GETL){R_Status=3;Rxd0_DataLength=0;break;}
1394 2 if(SBUF==M_AckCommand){R_Status=5;Rxd0_DataLength=0;break;} ///
1395 2 if(SBUF==M_SetState){R_Status=7;Rxd0_DataLength=0;break;}
1396 2 else{R_Status=0;break;}
1397 2 case 3: if(SBUF==EOI){R_Status=0;Rxd0_DataLength=0;Transmit_Point=0;Send();break;}
1398 2 Rxd0_DataLength++;
1399 2 if(Rxd0_DataLength>21){R_Status=0;Rxd0_DataLength=0;break;}
1400 2 else{R_Status=3;break;}
1401 2 case 5: if(SBUF==DATAACK){R_Status=6;Transmit_Point=0;break;}
1402 2 else{R_Status=0;break;}
1403 2 case 6:
1404 2 if(SBUF==M_GetCommand)
1405 2 {bGetCommand=1; R_Status=0;break;}
1406 2 if(SBUF==M_SetState)
1407 2 {
1408 3 bSetState=1;
1409 3 R_Status=0;
1410 3 break;
1411 3 }
1412 2 if(SBUF==M_AckCommand)
1413 2 {
1414 3 bAckCommand=1;
1415 3 R_Status=0;
1416 3 break;
C51 COMPILER V7.06 STCCOINBOX 11/10/2007 10:37:46 PAGE 24
1417 3 }
1418 2 if(SBUF==S_SendCommand) {bSendCommand=1; R_Status=0;break;}
1419 2 if(SBUF==EOI){R_Status=0;break;Rxd0_DataLength=0;}
1420 2 Rxd0_DataLength++;
1421 2 if(Rxd0_DataLength>21){R_Status=0;Rxd0_DataLength=0;break;}
1422 2 break;
1423 2 case 7: Rxd0_RecBuffer[Rxd0_DataLength]=S
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -