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

📄 mainloop.lst

📁 固件源代码 C52驱动编程源码学习中
💻 LST
📖 第 1 页 / 共 2 页
字号:
 217   2                      MCU_LED1 = !(GenEpBuf[3] & 0x2);
 218   2              }
 219   1      }
 220          //--------------------------
 221          void init_unconfig(void)
 222          {
 223   1              //unsigned char i;
 224   1      
 225   1              D12_SetEndpointEnable(0);       /* Disable all endpoints but EPP0. */
 226   1      }
 227          
 228          void init_config(void)
 229          {
 230   1              D12_SetEndpointEnable(1);       /* Enable  generic/iso endpoints. */
 231   1      }
 232          //--------------------------
 233          
 234          void single_transmit(unsigned char * buf, unsigned char len)
 235          {
 236   1              if( len <= EP0_PACKET_SIZE) 
 237   1              {
 238   2                      D12_WriteEndpoint(1, len, buf);
 239   2              }
 240   1      }
 241          
C51 COMPILER V7.01  MAINLOOP                                                               09/27/2003 23:46:51 PAGE 5   

 242          void code_transmit(unsigned char code * pRomData, unsigned short len)
 243          {
 244   1              ControlData.wCount = 0;
 245   1              if(ControlData.wLength > len)
 246   1              {
 247   2                      ControlData.wLength = len;
 248   2              }
 249   1              ControlData.pData = pRomData;
 250   1              if( ControlData.wLength >= EP0_PACKET_SIZE) 
 251   1              {       // 如果发送代码大于包长度
 252   2                      D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);
 253   2                      ControlData.wCount += EP0_PACKET_SIZE;
 254   2      
 255   2                      DISABLE;
 256   2                      bEPPflags.bits.control_state = USB_TRANSMIT;
 257   2                      ENABLE;
 258   2              }
 259   1              else 
 260   1              {                                               //发送代码小于包长度
 261   2                      D12_WriteEndpoint(1, ControlData.wLength, pRomData);
 262   2                      ControlData.wCount += ControlData.wLength;
 263   2                      DISABLE;
 264   2                      bEPPflags.bits.control_state = USB_IDLE;
 265   2                      ENABLE;
 266   2              }
 267   1      }
 268          
 269          //---------------------------
 270          void setup_dma()
 271          {
 272   1              ioSize = ioRequest.uSize;
 273   1              ioCount = 0;
 274   1      
 275   1              DISABLE;
 276   1              bEPPflags.bits.dma_state = DMA_RUNNING;
 277   1              ENABLE;
 278   1      
 279   1              single_transmit(0, 0);
 280   1      
 281   1              if(ioRequest.bCommand & 0x1) 
 282   1              {
 283   2                      if(ioSize > 64 || ioSize == 0) 
 284   2                      {
 285   3                              //if(bNoRAM)
 286   3                                      D12_WriteEndpoint(5, 64, EpBuf);
 287   3                              //else
 288   3                              //      D12_WriteEndpoint(5, 64, MainEpBuf);
 289   3                              ioCount += 64;
 290   3                      }
 291   2                      else 
 292   2                      {
 293   3                              //if(bNoRAM)
 294   3                                      D12_WriteEndpoint(5, ioSize, EpBuf);
 295   3                              //else
 296   3                              //      D12_WriteEndpoint(5, ioSize, MainEpBuf);
 297   3                              ioCount += ioSize;
 298   3                      }
 299   2              }
 300   1      }
 301          
 302          //------------------------------
 303          void control_handler()
C51 COMPILER V7.01  MAINLOOP                                                               09/27/2003 23:46:51 PAGE 6   

 304          {
 305   1              unsigned char type, req;
 306   1              
 307   1              type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK; //0x60
 308   1              req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;            //0x0F
 309   1      
 310   1              if (type == USB_STANDARD_REQUEST)
 311   1              {
 312   2                      (*StandardDeviceRequest[req])();
 313   2              }
 314   1              else if (type == USB_VENDOR_REQUEST)
 315   1              {
 316   2                      (*VendorDeviceRequest[req])();
 317   2              }
 318   1              else
 319   1              {
 320   2                      stall_ep0();
 321   2              }
 322   1      }
 323          
 324          
 325          
 326          void main()
 327          {
 328   1      //      unsigned char key, i;
 329   1              //bNoRam=1;
 330   1              
 331   1              init_port();
 332   1              init_serial();
 333   1              init_timer0(); 
 334   1              EA = 1; 
 335   1              //for test
 336   1              MCU_LED0=0;
 337   1              MCU_LED1=0;
 338   1              MCU_LED0=1;
 339   1              MCU_LED1=1;
 340   1              //--------------
 341   1              printf("LQBD12 USB board Version3.0\n");
 342   1              IE0=0;
 343   1              IT0=0;
 344   1              EX0=1;
 345   1              MCU_D12CS = 0x1;
 346   1      
 347   1              bNoRAM = TRUE;
 348   1      
 349   1              MCU_D12CS = 0x0;
 350   1      
 351   1                      reconnect_USB();
 352   1      
 353   1              while( TRUE )
 354   1              {
 355   2                 SBUF= 0xAA;
 356   2                      if (bEPPflags.bits.timer)
 357   2                      {
 358   3                              DISABLE;
 359   3                              bEPPflags.bits.timer = 0;
 360   3                              ENABLE;
 361   3      
 362   3                              if(bEPPflags.bits.configuration)
 363   3                                      check_key_LED();
 364   3                      }
 365   2      
C51 COMPILER V7.01  MAINLOOP                                                               09/27/2003 23:46:51 PAGE 7   

 366   2                      if (bEPPflags.bits.bus_reset) 
 367   2                      {
 368   3                              DISABLE;
 369   3                              bEPPflags.bits.bus_reset = 0;
 370   3                              ENABLE;
 371   3                              // Release D12's SUSPEND pin after bus reset
 372   3                              // Enable 74HCT123 pulse generation before disconnect
 373   3                              ///D12SUSPD = 1;
 374   3                              D12SUSPD=0;
 375   3                      } // if bus reset
 376   2      
 377   2                      if (bEPPflags.bits.suspend) 
 378   2                      {
 379   3                              DISABLE;
 380   3                              bEPPflags.bits.suspend= 0;
 381   3                              ENABLE;
 382   3      
 383   3                              if(D12SUSPD == 1) 
 384   3                              {
 385   4                                      D12SUSPD = 0;
 386   4                                      P0 = 0xFF;
 387   4                                      P1 = 0xFF;
 388   4                                      P2 = 0xFF;
 389   4                                      P3 = 0xFF;
 390   4                                      D12_SetDMA(0xC3);
 391   4                                      D12SUSPD = 1;
 392   4                                      PCON |= 0x02;
 393   4                                      while (1);
 394   4                      
 395   4                              }
 396   3                      
 397   3                      } // if suspend change
 398   2      
 399   2                      if (bEPPflags.bits.setup_packet)
 400   2                      {
 401   3                              DISABLE;
 402   3                              bEPPflags.bits.setup_packet = 0;
 403   3                              ENABLE;
 404   3                              control_handler();
 405   3                              //D12SUSPD = 1;
 406   3                              D12SUSPD=0;
 407   3                      } // if setup_packet
 408   2                      
 409   2                      if(bEPPflags.bits.setup_dma != 0) 
 410   2                      {
 411   3                              DISABLE;
 412   3                              bEPPflags.bits.setup_dma --;
 413   3                              ENABLE;
 414   3                              setup_dma();
 415   3                      } // if setup_dma
 416   2                      
 417   2              } // Main Loop
 418   1      
 419   1          on_exit();
 420   1              //=======================================       
 421   1       
 422   1      }
 423          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    740    ----
C51 COMPILER V7.01  MAINLOOP                                                               09/27/2003 23:46:51 PAGE 8   

   CONSTANT SIZE    =    148    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26       8
   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 + -