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

📄 main.lst

📁 通过89s51实现的模拟键盘代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 709   8                                                              T0_stop();
 710   8                                                              cAutoScan=0;    //自动扫描标志
 711   8                                                              }
 712   7                                                                       CameraStop();
 713   7                                                                       Zoom_tele();
 714   7                                                                       break;
 715   7                                                                       
 716   7                                                               case   0x0008:           //向上        上下由T1控制
 717   7                                                                       if(cAutoScan==1)
 718   7                                                              {
 719   8                                                              T0_stop();
 720   8                                                              cAutoScan=0;    //自动扫描标志
 721   8                                                              }
 722   7                                                                       cDirectVertical=1 ;    
 723   7                                                                       T0_stop();
 724   7                                                                       if(cDirectVerticalLim==1 )
 725   7                                                                               break; 
 726   7                                                                               cDirectVerticalLim=0;
 727   7                                                                       T1_start();
 728   7                                                                       break;
 729   7                                                               case   0x0010:           //向下
 730   7                                                                        if(cAutoScan==1)
 731   7                                                              {
 732   8                                                              T0_stop();
 733   8                                                              cAutoScan=0;    //自动扫描标志
 734   8                                                              }
 735   7                                                                       cDirectVertical=-1 ;
 736   7                                                                       T0_stop();
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 13  

 737   7                                                                       if(cDirectVerticalLim==-1 )
 738   7                                                                               break;
 739   7                                                                               cDirectVerticalLim=0;  
 740   7                                                                       T1_start();
 741   7                                                                       break;
 742   7                                                               case   0x001f:           //自动扫描 1 pattern start 
 743   7                                                                       
 744   7                                                                       cAutoScan=1;    //自动扫描标志
 745   7                                                                       cDirectHorizon=1;
 746   7                                                                       T0_start();
 747   7                                                                       break;
 748   7                                                                        case  0x0023:           //自动扫描 2 run pattern
 749   7                                                                       
 750   7                                                                       cAutoScan=1;    //自动扫描标志
 751   7                                                                       cDirectHorizon=1;
 752   7                                                                       T0_start();
 753   7                                                                       break;
 754   7                                                                        case  0x0007:           //自动扫描   3  preset类功能
 755   7                                                                       
 756   7                                                                       cAutoScan=1;    //自动扫描标志
 757   7                                                                       cDirectHorizon=1;
 758   7                                                                       T0_start();
 759   7                                                                       break;
 760   7                        /*
 761   7                                                                case  0x0021:           //自动扫描关闭
 762   7                                                                       T1_stop();
 763   7                                                                       T0_stop();
 764   7                                                                       Focus_stop();
 765   7                                                                       Zoom_stop();
 766   7                                                                        cAutoScan=0;    //自动扫描标志
 767   7                                                                       break;
 768   7                                                                       */
 769   7                                                               case   0x0004:           //向左        左右由T0控制
 770   7                                                                       if(cAutoScan==1)
 771   7                                                              {
 772   8                                                              T0_stop();
 773   8                                                              cAutoScan=0;    //自动扫描标志
 774   8                                                              }
 775   7                                                                       cDirectHorizon=1;
 776   7                                                                       T1_stop();
 777   7                                                                       if(cDirectHorizonLim ==1 )
 778   7                                                                               break; 
 779   7                                                                               cDirectHorizonLim =0;
 780   7                                                                       T0_start();
 781   7                                                                       break;
 782   7                                                               case   0x0002:           //向右
 783   7                                                                       if(cAutoScan==1)
 784   7                                                              {
 785   8                                                              T0_stop();
 786   8                                                              cAutoScan=0;    //自动扫描标志
 787   8                                                              }
 788   7                                                                       cDirectHorizon=-1;
 789   7                                                                       T1_stop();
 790   7                                                                       if(cDirectHorizonLim ==-1 )
 791   7                                                                               break; 
 792   7                                                                               cDirectHorizonLim =0;
 793   7                                                                       T0_start();
 794   7                                                                       break;
 795   7                                                               case   0:                //结束所有运动  1标准
 796   7                                                                       T1_stop();
 797   7                                                                       T0_stop();
 798   7                                                                       CameraStop();
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 14  

 799   7                                                                       
 800   7                                                                       break;
 801   7                                                                       
 802   7                                                               default :break;
 803   7                                                               }
 804   6                                                               
 805   6                                                              break; 
 806   6                                                       }
 807   5                                                       else
 808   5                                                       {                                                         //不是本球机的接收码ID不正确或者是一误码都必须会结束
 809   6                                                               cKeyCodeReceiveState=0;
 810   6                                                               break;                                    //处理并且清除接收标志
 811   6                                                       }
 812   5                                                       
 813   5                                                 default: break;
 814   5                                                }
 815   4      
 816   4                                               }
 817   3                                               }
 818   2                                               break;
 819   2                                              
 820   2      
 821   2               case 12:                                                       //PELCO-D协议
 822   2               
 823   2                      while(1)
 824   2                      {
 825   3                              WDT_cls();
 826   3                      
 827   3                      if(12!=cProtocal)   // 利用协议出错处理
 828   3                              {
 829   4                              goto ERRor;
 830   4                              }       
 831   3                              
 832   3                              if(cKeyCodeReceiveState)
 833   3                              {
 834   4                                      cKeyCodeReceiveState=0; //取走第一个码
 835   4                                      switch(cKeyCodeReceive)
 836   4                                      {
 837   5                                      case 0xff:                //防误码先接收一个FF后接下来进行 判断是否下个码
 838   5                                              
 839   5                              
 840   5                                              while(!cKeyCodeReceiveState)  //对于键盘发出的选择球机也是七位FF开始的码
 841   5                                              {
 842   6                                                      _nop_();
 843   6                                              }
 844   5                                              //  cKeyCodeReceiveState=0;
 845   5                                              if(cKeyCodeReceive==0xff)          //判断是否是误码,FF说明是误码
 846   5                                              {                                                          //不进行处理转入从头开始的循环
 847   6                                                      //不清标志
 848   6                                                      break;
 849   6                                              }
 850   5                                              else if( cKeyCodeReceive==id)   //说明是正确的键盘码转入处理程序
 851   5                                              {
 852   6                                      
 853   6                                                      x=2;
 854   6                                                      pKeyCode=sKeyCode;      
 855   6                                                      *pKeyCode=0xff;    //起始同步码
 856   6                                                      ++pKeyCode;
 857   6                                                      *pKeyCode=id;      //ID码
 858   6                                                      cKeyCodeReceiveState=0;//已取走第二个码
 859   6                                                      do
 860   6                                                      {
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 15  

 861   7                                                      //      x=x + *pKeyCode ;       //从第二个开始累加校验
 862   7                                                              while(!cKeyCodeReceiveState)  //读码等待
 863   7                                                              {
 864   8                                                                      _nop_();
 865   8                                                              }
 866   7                                                              ++pKeyCode;     
 867   7                                                              *pKeyCode=cKeyCodeReceive;
 868   7                                                              cKeyCodeReceiveState=0; //取走键盘码
 869   7                                                              ++x     ;
 870   7                                                      }while( x!=7);   //读码结束进入译码处理程序,取低位
 871   6      
 872   6                                      
 873   6                                                                                                                       /*-------------------------
 874   6                                                                                                                       ---------------------------
 875   6                                                                                                                       下面是译码控制主程序
 876   6                                                      --------------------------------------------------------------------------*/
 877   6                                                
 878   6                                                      if( sKeyCode[3]==0x55)
 879   6                                                              break;
 880   6                                                      x= ((unsigned int)sKeyCode[2]<<8)+sKeyCode[3]; //构造一译码关键字
 881   6                                                      WDT_cls();
 882   6                                              
 883   6                                              
 884   6                                                      switch(x)
 885   6                                                      {
 886   7                                                              case    0x0200:   

⌨️ 快捷键说明

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