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

📄 mainusb.lst

📁 usb代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 261   1              {
 262   2                      XBYTE[Cmdaddr]=0xD0;
 263   2                      XBYTE[Dataddr]=(Uchar)(Device_request.wvalue/0x100);
 264   2                      Printn((Uchar)(Device_request.wvalue/0x100));
 265   2                      //for(transp=&Device_request,i=0;i<16;i++,transp++)
 266   2                      //Printn(*transp);
 267   2                      Writeep(1,0,0);
 268   2              }
 269   1      }
*** WARNING C280 IN LINE 239 OF MAINUSB.C: 'i': unreferenced local variable
 270          
 271          void Readep(char n,char *p)
 272          {
*** WARNING C235 IN LINE 272 OF MAINUSB.C: parameter 2: different types
 273   1              char len,i;
 274   1      
 275   1              XBYTE[Cmdaddr]=n;                               //选择端点
 276   1              if(XBYTE[Dataddr]&0x01==0)                      //如果缓冲区为空
 277   1              {
 278   2                      return;
 279   2              }
 280   1                                                              //若不为空
 281   1              XBYTE[Cmdaddr]=0xF0;                            //读缓冲区
 282   1              len=XBYTE[Dataddr];
 283   1              len=XBYTE[Dataddr];
 284   1              if(len==0) return;
 285   1              
 286   1              for(i=0;i<len;i++)
 287   1              {
 288   2                      *p=XBYTE[Dataddr];
 289   2                      //Printn(*p);
 290   2                      p++;
 291   2              }
 292   1              
 293   1              XBYTE[Cmdaddr]=0xF2;                            //清空缓冲区
 294   1      }
 295          
 296          void Writeep(char n, char len, char *p)
 297          {
 298   1              char i;
 299   1              XBYTE[Cmdaddr]=n;                               //选择端点
 300   1              i=XBYTE[Dataddr];                               //选读一个字节
C51 COMPILER V7.06   MAINUSB                                                               03/02/2006 11:53:59 PAGE 6   

 301   1              
 302   1              XBYTE[Cmdaddr]=0xF0;                            //写缓冲区的命令
 303   1              XBYTE[Dataddr]=0;
 304   1              XBYTE[Dataddr]=len;
 305   1              for(i=0;i<len;i++)
 306   1              {
 307   2                      XBYTE[Dataddr]=*p;
 308   2                      //SBUF=*p;Delay(10);
 309   2                      p++;
 310   2              }
 311   1              
 312   1              XBYTE[Cmdaddr]=0xFA;                            //使能缓冲区
 313   1              
 314   1      }
 315          
 316          void Answerep(char n)
 317          {
 318   1              XBYTE[Cmdaddr]=n;
 319   1              XBYTE[Cmdaddr]=0xF1;
 320   1              if(n==0)                                                //若0收到setup包,writeep中的清除缓冲区命令是无效的;
 321   1                      XBYTE[Cmdaddr]=0xF2;                               //在此,应答了setup之后的清除命令才是有效的。
 322   1      }
 323          
 324          void Ep0out()
 325          {
 326   1              char epstate,lastreg;                                   //端点状态 和 最后处理状态寄存器
 327   1              
 328   1              XBYTE[Cmdaddr]=0x80;
 329   1              epstate=XBYTE[Dataddr];                                         //读端点状态
 330   1              //Printn(epstate);
 331   1              
 332   1              XBYTE[Cmdaddr]=0x40;
 333   1              lastreg=XBYTE[Dataddr];                                         //读最后处理状态
 334   1              //Printn(lastreg);
 335   1              
 336   1              
 337   1              if(lastreg&0x20)                                        //如果收到的有Setup包
 338   1              {
 339   2                      
 340   2                      Flag|=Setup_flag;                                       //Setup包的标志置1,表示有Setup包进入
 341   2                      Readep(0,&Device_request);                              //读端点0
*** WARNING C182 IN LINE 341 OF MAINUSB.C: pointer to different objects
 342   2                      
 343   2                      Answerep(0);
 344   2                      Answerep(1);                                            //应答Setup包,使得可以清除缓冲区(F2)和使能缓冲区(FA)
 345   2                      //SUSP=1;
 346   2              }
 347   1              
 348   1              
 349   1      }
 350          
 351          void Ep0in()
 352          {
 353   1              Uchar lastreg;
 354   1              
 355   1              XBYTE[Cmdaddr]=0x41;
 356   1              lastreg=XBYTE[Dataddr];                                         //读最后处理状态,清除中断
 357   1              //Printn(lastreg);
 358   1              
 359   1              if(translen==0) Writeep(1,0,0);
 360   1              /*if(Flag&Trans_flag)
 361   1                      return;
C51 COMPILER V7.06   MAINUSB                                                               03/02/2006 11:53:59 PAGE 7   

 362   1              
 363   1              if(translen>16)
 364   1              {
 365   1                      Writeep(1,16,transp);
 366   1                      translen-=16;
 367   1                      transp+=16;
 368   1              }
 369   1              else if(translen!=0)
 370   1              {
 371   1                      Writeep(1,translen,transp);
 372   1                      translen=0;
 373   1              }
 374   1              else    
 375   1              {
 376   1                      Writeep(1,0,0);
 377   1                      Flag^=Trans_flag;
 378   1              }*/
 379   1      }
 380          
 381          void Ep1out()
 382          {
 383   1              
 384   1      }
 385          void Ep1in()
 386          {
 387   1              
 388   1      }
 389          void Ep2out()
 390          {
 391   1              
 392   1      }
 393          void Ep2in()
 394          {
 395   1              
 396   1      }
 397          void Busreset()
 398          {
 399   1              TestL=0;Delay(1);TestL=1;
 400   1              //SUSP=1;
 401   1      }
 402          void Suspch()
 403          {
 404   1              
 405   1      }
 406          
 407          
 408          
 409          void Connect()
 410          {
 411   1              XBYTE[Cmdaddr]=0xF3;
 412   1              XBYTE[Dataddr]=0x12;
 413   1              XBYTE[Dataddr]=0x80;
 414   1      }
 415          
 416          void Disconnect()
 417          {
 418   1              XBYTE[Cmdaddr]=0xF3;
 419   1              XBYTE[Dataddr]=0x02;
 420   1              XBYTE[Dataddr]=0x80;
 421   1      }
 422          
 423          void Delay(int n)
C51 COMPILER V7.06   MAINUSB                                                               03/02/2006 11:53:59 PAGE 8   

 424          {
 425   1              int i;
 426   1              
 427   1              for(;n>0;n--)
 428   1               for(i=0;i<100;i++)
 429   1               {;}
 430   1      }
 431          
 432          /******************************      INT      *************************************/
 433          
 434          void Serial() interrupt 4
 435          {
 436   1              char c;
 437   1              
 438   1              DISABLE;
 439   1              if(TI==1)
 440   1              {
 441   2                      TI=0;
 442   2                      
 443   2              }
 444   1      
 445   1              if(RI==1)
 446   1              {
 447   2                      c=SBUF;
 448   2                      RI=0;
 449   2                      
 450   2              }
 451   1              
 452   1              ENABLE;
 453   1      }
 454          
 455          void int0() interrupt 0
 456          {
 457   1              unsigned char ir1,ir2;
 458   1              
 459   1              DISABLE;
 460   1              
 461   1              Readintregister(&ir1,&ir2);
 462   1              
 463   1              if(ir1&EP0_OUT)                                         //假如端点0输出中断发生
 464   1              {
 465   2                      Prints("0o\t");
 466   2                      Ep0out();
 467   2              }
 468   1              
 469   1              if(ir1&EP0_IN)                                          //假如端点0输入中断发生
 470   1              {
 471   2                      Prints("0i\t");
 472   2                      Ep0in();
 473   2              }
 474   1              
 475   1              if(ir1&EP1_OUT)                                         //假如端点0输入中断发生
 476   1              {
 477   2                      Prints("1o\t");
 478   2                      Ep1out();
 479   2              }
 480   1              
 481   1              if(ir1&EP1_IN)                                          //假如端点0输入中断发生
 482   1              {
 483   2                      Prints("1i\t");
 484   2                      Ep1in();
 485   2              }
C51 COMPILER V7.06   MAINUSB                                                               03/02/2006 11:53:59 PAGE 9   

 486   1              
 487   1              if(ir1&EP2_OUT)                                         //假如端点0输入中断发生
 488   1              {
 489   2                      Prints("2o\t");
 490   2                      Ep2out();
 491   2              }
 492   1              
 493   1              if(ir1&EP2_IN)                                          //假如端点0输入中断发生
 494   1              {
 495   2                      Prints("2i\t");
 496   2                      Ep2in();
 497   2              }
 498   1              
 499   1              if(ir1&BUS_RESET)                                       //假如总线复位中断发生
 500   1              {
 501   2                      Prints("br\t");
 502   2                      Busreset();
 503   2              }
 504   1              
 505   1              if(ir1&SUSPCH)                                          //假如端点0输入中断发生
 506   1              {
 507   2                      Prints("sc\t");
 508   2                      Suspch();
 509   2              }
 510   1              
 511   1              ENABLE;
 512   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    883    ----
   CONSTANT SIZE    =     93    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17      19
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  4 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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