⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yxktv.lst

📁 C51环境下的KTV用的娱乐投票器
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -