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

📄 d12main.lst

📁 usb_232(仅枚举)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 177   1      
 178   1              D12_SetEndpointEnable(0);       /* Disable all endpoints but EPP0. */
 179   1      }
C51 COMPILER V7.01  D12MAIN                                                                11/14/2003 09:44:52 PAGE 4   

 180          
 181          void init_config(void)
 182          {
 183   1              D12_SetEndpointEnable(1);       /* Enable  generic/iso endpoints. */
 184   1      }
 185          //通过端点索引1发送数据DATA类型
 186          void single_transmit(unsigned char *buf, unsigned char len)
 187          {
 188   1              if( len <= EP0_PACKET_SIZE)
 189   1              {
 190   2            
 191   2                      D12_WriteBuffer(1,buf,len);
 192   2              
 193   2              }
 194   1                
 195   1      }
 196          
 197          //通过端点索引1发送数据CODE 类型
 198          void code_transmit(unsigned char code * pRomData, unsigned short len)
 199          {
 200   1              ControlData.wCount = 0;
 201   1              if(ControlData.wLength > len)
 202   1                      {
 203   2                           ControlData.wLength = len;//发送数据长度限制
 204   2                      }
 205   1      
 206   1              ControlData.pData = pRomData;
 207   1              
 208   1              if( ControlData.wLength >= EP0_PACKET_SIZE) 
 209   1              {       // 如果发送代码大于包长度
 210   2                      D12_WriteBuffer(1,  ControlData.pData,  EP0_PACKET_SIZE);
 211   2                      ControlData.wCount += EP0_PACKET_SIZE;
 212   2      
 213   2                      DISABLE;
 214   2                    bEPPflags.bits.control_state = USB_TRANSMIT;
 215   2                      ENABLE;
 216   2              }
 217   1              else {                                          //发送代码小于包长度
 218   2                      D12_WriteBuffer(1,  pRomData,  ControlData.wLength);
 219   2                      ControlData.wCount += ControlData.wLength;
 220   2                      DISABLE;
 221   2                      bEPPflags.bits.control_state = USB_IDLE;
 222   2                      ENABLE;
 223   2              }
 224   1      }
 225          
 226          
 227          
 228          void control_handler()
 229          {
 230   1              unsigned char type, req;
 231   1              
 232   1              type = ((ControlData.DeviceRequest.bmRequestType )& USB_REQUEST_TYPE_MASK);     //0x60
 233   1              req = ((ControlData.DeviceRequest.bRequest) & USB_REQUEST_MASK);                //0x0F
 234   1      
 235   1              //help_devreq(type, req); // print out device request
 236   1      
 237   1              if (type == USB_STANDARD_REQUEST)
 238   1                      (*StandardDeviceRequest[req])();
 239   1              else if (type == USB_VENDOR_REQUEST)
 240   1                      (*VendorDeviceRequest[req])();
 241   1              else
C51 COMPILER V7.01  D12MAIN                                                                11/14/2003 09:44:52 PAGE 5   

 242   1                      stall_ep0();
 243   1              
 244   1      }
 245          
 246          void main()
 247          {
 248   1      //      unsigned char key, i;
 249   1              BOOL in_loop = TRUE;
 250   1              //bNoRAM=TRUE;
 251   1              init_port();
 252   1              init_serial();
 253   1              //init_counter0();
 254   1              init_timer0(); 
 255   1              
 256   1       
 257   1              
 258   1              //printf("Re-connect PDIUSBD12 evaluation board to USB.\n");
 259   1              
 260   1              //EX0  = 0;
 261   1              IT0  = 0;//设置INT1为低电平中断触发
 262   1              EX0  = 1;//允许外部中断1
 263   1              PX0  = 0;//设置为低优先级
 264   1              
 265   1            //
 266   1             MCU_D12CS = 0x1;
 267   1             MCU_D12CS = 0x0;
 268   1                      /* Power on reset, lightup LEDs for 1 sec,
 269   1                         disconnect and reconnect Soft-Connect */
 270   1                      //printf("\nPDIUSBD12 SMART evaluation board firmware V3.0.\n");
 271   1           
 272   1            bEPPflags.value = 0;//清除事件标志寄存器
 273   1            
 274   1            reconnect_USB();//重新链接USB
 275   1           // EX1  = 1;//允许外部中断1        
 276   1            
 277   1       
 278   1              
 279   1       /* Main program loop */
 280   1              
 281   1              while(TRUE) //主循环
 282   1              {
 283   2              
 284   2                      if (bEPPflags.bits.timer)       //定时器溢出 
 285   2                      {
 286   3                              DISABLE;
 287   3                              bEPPflags.bits.timer = 0;  //清定时器溢出标志
 288   3                              ENABLE;
 289   3      
 290   3                      }
 291   2      
 292   2                      if (bEPPflags.bits.bus_reset)   //总线复位
 293   2                       {
 294   3                              DISABLE;
 295   3                              bEPPflags.bits.bus_reset = 0;        //清除总线复位标志
 296   3                              ENABLE;
 297   3                              // Release D12's SUSPEND pin after bus reset
 298   3                              // Enable 74HCT123 pulse generation before disconnect
 299   3                              ///D12SUSPD = 1;
 300   3                              D12SUSPD=0;                          //释放D12的挂起状态
 301   3                        } // if bus reset
 302   2      
 303   2                      if (bEPPflags.bits.suspend)        //挂起改变处理
C51 COMPILER V7.01  D12MAIN                                                                11/14/2003 09:44:52 PAGE 6   

 304   2                        {
 305   3                              DISABLE;
 306   3                              bEPPflags.bits.suspend= 0;   //清除挂起改变标志
 307   3                              ENABLE;
 308   3      
 309   3                              if(D12SUSPD == 1)            //D12已进入挂起处理
 310   3                               {
 311   4                                      D12SUSPD = 0;         //唤醒D12,使得USB器件在MCU进入彽功耗模式后再进入挂起
 312   4                                      P0 = 0xFF;
 313   4                                      P1 = 0xFF;
 314   4                                      P2 = 0xFF;
 315   4                                      P3 = 0xFF;
 316   4                                      //D12_SetDMA(0xC3);
 317   4                                      D12SUSPD = 1;         //释放D12挂起状态
 318   4                                      PCON |= 0x02;          //进入调电模式
 319   4                                      while (1);             //芯片进入死循环,因为标志51进入掉电后,只有复位才能唤醒芯片
 320   4                              }
 321   3                         } // if suspend change
 322   2      
 323   2                      if (bEPPflags.bits.setup_packet)
 324   2                          {
 325   3                              DISABLE;
 326   3                              bEPPflags.bits.setup_packet = 0;
 327   3                              ENABLE;
 328   3                              control_handler();
 329   3                              D12SUSPD = 1;     //释放D12的挂起状态
 330   3                              
 331   3                           } // if setup_packet
 332   2                      
 333   2                      /*if (bEPPflags.bits.ep1_transmit)
 334   2                          {
 335   2                              ep1_txdone();
 336   2                           } */
 337   2              } // Main Loop
 338   1        //on_exit();  
 339   1      }
 340          
 341          
 342          
 343          
 344          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    546    ----
   CONSTANT SIZE    =     96    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =     26       9
   DATA SIZE        =   ----    ----
   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 + -