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

📄 main.lst

📁 通过89s51实现的模拟键盘代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 530   7                                                               case   0x010001:                 //向左        左右由T0控制
 531   7                                                                 if(cAutoScan==1)
 532   7                                                              {
 533   8                                                              T0_stop();
 534   8                                                              cAutoScan=0;    //自动扫描标志
 535   8                                                              }
 536   7                                                                       cDirectHorizon=1;
 537   7                                                                       T1_stop();
 538   7                                                                       if(cDirectHorizonLim ==1 )
 539   7                                                                               break; 
 540   7                                                                               cDirectHorizonLim =0;    //可以运动则复位
 541   7                                                                       T0_start();
 542   7                                                                       break;
 543   7                                                               case   0x010002:                 //向右
 544   7                                                                      if(cAutoScan==1)
 545   7                                                              {
 546   8                                                              T0_stop();
 547   8                                                              cAutoScan=0;    //自动扫描标志
 548   8                                                              }
 549   7                                                                       cDirectHorizon=-1;
 550   7                                                                       T1_stop();
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 10  

 551   7                                                                       if(cDirectHorizonLim ==-1 )
 552   7                                                                               break; 
 553   7                                                                               cDirectHorizonLim =0;     //可以运动则复位
 554   7                                                                       T0_start();
 555   7                                                                       break;
 556   7                                                                case   0x031301:                //自动扫描
 557   7                                                                cAutoScan=1;    //自动扫描标志
 558   7                                                              cDirectHorizon=1;
 559   7                                                              T0_start();
 560   7                                                              break;
 561   7                                                                case   0x031a01:                //自动扫描
 562   7                                                                cAutoScan=1;    //自动扫描标志
 563   7                                                              cDirectHorizon=1;
 564   7                                                              T0_start();
 565   7                                                              break;
 566   7                                                              case   0x031b01:                  //自动扫描
 567   7                                                                cAutoScan=1;    //自动扫描标志
 568   7                                                              cDirectHorizon=1;
 569   7                                                              T0_start();
 570   7                                                              break;
 571   7                                                                       case   0x010000:                 //结束所有运动   2  明景工控
 572   7                                                                       T1_stop();
 573   7                                                                       T0_stop();
 574   7                                                                       CameraStop();
 575   7                                                                       break;
 576   7                                                               default :break;
 577   7                                                               }
 578   6                                                               
 579   6                                       
 580   6                                                               break;                            //处理程序后的分枝完成
 581   6                                              
 582   6                                              
 583   6                                                       }
 584   5                                                       else
 585   5                                                       {                                                         //不是本球机的接收码ID不正确或者是一误码都必须会结束
 586   6                                                               cKeyCodeReceiveState=0;
 587   6                                                               break;                                    //处理并且清除接收标志
 588   6                                                       }
 589   5                                                       
 590   5                                                 default:        break;
 591   5                                                                                        }                                                //结束协议一次接收
 592   4                                      
 593   4                                               }                                                 //结束  if有数
 594   3              
 595   3                                               }                                                 //结束协议的while
 596   2                                               break;                                    //结束协议的case事件
 597   2                
 598   2               
 599   2               case 2:           //PELCO-P协议
 600   2                                                      
 601   2                               while(1)
 602   2                               {      
 603   3                               
 604   3      
 605   3                                       WDT_cls();     
 606   3                      
 607   3                              if(2!=cProtocal)   // 利用协议出错处理
 608   3                              {
 609   4                              goto ERRor;
 610   4                              }       
 611   3                                       if(cKeyCodeReceiveState)
 612   3                                       {
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 11  

 613   4                                               cKeyCodeReceiveState=0; //取走第一个码
 614   4                                               switch(cKeyCodeReceive)
 615   4                                               {
 616   5                                               case 0xa0:               //防误码先接收一个FF后接下来进行 判断是否下个码
 617   5                                                       while(!cKeyCodeReceiveState)  //对于键盘发出的选择球机也是七位FF开始的码
 618   5                                                       {
 619   6                                                               _nop_();
 620   6                                                       }
 621   5                                                       //  cKeyCodeReceiveState=0;
 622   5                                                       if(cKeyCodeReceive==0xa0)         //判断是否是误码,FF说明是误码
 623   5                                                       {                                                         //不进行处理转入从头开始的循环
 624   6                                                               //不清标志
 625   6                                                               break;
 626   6                                                       }
 627   5                                                       else if( cKeyCodeReceive==id)  //说明是正确的键盘码转入处理程序
 628   5                                                       {
 629   6                                                               x=2;
 630   6                                                                       pKeyCode=sKeyCode;     
 631   6                                                               *pKeyCode=0xa0;           //起始同步码
 632   6                                                               ++pKeyCode;
 633   6                                                               *pKeyCode=id;     //ID码
 634   6                                                               cKeyCodeReceiveState=0;//已取走第二个码
 635   6                                                               do
 636   6                                                               {
 637   7                                                              //       x=x^*pKeyCode  ;       //从第二个开始累加校验
 638   7                                                                       while(!cKeyCodeReceiveState)  //读码等待
 639   7                                                                       {
 640   8                                                                              _nop_();
 641   8                                                                       }
 642   7                                                                       ++pKeyCode;    
 643   7                                                                       *pKeyCode=cKeyCodeReceive;
 644   7                                                                       cKeyCodeReceiveState=0; //取走键盘码
 645   7                                                                       ++x;   
 646   7                                                               }while( x!=8);  //读码结束标志
 647   6                                                      
 648   6                                                                                                                              
 649   6                                                      
 650   6                                                               x= ((unsigned int)sKeyCode[2]<<8)+sKeyCode[3]; //构造一译码关键字
 651   6                                                               WDT_cls();
 652   6                                                                               
 653   6                                        
 654   6                                       
 655   6                                                               switch(x)
 656   6                                                               {
 657   7                                                               case   0x0400:           //光圈开
 658   7                                                                        if(cAutoScan==1)
 659   7                                                              {
 660   8                                                              T0_stop();
 661   8                                                              cAutoScan=0;    //自动扫描标志
 662   8                                                              }
 663   7                                                                       CameraStop();
 664   7                                                                       IrisOpen();
 665   7                                                                       break;
 666   7                                                              case    0x0800:           //光圈关
 667   7                                                                        if(cAutoScan==1)
 668   7                                                              {
 669   8                                                              T0_stop();
 670   8                                                              cAutoScan=0;    //自动扫描标志
 671   8                                                              }
 672   7                                                                       CameraStop();
 673   7                                                                       IrisClose();
 674   7                                                                       break; 
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 12  

 675   7                                                               
 676   7                                                               case   0x0200:           //焦距拉近
 677   7                                                                       if(cAutoScan==1)
 678   7                                                              {
 679   8                                                              T0_stop();
 680   8                                                              cAutoScan=0;    //自动扫描标志
 681   8                                                              }
 682   7                                                                       CameraStop();
 683   7                                                                       Focus_near();
 684   7                                                                       break;
 685   7                                                                       
 686   7                                                               case   0x0100:           //焦距拉远
 687   7                                                                       if(cAutoScan==1)
 688   7                                                              {
 689   8                                                              T0_stop();
 690   8                                                              cAutoScan=0;    //自动扫描标志
 691   8                                                              }
 692   7                                                                       CameraStop();
 693   7                                                                       Focus_far();
 694   7                                                                       break;
 695   7                                                                       
 696   7                                                               case   0x0040:           //视角宽
 697   7                                                                       if(cAutoScan==1)
 698   7                                                              {
 699   8                                                              T0_stop();
 700   8                                                              cAutoScan=0;    //自动扫描标志
 701   8                                                              }
 702   7                                                                       CameraStop();
 703   7                                                                       Zoom_wide();
 704   7                                                                       break;
 705   7                                                                       
 706   7                                                               case   0x0020:           //视角窄
 707   7                                                                       if(cAutoScan==1)
 708   7                                                              {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -