📄 mmm.lst
字号:
287 * *
288 * *
289 ****************************************************************************/
290 void isr_timer0(void) interrupt 1 using 0
291 {
292 1 //TR0=0;
293 1 if(com2)
294 1 {
295 2 if(RXTimerOUT!=0) //此if{}else{} 为新加入的判断超时功能
296 2 {
297 3 RXTimerOUT--;
298 3 }
C51 COMPILER V7.05 MMM 09/08/2004 21:09:47 PAGE 6
299 2 else
300 2 {
301 3
302 3 RXSTAT=0;
303 3 RXNOM=0;
304 3 }
305 2 }//end ifcom2
306 1
307 1 if(com1)
308 1 {
309 2 if ( Timer0Cnt != 0 )
310 2 {
311 3 --Timer0Cnt;
312 3 }
313 2 else
314 2 {
315 3 TR0 = 0 ;
316 3 if ((RecvState == RECV_DLE) || (RecvState == RECV_DLE_OR_NAK)) //发送起始字超时
317 3 {
318 4 ErrorCount++;
319 4 if ( ErrorCount <= 1)
320 4 {
321 5 SendReady = TRUE;
322 5 TI = 1;
323 5 }
324 4 else
325 4 {
326 5 ErrorCount = 0 ;
327 5 SendReady = FALSE;
328 5 RecvReady = TRUE;
329 5 RecvState = RECV_STX;
330 5 En485 = RECV;
331 5 //Ir_En = RECV;
332 5
333 5 }
334 4 }
335 3 else //接收超时
336 3 {
337 4 SendReady = FALSE;
338 4 RecvReady = TRUE;
339 4 RecvState = RECV_STX;
340 4 En485 = RECV;
341 4
342 4 };
343 3 };
344 2 }
345 1
346 1 TR0=1;
347 1 TH0=0X90;
348 1 TL0=0X95;
349 1 //TR0=1;
350 1 }
351 //**************************************************************
352 unsigned char Find(unsigned char addr)
353 {
354 1 unsigned char i=0;
355 1 TX_EN=1;
356 1 Delay1ms(4);
357 1 // Test_led=!Test_led;
358 1 PutChar1(0x55);
359 1 PutChar1(0xaa);
360 1 PutChar1(addr);
C51 COMPILER V7.05 MMM 09/08/2004 21:09:47 PAGE 7
361 1 PutChar1(addr);
362 1 TX_EN=0;
363 1 Comm_On();
364 1 Delay1ms(13);
365 1
366 1 /*while(!rxok)
367 1 {
368 1 Delay1ms(1);
369 1 i++;
370 1 if(i>20)break;
371 1 }*/
372 1 Comm_Off();
373 1 TX_EN=1;
374 1 if(rxok)
375 1 {
376 2 rxok=0;
377 2 if(ring_flg==2)Waring=1;
378 2 return(ring_flg);
379 2 }
380 1 else
381 1 {
382 2 return 0;// return 0;
383 2 }
384 1
385 1 }
386
387 /****************************************************************************
388 * *
389 * Function: TransferRecord *
390 * *
391 * Input: - uchar 1 *
392 * Output: - 0 *
393 * *
394 * Description: *
395 ****************************************************************************/
396 TransferRecord(unsigned char Day , unsigned int i)
397 {
398 1 Day=0;
399 1 SerBuffer[3] = RemainRec[i][0];//.Flg ;
400 1
401 1 SerBuffer[4] = RemainRec[i][1];//ParkingRecord[i].CardID.chrX[3] ;
402 1 SerBuffer[5] =RemainRec[i][2];//ParkingRecord[i].CardID.chrX[2] ;
403 1 SerBuffer[6] =RemainRec[i][3];//ParkingRecord[i].CardID.chrX[1] ;
404 1 SerBuffer[7] =RemainRec[i][4];//ParkingRecord[i].CardID.chrX[0] ;
405 1
406 1 SerBuffer[8] = RemainRec[i][5];// ParkingRecord[i].BeginTime.hour ;
407 1 SerBuffer[9] =RemainRec[i][6];// ParkingRecord[i].BeginTime.minute ;
408 1 SerBuffer[10]= RemainRec[i][7];// ParkingRecord[i].BeginTime.second ;
409 1
410 1 SerBuffer[11] =RemainRec[i][8]; // ParkingRecord[i].BeginTime.century ;
411 1 SerBuffer[12] =RemainRec[i][9];// ParkingRecord[i].BeginTime.year ;
412 1 SerBuffer[13] =RemainRec[i][10];// ParkingRecord[i].BeginTime.month ;
413 1 SerBuffer[14] =RemainRec[i][11];// ParkingRecord[i].BeginTime.day ;
414 1 SerBuffer[15] =RemainRec[i][12];
415 1 SerBuffer[16] =RemainRec[i][13];
416 1 SerBuffer[17] =RemainRec[i][14];
417 1 SerBuffer[18] =RemainRec[i][15];
418 1 //SerBuffer[14] =RemainRec[i][16];
419 1 }
420 //*************************************************************************
421 void SetPosNum(unsigned char xdata *dat)
422 {
C51 COMPILER V7.05 MMM 09/08/2004 21:09:47 PAGE 8
423 1 //ByteWrite_Check (124,dat[0]);
424 1 ByteWrite_Check(20,dat[0]);
425 1 ADDR=dat[0];
426 1
427 1 }
428 /****************************************************************************
429 * cmd_execution(); *
430 * Function: *
431 * *
432 * Input: *
433 * Output: - *
434 * *
435 * Description: *
436 ****************************************************************************/
437 void cmd_execution(void)
438 { unsigned char len ; //Status ;//, adr ;
439 1 //unsigned int e;
440 1 //unsigned char idata size , tt[2];
441 1
442 1 //WatchDog();
443 1 len = SerBuffer[2] ;
444 1 SerBuffer[2] = 0 ;
445 1
446 1 switch ( SerBuffer[1] )
447 1 {
448 2 case 0x80: //Write time
449 2
450 2 SerBuffer[1] = 0;
451 2 SerBuffer[2] = 0;
452 2 break;
453 2 case 0x81: //green LED
454 2 if ( SerBuffer[3] == 1) {LED_GREEN = 1;}
455 2 else if( SerBuffer[3] == 0) { LED_GREEN = 0;};
456 2
457 2 SerBuffer[1] = 0;
458 2 SerBuffer[2] = 0;
459 2 break;
460 2
461 2 case 0x82: //red RED
462 2 if ( SerBuffer[3] == 1) {LED_RED = 1;}
463 2 else if( SerBuffer[3] == 0) { LED_RED = 0;};
464 2
465 2 SerBuffer[1] = 0;
466 2 SerBuffer[2] = 0;
467 2 break;
468 2
469 2
470 2 case 0x83: //Transfer Record
471 2 // Status = TransferRecord(SerBuffer[3],SerBuffer[4]);
472 2 // SerBuffer[1] = Status;
473 2 recordint.chrX[1]=SerBuffer[4];
474 2 recordint.chrX[0]=SerBuffer[5];
475 2
476 2 TransferRecord(SerBuffer[3],recordint.intX);
477 2 SerBuffer[1] =0;
478 2 SerBuffer[2] =16;
479 2
480 2
481 2
482 2
483 2 break;
484 2
C51 COMPILER V7.05 MMM 09/08/2004 21:09:47 PAGE 9
485 2 case 0x85: //Config FeeRate
486 2
487 2 SerBuffer[1] = 0;
488 2 SerBuffer[2] = 0;
489 2 break;
490 2
491 2 case 0x86: //return ocuppy or vacance
492 2
493 2 SerBuffer[2] = 0;
494 2 break;
495 2
496 2 case 0x87: //Set Meter Number
497 2 //MeterNum.chrX[3] = SerBuffer[3];
498 2 // MeterNum.chrX[2] = SerBuffer[4];
499 2 // MeterNum.chrX[1] = SerBuffer[5];
500 2 // MeterNum.chrX[0] = SerBuffer[6];
501 2 SetPosNum(&SerBuffer[3]); //add
502 2 SerBuffer[1] = 0;
503 2 SerBuffer[2] = 0;
504 2 break;
505 2 case 0x90:
506 2 SerBuffer[1] = 0;
507 2 SerBuffer[2] = 0;
508 2 break;
509 2 case 0x91:
510 2 SerBuffer[1] = 0;
511 2 SerBuffer[2] = 0;
512 2 break;
513 2 case 0x92:
514 2 SerBuffer[1] = 0;
515 2 SerBuffer[2] = 0;
516 2 break;
517 2 case 0x93:
518 2 SerBuffer[1] = 0;
519 2 SerBuffer[2] = 0;
520 2 break;
521 2
522 2
523 2 default:
524 2 SerBuffer[1] = 250; //command error
525 2 SerBuffer[2] = 0;
526 2 break;
527 2 };
528 1
529 1 }
530 //**************************************************************************
531 void main(void)
532 {
533 1 unsigned int xx=0;
534 1
535 1 unsigned char idata i=0,j;
536 1 unsigned long idata yyy=0;
537 1
538 1 TX_EN=0;
539 1 Test_led=0;
540 1 Delay100ms(1);
541 1 Test_led=1;
542 1 TX_EN=1;
543 1 init_com();
544 1 InitREG();
545 1 UartInit();
546 1 Delay100ms(1);
C51 COMPILER V7.05 MMM 09/08/2004 21:09:47 PAGE 10
547 1 Comm_Off();
548 1 PWR_UP=1;
549 1 Watch_dog();
550 1 EA=1;
551 1 Init_X25045(0x00);
552 1 ByteWrite_Check (22,0X34);
553 1 if( ByteRead_Check (22)==0x34)//测试25045
554 1 { Test_led=!Test_led;
555 2 Delay100ms(10);
556 2 Test_led=!Test_led;
557 2 }
558 1
559 1 if((ByteRead_Check(20)==0x00)||(ByteRead_Check(20)==0xff))ADDR=0XD2;
560 1 else
561 1 ADDR=ByteRead_Check(20);
562 1 // ADDR=0xd2;
563 1 if(ADDR%2)
564 1 {
565 2 CS=0;
566 2 }
567 1 else
568 1 {
569 2 CS=1;
570 2 }
571 1 for(i=0;i<4;i++)//clear
572 1 {
573 2 for(j=0;j<16;j++)
574 2 RemainRec[i][j]=0;
575 2 }
576 1 En485=0;
577 1 while(1)
578 1 {
579 2 Watch_dog();
580 2 if (Cmdok) //通讯
581 2 {
582 3 Cmdok = FALSE;
583 3 En485=1;
584 3 TI = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -