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

📄 test02.lst

📁 ps2 to ubs bridge sourc for 8051e code
💻 LST
📖 第 1 页 / 共 5 页
字号:
 402   3                      if(ep1toggle) USB_CTL2 = 0x98;  
 403   3                      else USB_CTL2 = 0x88;
 404   3                      
 405   3                      while(!(USB_STA0 & 0x04));
 406   3                      USB_CTL2 = USB_CTL2 & 0x7F; //clear tx1e
 407   3                      USB_STA0 = USB_STA0 | 0x04; //txd1f=0
 408   3                      ep1toggle = ~ep1toggle;
 409   3                      
 410   3                      kb_idle_cnt = 0;
 411   3                      key_make = 0;
 412   3                      
 413   3              }
 414   2              
 415   2              if(MS_idle_rate & (ms_idle_cnt>(MS_idle_rate << 2))){
 416   3                      //forced tx one mouse packet
 417   3                      USB_EPP = 0;      
 418   3                      USB_EP2 = 1; //Report ID = 1                    
 419   3                      USB_EP2 = 0;
 420   3                      USB_EP2 = 0;
 421   3                      USB_EP2 = 0;
 422   3                      USB_EP2 = 0;
 423   3                      
 424   3                      if(ep2toggle) USB_CTL3 = 0x95;  
 425   3                      else USB_CTL3 = 0x85;
 426   3                      
 427   3                      while(!(USB_STA0 & 0x10));
C51 COMPILER V7.07   TEST02                                                                01/26/2007 14:58:49 PAGE 8   

 428   3                      USB_CTL3 = USB_CTL3 & 0x7F; //clear tx2e
 429   3                      USB_STA0 = USB_STA0 | 0x10; //txd2f=0
 430   3                      ep2toggle = ~ep2toggle;  
 431   3                      
 432   3                      ms_idle_cnt=0;  
 433   3                      
 434   3              }
 435   2      
 436   2              if(configured == 0) goto restart;
 437   2          } // while loop
 438   1      
 439   1      }
 440          
 441          void wait100us(void)
 442          {
 443   1              int iii;
 444   1              for(iii=0;iii<1000;iii++);      
 445   1      }
 446          
 447          
 448          void xreg_init(void)
 449          {
 450   1              IEN0 = 0;
 451   1              IEN1 = 0;
 452   1              //
 453   1              USB_CTL0 = 0;
 454   1              USB_CTL1 = 0;
 455   1              USB_CTL2 = 0;
 456   1              USB_CTL3 = 0;
 457   1              USB_CTL4 = 0;
 458   1              USB_CTL5 = 0; //device address
 459   1              USB_STA0 = 0xFF;
 460   1              USB_EPP = 0;    
 461   1              PS2A_CTL = 0xF2; //enable PS2A
 462   1              PS2A_STA = 0xFF;
 463   1              //
 464   1              PS2B_CTL = 0xF2; //enable PS2B
 465   1              PS2B_STA = 0xFF;
 466   1      }
 467          
 468          
 469          
 470          void USB_ISR (void) interrupt 12 
 471          {
 472   1      
 473   1              if(USB_STA0 & 0x40) { //host reset signalling
 474   2                      USB_CTL0 = 0x90; //set usben,pullen
 475   2                      USB_CTL1 = 0x00;
 476   2                      USB_CTL2 = 0x00;
 477   2                      USB_CTL3 = 0x00;
 478   2                      USB_CTL4 = 0x41; //set urstie,rxd0ie
 479   2                      USB_CTL5 = 0x00;                
 480   2                      USB_EPP  = 0x00;
 481   2                      USB_STA0 = 0xff; //clr all interrupt flags
 482   2                      configured= 0;  
 483   2                      ep1toggle = 0;  
 484   2                      ep2toggle = 0;
 485   2                              
 486   2                      return;
 487   2              }
 488   1              
 489   1              if(USB_STA0 & 0x80) { //host resume signalling
C51 COMPILER V7.07   TEST02                                                                01/26/2007 14:58:49 PAGE 9   

 490   2                      USB_STA0 = USB_STA0 | 0x80; //clr resumef
 491   2                      return;
 492   2              }
 493   1              
 494   1              if(USB_STA0 & 0x01) { //ep0 rx packet           
 495   2                      if(USB_STA1 & 0x80) { //setup packet    
 496   3                              //disable further interrupt
 497   3                              USB_CTL4 = USB_CTL4 & 0xFE; //clear rxd0ie=0            
 498   3                              USB_STA0 = USB_STA0 | 0x01; //clear rxd0f
 499   3                              SETUP_PROC();
 500   3                              USB_CTL4 = USB_CTL4 | 0x01; //set rxd0ie=1
 501   3                              return;
 502   3                      }
 503   2                      else { // out data packet
 504   3                              USB_STA0 = USB_STA0 | 0x01; //clear rxd0f
 505   3                              return;
 506   3                      }       
 507   2              }
 508   1              
 509   1      }
 510          
 511          
 512          
 513          void SETUP_PROC(void)
 514          {
 515   1              unsigned char UADDR;
 516   1              
 517   1              if((USB_STA1 & 0x1F) != 0x08) return;
 518   1              else {
 519   2                      USB_EPP = 0;
 520   2                      SETUPR0 = USB_EP0;
 521   2                      SETUPR1 = USB_EP0;
 522   2                      SETUPR2 = USB_EP0;
 523   2                      SETUPR3 = USB_EP0;
 524   2                      SETUPR4 = USB_EP0;
 525   2                      SETUPR5 = USB_EP0;
 526   2                      SETUPR6 = USB_EP0;
 527   2                      SETUPR7 = USB_EP0;
 528   2                      
 529   2                   //b6-b5=(00)=standard, (01)=class
 530   2                   if((SETUPR0 & 0x60)==0){
 531   3                      
 532   3                      switch (SETUPR1) {
 533   4                              case SET_ADDRESS: {
 534   5                                      if((SETUPR0 == 0) & (SETUPR6 == 0) & (SETUPR7 == 0)) {
 535   6                                              UADDR = SETUPR2;
 536   6                                              in_status();
 537   6                                              USB_CTL5 = UADDR;       
 538   6                                      }
 539   5                                      else {
 540   6                                              USB_CTL1 = USB_CTL1 | 0x20;  //ostall0=1
 541   6                                              USB_CTL2 = USB_CTL2 | 0x40;  //istall0=1
 542   6                                      }
 543   5                                      break;
 544   5                              }
 545   4                              case GET_DESCRIPTOR:    
 546   4                               switch(SETUPR3){
 547   5                                      case  DEVICE_DESC:
 548   5                                              //if((SETUPR7==0) & (SETUPR6 < dev_desc_table[0])) len = SETUPR6;
 549   5                                              //else len = dev_desc_table[0]; 
 550   5                                              if((SETUPR7==0) & (SETUPR6 < 0x12)) len = SETUPR6;
 551   5                                              else len = 0x12;                        
C51 COMPILER V7.07   TEST02                                                                01/26/2007 14:58:49 PAGE 10  

 552   5                                              toggle = 1;
 553   5                                              j=0;
 554   5                                              USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
 555   5                                              while(len){
 556   6                                                      if(len > 0x08) len1 = 0x08;
 557   6                                                      else len1 = len;
 558   6                                                      USB_EPP = 0;    
 559   6                                                      for(i=0;i<len1;i++,j++) USB_EP0 = dev_desc_table[j];
 560   6                                                      
 561   6                                                      if(len1 >= 0x08) {
 562   7                                                              if(toggle) USB_CTL1 = 0xd8;
 563   7                                                              else USB_CTL1 = 0xc8;                                           
 564   7                                                      }
 565   6                                                      else {
 566   7                                                              USB_CTL1 = 0x40;
 567   7                                                              USB_CTL1 = USB_CTL1 | len1;
 568   7                                                              if(toggle) USB_CTL1 = USB_CTL1 | 0xd0;  
 569   7                                                              else USB_CTL1 = USB_CTL1 | 0xc0;                                                
 570   7                                                      }
 571   6                                                      
 572   6                                                      len -= len1;
 573   6                                                      
 574   6                                                      while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
 575   6                                                      USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
 576   6                                                      USB_STA0 = USB_STA0 | 0x02; //txd0f=0
 577   6                                                      toggle = ~toggle;
 578   6                                                      
 579   6                                                      if((len1==8) & (len==0)) {
 580   7                                                              if(toggle) USB_CTL1 = USB_CTL1 | 0xd0;
 581   7                                                              else USB_CTL1 = USB_CTL1 | 0xc0;
 582   7                                                              while(!(USB_STA0 & 0x02)) if(USB_STA0 & 0x01) {out_status(); return;}
 583   7                                                              USB_CTL1 = USB_CTL1 & 0x7F; //clear tx0e
 584   7                                                              USB_STA0 = USB_STA0 | 0x02; //txd0f=0
 585   7                                                      }                                                       
 586   6                                              }                                       
 587   5                                              out_status();
 588   5                                              break;
 589   5                                              
 590   5                                      case CONFIGURATION_DESC: 
 591   5                                      
 592   5                                              if((SETUPR7==0) & (SETUPR6 < conf_desc_table[2])) len = SETUPR6;
 593   5                                              else len = conf_desc_table[2];
 594   5                                                              
 595   5                                              toggle = 1;
 596   5                                              j=0;
 597   5                                              USB_CTL1 = USB_CTL1 | 0x40; //enable rxd0e
 598   5                                              while(len){
 599   6                                                      if(len > 0x08) len1 = 0x08;
 600   6                                                      else len1 = len;
 601   6                                                      USB_EPP = 0;
 602   6                                                      for(i=0;i<len1;i++,j++) USB_EP0 = conf_desc_table[j];
 603   6                                                      if(len >= 0x08) {
 604   7                                                              USB_CTL1 = 0x40;
 605   7                                                              if(toggle) USB_CTL1 = USB_CTL1 | 0x98;
 606   7                                                              else USB_CTL1 = USB_CTL1 | 0x88;                                                        

⌨️ 快捷键说明

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