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

📄 main.lst

📁 通过89s51实现的模拟键盘代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 352   1      下面是复位监测程序取消 cDirectHorizon    cAutoScan初始化
 353   1      ----------------------------------------------------------------------     */
 354   1              if((cAutoScan==1)&&( P1_0==1 )) //自动扫描标志存在就进行左开始及水平定时器开始,后面就进入
 355   1              {
 356   2              cDirectHorizon=1;         //取消方向,由复位RAM保留决定
 357   2              T0_start();
 358   2              }
 359   1              else
 360   1              {
 361   2               AutoTest();    
 362   2              }                                 //自检程序      
 363   1              cKeyCodeReceiveState=0; 
 364   1      
 365   1              switch(cProtocal)                                //与说明手册上控制位一致
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 7   

 366   1              
 367   1              {
 368   2               default:   break;
 369   2               case 1:           //三星协议 
 370   2              while(1)
 371   2                               {      
 372   3              
 373   3                                       WDT_cls();     
 374   3                              if(1!=cProtocal)   // 利用协议出错处理
 375   3                              {
 376   4                              goto ERRor;
 377   4                              }                        
 378   3                                       if(cKeyCodeReceiveState)
 379   3                                       {
 380   4                                              
 381   4              
 382   4                                               switch((unsigned char)cKeyCodeReceive)
 383   4                                               {
 384   5                                               case 0xa0:               //防误码先接收一个FF后接下来进行 判断是否下个码
 385   5      
 386   5               
 387   5                                                cKeyCodeReceiveState=0; //取走第一个码
 388   5                                                       while(!cKeyCodeReceiveState)  //对于键盘发出的选择球机也是七位FF开始的码
 389   5                                                       {
 390   6                                                               _nop_();
 391   6      
 392   6                                                       }
 393   5                                              
 394   5              
 395   5                                                       if(0xa0==(unsigned char)cKeyCodeReceive)          //判断是否是误码,FF说明是误码
 396   5                                                       {                                                       
 397   6                                                               
 398   6      
 399   6                                                               break;          //
 400   6                                                       }
 401   5                                                                                                       
 402   5                                                       else                     //上一个取发送地址码但无用舍去
 403   5                                                       cKeyCodeReceiveState=0; 
 404   5                                                       while(!cKeyCodeReceiveState)  
 405   5                                                       {
 406   6                                                               _nop_();
 407   6      
 408   6                                                       }
 409   5                                                       if( (unsigned char)cKeyCodeReceive==id)        //说明是正确的键盘码转入处理程序
 410   5                                                       {
 411   6                                                               
 412   6                                                               x=3;
 413   6                                                                       pKeyCode=sKeyCode;     
 414   6                                                               *pKeyCode=0xa0;           //起始同步码
 415   6                                                              
 416   6                                                               ++pKeyCode;  //跳过发送地址
 417   6                                                               ++pKeyCode;
 418   6                                                               *pKeyCode=id;     //ID码
 419   6         
 420   6                                                               cKeyCodeReceiveState=0;//已取走第3个码
 421   6                                                               do
 422   6                                                               {
 423   7                                                              //       x=x+*pKeyCode  ;       //从第二个开始累加校验
 424   7                                                                       while(!cKeyCodeReceiveState)  //读码等待
 425   7                                                                       {
 426   8                                                                               _nop_();
 427   8                                                                       }
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 8   

 428   7                                                                       ++pKeyCode;    
 429   7                                                                       *pKeyCode=cKeyCodeReceive;
 430   7              
 431   7                                                                       cKeyCodeReceiveState=0; //取走键盘码
 432   7                                                                       ++x;   
 433   7                                                               }while(x!=9);   //读码结束标志
 434   6                                                      
 435   6              
 436   6                                                                      
 437   6              
 438   6                                                               y= (((unsigned long)sKeyCode[3])<<16)+(((unsigned long)sKeyCode[4])<<8)+(unsigned long)sKeyCode[5]
             -; 
 439   6                                                               //构造一译码关键字
 440   6                                              
 441   6                                                               WDT_cls();
 442   6                                                                
 443   6                                       
 444   6                                                                switch(y)
 445   6                                                               {
 446   7                                                               case   0x010800:                 //光圈开
 447   7                                                                        if(cAutoScan==1)
 448   7                                                              {
 449   8                                                              T0_stop();
 450   8                                                              cAutoScan=0;    //自动扫描标志
 451   8                                                              }
 452   7                                                                       CameraStop();
 453   7                                                                       IrisOpen();
 454   7                                                                       break;
 455   7                                                              case    0x011000:                 //光圈关
 456   7                                                                        if(cAutoScan==1)
 457   7                                                              {
 458   8                                                              T0_stop();
 459   8                                                              cAutoScan=0;    //自动扫描标志
 460   8                                                              }
 461   7                                                                       CameraStop();
 462   7                                                                       IrisClose();
 463   7                                                                       break; 
 464   7                                                               case   0x010200:                 //焦距拉近       因电路接线 必须单操作
 465   7                                                                      if(cAutoScan==1)
 466   7                                                              {
 467   8                                                              T0_stop();
 468   8                                                              cAutoScan=0;    //自动扫描标志
 469   8                                                              }
 470   7                                                                       CameraStop();
 471   7                                                                       Focus_near();
 472   7                                                                       break;
 473   7                                                                       
 474   7                                                               case   0x010100:                 //焦距拉远
 475   7                                                                       if(cAutoScan==1)
 476   7                                                              {
 477   8                                                              T0_stop();
 478   8                                                              cAutoScan=0;    //自动扫描标志
 479   8                                                              }
 480   7                                                                       CameraStop();
 481   7                                                                       Focus_far()    ;
 482   7                                                                       break;
 483   7                                                                       
 484   7                                                               case   0x014000:                 //视角宽
 485   7                                                                        if(cAutoScan==1)
 486   7                                                              {
 487   8                                                              T0_stop();
 488   8                                                              cAutoScan=0;    //自动扫描标志
C51 COMPILER V7.50   MAIN                                                                  11/03/2008 11:24:32 PAGE 9   

 489   8                                                              }
 490   7                                                                       CameraStop();
 491   7                                                                       Zoom_wide();
 492   7                                                                       break;
 493   7                                                                       
 494   7                                                               case   0x012000:                 //视角窄
 495   7                                                                        if(cAutoScan==1)
 496   7                                                              {
 497   8                                                              T0_stop();
 498   8                                                              cAutoScan=0;    //自动扫描标志
 499   8                                                              }
 500   7                                                                       CameraStop();
 501   7                                                                       Zoom_tele();
 502   7                                                                       break;
 503   7                                                                       
 504   7                                                               case   0x010004:                 //向上        上下由T1控制
 505   7                                                                       if(cAutoScan==1)
 506   7                                                              {
 507   8                                                              T0_stop();
 508   8                                                              cAutoScan=0;    //自动扫描标志
 509   8                                                              }
 510   7                                                                       cDirectVertical=1 ;    
 511   7                                                                       T0_stop();
 512   7                                                                       if(cDirectVerticalLim==1 )
 513   7                                                                               break; 
 514   7                                                                       cDirectVerticalLim=0;
 515   7                                                                       T1_start();
 516   7                                                                       break;
 517   7                                                               case   0x010008:                 //向下
 518   7                                                                      if(cAutoScan==1)
 519   7                                                              {
 520   8                                                              T0_stop();
 521   8                                                              cAutoScan=0;    //自动扫描标志
 522   8                                                              }
 523   7                                                                       cDirectVertical=-1 ;
 524   7                                                                       T0_stop();
 525   7                                                                       if(cDirectVerticalLim==-1 )
 526   7                                                                               break;
 527   7                                                                               cDirectVerticalLim=0;
 528   7                                                                       T1_start();
 529   7                                                                       break;

⌨️ 快捷键说明

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