📄 yxktv.lst
字号:
329 2 }
330 1
331 1 if ((IcBuf[0]!=0xAA) | (IcBuf[1]!=0x55))
332 1 {
333 2 //IcBuf[0]=0xAA;IcBuf[1]=0x55;
334 2 //WrBytes24(0,2);
335 2
336 2 AddH=99;AddL=99;//999
337 2 PwrT=2;
338 2 Config1=3;Config2=0;Config3=0;
339 2 //WriteIni();//不改写
340 2 }
341 1 else
342 1 { RdBytes24(2,6);
343 2 AddH=IcBuf[0];AddL=IcBuf[1];
344 2 PwrT=IcBuf[2];
345 2 Config1=IcBuf[3];
346 2 Config2=IcBuf[4];
347 2 Config3=IcBuf[5];
348 2 }
349 1
350 1 }
351
352 void ShowIni()
353 { uchar data i;
354 1 unsigned int data iTemp;
355 1
356 1 LcdBuf[0]=IniPos+0x80;
357 1 LcdBuf[1]=0x0f;
358 1 switch (IniPos)
359 1 {
360 2 case 1:/*地址编号*/
361 2 InputN=2;
362 2 iTemp=AddH;
363 2 i=iTemp/10;
364 2 LcdBuf[2]=i;
365 2 iTemp=iTemp-i*10;
C51 COMPILER V7.00 YXKTV 05/08/2006 17:58:08 PAGE 7
366 2 LcdBuf[3]=iTemp;
367 2 iTemp=AddL;
368 2 i=iTemp/10;
369 2 LcdBuf[4]=i;
370 2 iTemp=iTemp-i*10;
371 2 LcdBuf[5]=iTemp;
372 2 break;
373 2 case 2:/*关机延时*/
374 2 InputN=4;LcdBuf[2]=0x0f;LcdBuf[3]=0x0f;
375 2 iTemp=PwrT;
376 2 i=iTemp /10;
377 2 LcdBuf[4]=i;
378 2 iTemp=iTemp-i*10;
379 2 LcdBuf[5]=iTemp;
380 2 break;
381 2 case 3://无线频点
382 2 InputN=5;LcdBuf[2]=0x0f;LcdBuf[3]=0x0f;LcdBuf[4]=0x0f;
383 2 LcdBuf[5]=Config1&0x3;
384 2 break;
385 2 case 4://软件版本
386 2 InputN=4;LcdBuf[2]=0x0f;LcdBuf[3]=0x0f;
387 2 iTemp=VERSION;
388 2 i=iTemp /10;
389 2 LcdBuf[4]=i|0x80;
390 2 iTemp=iTemp-i*10;
391 2 LcdBuf[5]=iTemp;
392 2 break;
393 2
394 2 }
395 1 ShowNums();
396 1 }
397
398 void SaveIni()
399 {
400 1 unsigned int data iTemp;
401 1
402 1 switch (IniPos)
403 1 {
404 2 case 1:
405 2 AddH=LcdBuf[2]*10+LcdBuf[3];
406 2 AddL=LcdBuf[4]*10+LcdBuf[5];
407 2 break;
408 2 case 2:
409 2 iTemp=LcdBuf[4]*10+LcdBuf[5];
410 2 PwrT=iTemp;
411 2 break;
412 2 case 3:
413 2 iTemp=LcdBuf[5]&0x3;
414 2 Config1=iTemp;
415 2
416 2 }
417 1 WriteIni();
418 1 }
419
420 /*强制关机*/
421 void PwrOff()
422 {
423 1 return;
424 1 }
425
426 /*自动按格式输入数字*/
427 void InpKey()
C51 COMPILER V7.00 YXKTV 05/08/2006 17:58:08 PAGE 8
428 {
429 1 if (KeyNo>10) return;
430 1 LcdBuf[InputN]=KeyNo;
431 1 ShowNums();
432 1
433 1 InputN++;
434 1 if (InputN<6 ) return;
435 1 for (InputN=1;InputN<6;InputN++)
436 1 {
437 2 if ((LcdBuf[InputN]& 0x0f )<10) return;
438 2 }
439 1 InputN=5;
440 1 }
441
442 void SaveKey(uchar iPos)
443 { uchar data iAddr,i;
444 1 for (i=0;i<6;i++)
445 1 { IcBuf[i]=LcdBuf[i];
446 2 }
447 1 iAddr=iPos*8+0x20;
448 1 WrBytes24(iAddr,6);
449 1
450 1 }
451 void ReadKey(uchar iPos)
452 {
453 1 uchar data iAddr,i;
454 1 iAddr=iPos*8+0x20;
455 1 RdBytes24(iAddr,6);
456 1 for (i=0;i<6;i++)
457 1 { LcdBuf[i]=IcBuf[i];
458 2 }
459 1 TimerA=0;
460 1
461 1 }
462 /*键盘设置*/
463 void FuncSetup()
464 {
465 1 uchar data i;
466 1 return;
467 1 }
*** WARNING C280 IN LINE 465 OF C:\WAVE\PEI\YXKTV\YXKTV.C: 'i': unreferenced local variable
468
469 bit CheckMima()
470 { uchar code MIMATAB[] =
471 1 {1,2,0x83,9,9,9};
472 1 uchar data i;
473 1 for (i=0;i<6;i++)
474 1 { if (LcdBuf[i]!=MIMATAB[i]) return 0;}
475 1 return 1;
476 1 }
477
478 void TimerFunc()
479 { uchar i;
480 1
481 1 bTimer=0;
482 1
483 1 LED=~LED;
484 1 if (LedTimer>0)
485 1 { LCDLED=0;
486 2 LedTimer--;
487 2 }else LCDLED=1;
488 1
C51 COMPILER V7.00 YXKTV 05/08/2006 17:58:08 PAGE 9
489 1 if (InputMode>0)
490 1 { if ((bFlash)&&(!bEnter))
491 2 { bFlash=0;
492 3 LcdWrCmd(0x9C);//pos
493 3 LcdWrData(' ');
494 3 for (i=0;i<6;i++) LcdWrData(0x20);
495 3 LcdWrData(' ');
496 3 }
497 2 else
498 2 { bFlash=1;
499 3 ShowNums();
500 3 }
501 2 };
502 1
503 1 if (--SleepTimer==0)
504 1 { SleepTimer=PwrT*120;
505 2 if (--SleepN==0)
506 2 { SleepN=3;
507 3 LcdInit();//显示公司信息
508 3 SleepTimer=40;//20sec
509 3 bLoop=0;
510 3 bLoopShow=0;
511 3 }
512 2 else
513 2 ShowEprom();
514 2 }
515 1 }
516
517 /*统一的发送按键结果*/
518 void SendInfo(uchar iPos,uchar iMode)
519 { uchar data i,Crc;
520 1
521 1 if (iPos<0x80)
522 1 {
523 2 if (iPos!=0)
524 2 {
525 3 iPos=iPos&0x0f;
526 3 if (iPos!=DataPos)
527 3 { //收到不同的DataPos时表示已经启动新的扫描
528 4 DataPos=iPos;
529 4 InputClr();
530 4 ShowNums();
531 4 for (i=0;i<10;i++) IcBuf[i]=0;//多人1投票器
532 4 }
533 3 }
534 2 }
535 1 else
536 1 {//读出记录
537 2 iPos=iPos&0x0f;
538 2 ReadKey(iPos);
539 2 ShowNums();
540 2 bEnter=1;
541 2 }
542 1
543 1 EA=0;SerN=0;TR=0;//send..
544 1 PushSendBuf(0xAA);
545 1 PushSendBuf(0x55);
546 1 PushSendBuf(0);
547 1 PushSendBuf(AddH);
548 1 PushSendBuf(0);
549 1 PushSendBuf(AddL);
550 1
C51 COMPILER V7.00 YXKTV 05/08/2006 17:58:08 PAGE 10
551 1 switch (iMode)
552 1 {
553 2 case 0:
554 2 SerData[2]=0x0B;
555 2 SerData[4]=0x50;
556 2 PushSendBuf(02);
557 2 PushSendBuf(AddH);
558 2 PushSendBuf(AddL );
559 2 PushSendBuf(PwrT);
560 2 PushSendBuf(Config1);
561 2 PushSendBuf(Config2);
562 2 PushSendBuf(Config3);
563 2 break;
564 2 case 1: //多键
565 2 SerData[2]=0x0C;
566 2 if (bEnter) SerData[4]=0x52;else SerData[4]=0x51;
567 2 PushSendBuf(LcdBuf[0]);
568 2 PushSendBuf(LcdBuf[1]);
569 2 PushSendBuf(LcdBuf[2]);
570 2 PushSendBuf(LcdBuf[3]);
571 2 PushSendBuf(LcdBuf[4]);
572 2 PushSendBuf(LcdBuf[5]);
573 2 PushSendBuf(TimerA /256 );
574 2 PushSendBuf(TimerA);
575 2 break;
576 2 case 2://单键
577 2 SerData[2]=0x05;
578 2 SerData[4]=0x53;
579 2 PushSendBuf(LcdBuf[5]);
580 2 break;
581 2 case 3://多人投票
582 2 SerData[2]=0x0E;
583 2 SerData[4]=0x56;
584 2 for (i=0;i<10;i++) PushSendBuf(IcBuf[i]);
585 2 break;
586 2
587 2 case 0x0f://ack...
588 2 SerData[2]=0x06;
589 2 SerData[4]=0x50;
590 2 PushSendBuf(01);//status
591 2 PushSendBuf(InputMode);
592 2 break;
593 2
594 2 }
595 1
596 1 Crc=0;
597 1 for (i=1;i<SerData[2];i++)
598 1 Crc=Crc^SerData[i+2];
599 1
600 1 PushSendBuf(Crc);
601 1 EA=1;
602 1 StartSendBuf();
603 1
604 1 }
605
606 void SendIni()
607 {
608 1 SendInfo(0,0);
609 1 }
610
611 void SendAck() using BANK_SERI
612 { //uchar Crc ;
C51 COMPILER V7.00 YXKTV 05/08/2006 17:58:08 PAGE 11
613 1
614 1 bSendAck=1;TR=0;bSendOk=0;
615 1
616 1 switch (SerN)
617 1 {
618 2 case 0:
619 2 SBUF=0xAA;
620 2 break;
621 2 case 1:
622 2 SBUF=0x55;
623 2 break;
624 2 case 2:
625 2 SBUF=6;
626 2 break;
627 2 case 3:
628 2 SBUF=AddH;
629 2 break;
630 2 case 4:
631 2 SBUF=0x50;
632 2 break;
633 2 case 5:
634 2 SBUF=AddL;
635 2 break;
636 2 case 6:
637 2 SBUF=1; //status
638 2 break;
639 2 case 7:
640 2 SBUF=InputMode;
641 2 break;
642 2 case 8:
643 2 Crc=0;
644 2 Crc=Crc^AddH;
645 2 Crc=Crc^AddL;
646 2 Crc=Crc^0x50;
647 2 Crc=Crc^1;
648 2 Crc=Crc^InputMode;
649 2 SBUF=Crc;
650 2 break;
651 2 default:
652 2 bSendAck=0;
653 2 bSendOk=1;
654 2 SerN=0;
655 2 TR=1;//
656 2 return;
657 2 }
658 1 SerN++;
659 1 }
660
661 /*处理系统命令*/
662 void ReadCmd50()
663 { uchar data i;
664 1 switch (SerData[6]) /*子命令码*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -