📄 main.lst
字号:
288 serial_tax( unsigned char *Taxdress)
289 {
290 1 unsigned char i;
291 1 unsigned char m=0;
292 1 unsigned char Taxlen;
293 1 unsigned char check_sum=0;
294 1 EA=0;
C51 COMPILER V6.20c MAIN 10/09/2005 11:31:22 PAGE 6
295 1 Taxlen=*(Taxdress+2);
296 1 for(i=1;i<Taxlen+3;i++)
297 1 check_sum+=*(Taxdress+i);
298 1 *(Taxdress+i)=check_sum;
299 1 for(i=0;i<Taxlen+4;i++)
300 1
301 1 { SBUF=*(Taxdress++);
302 2 while(!TI&&(m++<3000))
303 2 Watch_Dog=~Watch_Dog;
304 2 TI=0;
305 2 if(m>=3000)
306 2 goto tax_exit;
307 2
308 2 }
309 1 tax_exit:
310 1
311 1 EA=1;
312 1 }
313 void serial_int( ) interrupt 4
314 {
315 1 unsigned int i,j,n=0;
316 1 unsigned int m=0;
317 1 unsigned char check_sum=0;
318 1 EA=0;
319 1 SERI_BUFF[0]=SBUF;
320 1 RI=0;TI=0;
321 1 if(SERI_BUFF[0]==0xff)
322 1 {
323 2 for(i=1;i<3;i++)
324 2 {
325 3 while(!RI)
326 3 Watch_Dog=~Watch_Dog;
327 3 SERI_BUFF[i]=SBUF;
328 3 RI=0;
329 3 }
330 2 for(i=3;i<SERI_BUFF[2]+4;i++)
331 2 { while(!RI)
332 3 Watch_Dog=~Watch_Dog;
333 3 SERI_BUFF[i]=SBUF;
334 3 RI=0;
335 3 }
336 2 for(i=1;i<SERI_BUFF[2]+3;i++)
337 2 check_sum=SERI_BUFF[i]+check_sum;
338 2 if(check_sum==SERI_BUFF[SERI_BUFF[2]+3])
339 2 {
340 3
341 3 if(SERI_BUFF[1]==0x1e)
342 3 {
343 4 tax_ccode();
344 4 if((GPS_DATA.state&0xf0)==0xa0)
345 4 caibiao();
346 4 FMQ_CNTcai=5;
347 4 BUZZEN=1;// feng ming qi
348 4 }
349 3 if(SERI_BUFF[1]==0xf1)
350 3 {
351 4 tax_ccode();
352 4 j=(SERI_BUFF[3]&0xf0)>>4;
353 4 j=j*1000+(SERI_BUFF[3]&0x0f)*100;
354 4
355 4 if(NOW_BCODE>0)
356 4 {
C51 COMPILER V6.20c MAIN 10/09/2005 11:31:22 PAGE 7
357 5 NOW_BCODE--;
358 5 STORE_DATAb[NOW_BCODE-1].longitude=STORE_DATAb[NOW_BCODE].longitude;
359 5 STORE_DATAb[NOW_BCODE-1].latitude=STORE_DATAb[NOW_BCODE].latitude;
360 5 STORE_DATAb[NOW_BCODE-1].mileage=j;
361 5 STORE_DATAb[NOW_BCODE-1].gap=0xffff;
362 5 STORE_DATAb[NOW_BCODE].longitude=0;
363 5 STORE_DATAb[NOW_BCODE].latitude=0;
364 5 STORE_DATAb[NOW_BCODE].mileage=0;
365 5 STORE_DATAb[NOW_BCODE].gap=0;
366 5 mileageH=j;
367 5 SEND_LCD=1;
368 5 }
369 4 else
370 4 {
371 5 STORE_DATAb[100].longitude=STORE_DATAb[NOW_BCODE].longitude;
372 5 STORE_DATAb[100].latitude=STORE_DATAb[NOW_BCODE].latitude;
373 5 STORE_DATAb[100].mileage=j;
374 5 STORE_DATAb[100].gap=0xffff;
375 5 BGROUP=BGROUP-2;
376 5 XIU_LASTBLOCK=1;
377 5 NOW_BCODE=100;
378 5 BAKE_CODE=0;
379 5 }
380 4 }
381 3 if(SERI_BUFF[1]==0xee)
382 3 {
383 4 tax_ccode();
384 4 i=j=0;
385 4 j=(SERI_BUFF[3]&0xf0)>>4;
386 4 mileageH=j*1000+(SERI_BUFF[3]&0x0f)*100;
387 4 j=(SERI_BUFF[4]&0xf0)>>4;
388 4 mileageH=mileageH+j*10+(SERI_BUFF[4]&0x0f);
389 4 j=(SERI_BUFF[5]&0xf0)>>4;
390 4 i=j*1000+(SERI_BUFF[5]&0x0f)*100;
391 4 j=(SERI_BUFF[6]&0xf0)>>4;
392 4 i=i+j*10+(SERI_BUFF[6]&0x0f);
393 4 HANDRED=mileageL/1000;
394 4 XIANTEMP=SERI_BUFF[7]*256+SERI_BUFF[8];
395 4 if(XIANTEMP!=XIANHAO)
396 4 {
397 5 XIANCHANGE=1;
398 5 XIANHAO=XIANTEMP;
399 5 XIAN_SPOT=FILE_START+(BGROUP-1)*1600+(NOW_BCODE-1)*16;
400 5 }
401 4 STORE_DATAb[NOW_BCODE-1].mileage=mileageH;
402 4 STORE_DATAb[NOW_BCODE-1].gap=0x7fff+i;
403 4 mileageL=mileageL+i*10;
404 4 SEND_LCD=1;
405 4 }
406 3 if(SERI_BUFF[1]==0xed)
407 3 {
408 4 tax_ccode();
409 4 j=(SERI_BUFF[3]&0xf0)>>4;
410 4 m=j*1000+(SERI_BUFF[3]&0x0f)*100;
411 4 j=(SERI_BUFF[4]&0xf0)>>4;
412 4 m=m+j*10+(SERI_BUFF[4]&0x0f);
413 4 j=(SERI_BUFF[5]&0xf0)>>4;
414 4 mileageL=j*1000+(SERI_BUFF[5]&0x0f)*100;
415 4 j=(SERI_BUFF[6]&0xf0)>>4;
416 4 mileageL=mileageL+j*10+(SERI_BUFF[6]&0x0f);
417 4 mileageL=mileageL*10;
418 4 HANDRED=mileageL/1000;
C51 COMPILER V6.20c MAIN 10/09/2005 11:31:22 PAGE 8
419 4 XIANTEMP=SERI_BUFF[7]*256+SERI_BUFF[8];
420 4 if(DIRECTOR)
421 4 {
422 5 if(m>mileageH)
423 5 {
424 6 n=m-mileageH+NOW_BCODE-1;
425 6 if(n>99)
426 6 { BAKE_CODE=n-100;n=100;}
427 6 }
428 5 else
429 5 {
430 6 n=NOW_BCODE-(mileageH-m)-1;
431 6 if(NOW_BCODE<mileageH-m+1)
432 6 {n=(mileageH-m)-NOW_BCODE+1;
433 7 BAKE_CODE=100-n;BGROUP=BGROUP-2; n=100;
434 7 XIU_LASTBLOCK=1;}
435 6 }
436 5 NOW_BCODE=n+1;
437 5 SEND_LCD=1;
438 5 mileageH=m;
439 5 if(n==100)
440 5 NOW_BCODE=100;
441 5 else
442 5 CHECK_BCODE=Get_next_biao(NOW_BCODE);
443 5 }
444 4 else
445 4 {
446 5 if(m>mileageH)
447 5 {
448 6 n=(NOW_BCODE-1)-(m-mileageH);
449 6 if(NOW_BCODE<m-mileageH+1)
450 6 { n=m-mileageH+1-NOW_BCODE;
451 7 BAKE_CODE=100-n;BGROUP=BGROUP-2;n=100;
452 7 XIU_LASTBLOCK=1;
453 7 }
454 6
455 6 }
456 5 else
457 5 {
458 6 n=mileageH-m+NOW_BCODE-1;
459 6 if(n>99)
460 6 { BAKE_CODE=n-100; n=100;}
461 6 }
462 5 NOW_BCODE=n+1;
463 5 SEND_LCD=1;
464 5 mileageH=m;
465 5 if(n==100)
466 5 NOW_BCODE=100;
467 5 else
468 5 CHECK_BCODE=Get_next_biao(NOW_BCODE);
469 5 }
470 4 }
471 3 if(SERI_BUFF[1]==0xef)
472 3 {
473 4 if(DIRECTOR)
474 4 mileageH--;
475 4 else
476 4 mileageH++;
477 4 STORE_DATAb[NOW_BCODE-1].mileage=mileageH;
478 4 RPCOUNT++;
479 4 STORE_DATAb[NOW_BCODE-1].gap=0xfff0+RPCOUNT;
480 4 SEND_LCD=1;
C51 COMPILER V6.20c MAIN 10/09/2005 11:31:22 PAGE 9
481 4 tax_ccode();
482 4 }
483 3 if(SERI_BUFF[1]==0xcc)
484 3 {
485 4 tax_ccode();
486 4 CREATE_FILE=1;
487 4 j=(SERI_BUFF[3]&0xf0)>>4;
488 4 mileageH=j*1000+(SERI_BUFF[3]&0x0f)*100;
489 4 j=(SERI_BUFF[4]&0xf0)>>4;
490 4 mileageH=mileageH+j*10+(SERI_BUFF[4]&0x0f);
491 4 j=(SERI_BUFF[5]&0xf0)>>4;
492 4 mileageL=j*1000+(SERI_BUFF[5]&0x0f)*100;
493 4 j=(SERI_BUFF[6]&0xf0)>>4;
494 4 mileageL=mileageL+j*10+(SERI_BUFF[6]&0x0f);
495 4 mileageL=mileageL*10;
496 4 HANDRED=mileageL/1000;
497 4 FileNumber=SERI_BUFF[7];
498 4 XIANHAO=SERI_BUFF[8]*256+SERI_BUFF[9];
499 4 DIRECTOR=(SERI_BUFF[10]&0x0f);
500 4 TIAN_START=mileageH;
501 4 CONFIG=1;
502 4 LCD_DATA.soutineH=mileageH;
503 4 LCD_DATA.soutineL=mileageL/10;
504 4 SEND_LCD=1;
505 4 }
506 3 if(SERI_BUFF[1]==0xdd)
507 3 {
508 4 tax_ccode();
509 4 OPEN_FILE=1;
510 4 j=(SERI_BUFF[3]&0xf0)>>4;
511 4 mileageH=j*1000+(SERI_BUFF[3]&0x0f)*100;
512 4 j=(SERI_BUFF[4]&0xf0)>>4;
513 4 mileageH=mileageH+j*10+(SERI_BUFF[4]&0x0f);
514 4 j=(SERI_BUFF[5]&0xf0)>>4;
515 4 mileageL=j*1000+(SERI_BUFF[5]&0x0f)*100;
516 4 j=(SERI_BUFF[6]&0xf0)>>4;
517 4 mileageL=mileageL+j*10+(SERI_BUFF[6]&0x0f);
518 4 mileageL=mileageL*10;
519 4 HANDRED=mileageL/1000;
520 4 FileNumber=SERI_BUFF[7];
521 4 XIANHAO=SERI_BUFF[8]*256+SERI_BUFF[9];
522 4 DIRECTOR=SERI_BUFF[10]&0x0f;
523 4 TIAN_START=mileageH;
524 4 CONFIG=1;
525 4 LCD_DATA.soutineH=mileageH;
526 4 LCD_DATA.soutineL=mileageL/10;
527 4 SEND_LCD=1;
528 4 }
529 3 if(SERI_BUFF[1]==0x08)
530 3 {
531 4 STORE_DATA=1;
532 4 YX3_DATA=1;
533 4 YX2_DATA=1;
534 4
535 4 }
536 3 if(SERI_BUFF[1]==0xaa)
537 3 {
538 4 GET_MXI=1;
539 4 CHEXING=SERI_BUFF[3];
540 4 CHE_XING=1;
541 4 tax_ccode();
542 4 }
C51 COMPILER V6.20c MAIN 10/09/2005 11:31:22 PAGE 10
543 3 if(SERI_BUFF[1]==0x3c)
544 3 {
545 4
546 4 if(SERI_BUFF[3]==0xa5)
547 4 rank2_ENABLE=0;
548 4 if(SERI_BUFF[3]==0x5a)
549 4 rank2_ENABLE=1;
550 4 tax_ccode();
551 4 }
552 3 if(SERI_BUFF[1]==0x2d)
553 3 {
554 4 if((OPEN_FILE||CREATE_FILE)&&CHE_XING)
555 4 {
556 5 START_RUN=1;
557 5 STARTOK[0]=0xff;
558 5 STARTOK[1]=0x01;
559 5 STARTOK[2]=0x01;
560 5 STARTOK[3]=0x00;
561 5 STARTOK[4]=0x02;
562 5 tax_ok();
563 5 }
564 4 else
565 4 {
566 5 STARTOK[0]=0xff;
567 5 STARTOK[1]=0x02;
568 5 STARTOK[2]=0x01;
569 5 STARTOK[3]=0x00;
570 5 STARTOK[4]=0x03;
571 5 tax_ok();
572 5 }
573 4 }
574 3 }
575 2 }
576 1 EA=1;
577 1 }
578 //-------------------------------------------------------------
579 // 向控制USB的单片机写数据
580 // 函数名 Write_To_MCU( )
581 // 功能:写一个数据的同时,将P1。6置低,P1。4产生一个下降沿
582 // 触发从单片机的外部中断1,从单片机读取数据的同时将P1。6
583 // 置高,只有在P1。6为高时,主单片机才能写下一个数据。
584 //-------------------------------------------------------------
585 void Write_To_MCUU( )
586 {
587 1 unsigned int i;
588 1 unsigned char *SP;
589 1 unsigned int m=0;
590 1 SETint1=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -