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

📄 periph.lst

📁 在KEILC下进行编译的程序,单片机可以进行AD,DA数据采集
💻 LST
📖 第 1 页 / 共 2 页
字号:

 242   3                              // Is this an upload command ?
 243   3                              if(SETUPDAT[0] == VR_UPLOAD)//信号从单片机到计算机
 244   3                              {
 245   4                                      while(len)                                      // Move requested data through EP0IN 
 246   4      
 247   4                                      //把请求的数据通过EP0IN传给计算机
 248   4                                      {                                                       // one packet at a time.一次一包数据。
 249   5                                              if(len < 64)
 250   5                                                      bc = len;           //把LEN的值传给BC
 251   5                                              else
 252   5                                                      bc = 64;
 253   5                                              // Is this a RAM upload ?
 254   5                                              if(SETUPDAT[1] == ZSUSB20DDB_VENDOR_REQUEST_SRAM_ACCESS)//如果是SRAM通道
 255   5                                              {
 256   6                                                      for(i=0; i<bc; i++)
 257   6                                                              *(EP0BUF+i) = *((BYTE xdata *)addr+i);//意思 是把SRAM里的数据通过EP0BUF传给计算机
 258   6                                              }
 259   5                                              else
 260   5                                              {
 261   6                                                      EEPROMRead(addr,bc,(WORD)EP0BUF);//否则调用EEPROMRead函数。把EEPROM里的数据给计算机
 262   6                                              }
 263   5                                              EP0BCH = 0;
 264   5                                              EP0BCL = (BYTE)bc; // Arm endpoint,表示要传输的数据长度。
 265   5                                              addr += bc;   //每次发送64个字,地址增加
 266   5                                              len -= bc;    //每次发送64个字,剩余的数据减小。
 267   5      
 268   5                                              while(EP0CS & bmEPBUSY);       //如果数据没有发送完,就等待。
 269   5                                      }
 270   4                              }
 271   3                              // Is this a download command ?
 272   3                              else if(SETUPDAT[0] == VR_DOWNLOAD)    //信号从计算机到单片机
 273   3                              {
 274   4                                      while(len)                                      // Move new data through EP0OUT 
 275   4                                      {                                                       // one packet at a time.
 276   5                                              // Arm endpoint - do it here to clear (after sud avail)
 277   5                                              EP0BCH = 0;
 278   5                                              EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 279   5                                              //使OUT端点有效,表示主机可以发送数据了
 280   5      
 281   5                                              while(EP0CS & bmEPBUSY);
 282   5                                              //等待主机发送数据
 283   5      
 284   5                                              bc = EP0BCL; // Get the new bytecount//数据的长度保存在EP0BCL中。
 285   5                                              // Is this a RAM download ?
 286   5                                              if(SETUPDAT[1] == ZSUSB20DDB_VENDOR_REQUEST_SRAM_ACCESS)
 287   5                                              {
 288   6                                                      for(i=0; i<bc; i++)
 289   6                                                               *((BYTE xdata *)addr+i) = *(EP0BUF+i);
 290   6                                              }
 291   5                                              else
 292   5                                                      EEPROMWrite(addr,bc,(WORD)EP0BUF);
 293   5                                              addr += bc;
 294   5                                              len -= bc;
 295   5                                      }
 296   4                              }
 297   3                              break;
 298   3                      }
 299   2      
 300   2      
 301   2      
 302   2                      default:return(TRUE);
 303   2              }
C51 COMPILER V7.09   PERIPH                                                                04/03/2007 16:19:05 PAGE 6   

 304   1              return(FALSE);
 305   1      
 306   1      
 307   1      
 308   1      
 309   1      }
 310          
 311          //-----------------------------------------------------------------------------
 312          // USB Interrupt Handlers
 313          //   The following functions are called by the USB interrupt jump table.
 314          //-----------------------------------------------------------------------------
 315          
 316          // Setup Data Available Interrupt Handler
 317          void ISR_Sudav(void) interrupt 0
 318          {
 319   1         GotSUD = TRUE;            // Set flag
 320   1         EZUSB_IRQ_CLEAR();
 321   1         USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
 322   1      }
 323          
 324          // Setup Token Interrupt Handler
 325          void ISR_Sutok(void) interrupt 0
 326          {
 327   1         EZUSB_IRQ_CLEAR();
 328   1         USBIRQ = bmSUTOK;         // Clear SUTOK IRQ
 329   1      }
 330          
 331          void ISR_Sof(void) interrupt 0
 332          {
 333   1         EZUSB_IRQ_CLEAR();
 334   1         USBIRQ = bmSOF;            // Clear SOF IRQ
 335   1      }
 336          
 337          void ISR_Ures(void) interrupt 0
 338          {
 339   1         // whenever we get a USB reset, we should revert to full speed mode
 340   1         pConfigDscr = pFullSpeedConfigDscr;
 341   1         ((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
 342   1         pOtherConfigDscr = pHighSpeedConfigDscr;
 343   1         ((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
 344   1         
 345   1         EZUSB_IRQ_CLEAR();
 346   1         USBIRQ = bmURES;         // Clear URES IRQ
 347   1      }
 348          
 349          void ISR_Susp(void) interrupt 0
 350          {
 351   1         Sleep = TRUE;
 352   1         EZUSB_IRQ_CLEAR();
 353   1         USBIRQ = bmSUSP;
 354   1      }
 355          
 356          void ISR_Highspeed(void) interrupt 0
 357          {
 358   1         if (EZUSB_HIGHSPEED())
 359   1         {
 360   2            pConfigDscr = pHighSpeedConfigDscr;
 361   2            ((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
 362   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 363   2            ((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
 364   2         }
 365   1      
C51 COMPILER V7.09   PERIPH                                                                04/03/2007 16:19:05 PAGE 7   

 366   1         EZUSB_IRQ_CLEAR();
 367   1         USBIRQ = bmHSGRANT;
 368   1      }
 369          void ISR_Ep0ack(void) interrupt 0
 370          {
 371   1      }
 372          void ISR_Stub(void) interrupt 0
 373          {
 374   1      }
 375          void ISR_Ep0in(void) interrupt 0
 376          {
 377   1      }
 378          void ISR_Ep0out(void) interrupt 0
 379          {
 380   1      }
 381          void ISR_Ep1in(void) interrupt 0
 382          {
 383   1      }
 384          void ISR_Ep1out(void) interrupt 0
 385          {
 386   1      }
 387          void ISR_Ep2inout(void) interrupt 0
 388          {
 389   1      }
 390          void ISR_Ep4inout(void) interrupt 0
 391          {
 392   1      }
 393          void ISR_Ep6inout(void) interrupt 0
 394          {
 395   1      }
 396          void ISR_Ep8inout(void) interrupt 0
 397          {
 398   1      }
 399          void ISR_Ibn(void) interrupt 0
 400          {
 401   1      }
 402          void ISR_Ep0pingnak(void) interrupt 0
 403          {
 404   1      }
 405          void ISR_Ep1pingnak(void) interrupt 0
 406          {
 407   1      }
 408          void ISR_Ep2pingnak(void) interrupt 0
 409          {
 410   1      }
 411          void ISR_Ep4pingnak(void) interrupt 0
 412          {
 413   1      }
 414          void ISR_Ep6pingnak(void) interrupt 0
 415          {
 416   1      }
 417          void ISR_Ep8pingnak(void) interrupt 0
 418          {
 419   1      }
 420          void ISR_Errorlimit(void) interrupt 0
 421          {
 422   1      }
 423          void ISR_Ep2piderror(void) interrupt 0
 424          {
 425   1      }
 426          void ISR_Ep4piderror(void) interrupt 0
 427          {
C51 COMPILER V7.09   PERIPH                                                                04/03/2007 16:19:05 PAGE 8   

 428   1      }
 429          void ISR_Ep6piderror(void) interrupt 0
 430          {
 431   1      }
 432          void ISR_Ep8piderror(void) interrupt 0
 433          {
 434   1      }
 435          void ISR_Ep2pflag(void) interrupt 0
 436          {
 437   1      }
 438          void ISR_Ep4pflag(void) interrupt 0
 439          {
 440   1      }
 441          void ISR_Ep6pflag(void) interrupt 0
 442          {
 443   1      }
 444          void ISR_Ep8pflag(void) interrupt 0
 445          {
 446   1      }
 447          void ISR_Ep2eflag(void) interrupt 0
 448          {
 449   1      }
 450          void ISR_Ep4eflag(void) interrupt 0
 451          {
 452   1      }
 453          void ISR_Ep6eflag(void) interrupt 0
 454          {
 455   1      }
 456          void ISR_Ep8eflag(void) interrupt 0
 457          {
 458   1      }
 459          void ISR_Ep2fflag(void) interrupt 0
 460          {
 461   1      }
 462          void ISR_Ep4fflag(void) interrupt 0
 463          {
 464   1      }
 465          void ISR_Ep6fflag(void) interrupt 0
 466          {
 467   1      }
 468          void ISR_Ep8fflag(void) interrupt 0
 469          {
 470   1      }
 471          void ISR_GpifComplete(void) interrupt 0
 472          {
 473   1      }
 474          void ISR_GpifWaveform(void) interrupt 0
 475          {
 476   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    788    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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