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

📄 cydown.lst

📁 程序描述:使用Cypress的Cy7C68013A芯片进行设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
 183          BOOL HighSpeedCapable()
 184          {
 185   1         // 高速USB处理
 186   1      
 187   1         if (REVID & 0xF0)    //检查是fx2lp/fx1还是fx2.  
 188   1         {
 189   2               
 190   2            // fx2lp 或 fx1 的处理
 191   2            if (GPCR2 & bmHIGHSPEEDCAPABLE)
 192   2               return TRUE;
 193   2            else
 194   2               return FALSE;
 195   2         }
 196   1         else
 197   1         {
 198   2            // fx2 的处理
 199   2            return TRUE;
 200   2         }
 201   1      }   
 202          
 203          // 设备请求
 204          void SetupCommand(void)
 205          {
 206   1         void   *dscr_ptr;
 207   1      
 208   1         switch(SETUPDAT[1])
 209   1         {
 210   2            case SC_GET_DESCRIPTOR:                  //获得描述符
 211   2               if(DR_GetDescriptor())
 212   2                  switch(SETUPDAT[3])         
 213   2                  {
 214   3                     case GD_DEVICE:            //设备
 215   3                        SUDPTRH = MSB(pDeviceDscr);
 216   3                        SUDPTRL = LSB(pDeviceDscr);
 217   3                        break;
 218   3                     case GD_DEVICE_QUALIFIER:            //设备限定
 219   3                                        if (HighSpeedCapable())
 220   3                                        {
 221   4                                SUDPTRH = MSB(pDeviceQualDscr);
 222   4                                SUDPTRL = LSB(pDeviceQualDscr);
 223   4                                        }
 224   3                                        else
 225   3                                        {
 226   4                                                EZUSB_STALL_EP0();
 227   4                                        }
 228   3                                        break;
 229   3                     case GD_CONFIGURATION:         // 配置
 230   3                        SUDPTRH = MSB(pConfigDscr);
 231   3                        SUDPTRL = LSB(pConfigDscr);
 232   3                        break;
 233   3                     case GD_OTHER_SPEED_CONFIGURATION:  // 其它速率配置
 234   3                        SUDPTRH = MSB(pOtherConfigDscr);
 235   3                        SUDPTRL = LSB(pOtherConfigDscr);
 236   3                        break;
 237   3                     case GD_STRING:            // 字符串
 238   3                        if(dscr_ptr = (void *)EZUSB_GetStringDscr(SETUPDAT[2]))
 239   3                        {
 240   4                           SUDPTRH = MSB(dscr_ptr);
 241   4                           SUDPTRL = LSB(dscr_ptr);
C51 COMPILER V7.02a   CYDOWN                                                               07/31/2007 11:33:27 PAGE 5   

 242   4                        }
 243   3                        else 
 244   3                           EZUSB_STALL_EP0();   // 中止端点0
 245   3                        break;
 246   3                     default:            // 无效请求
 247   3                        EZUSB_STALL_EP0();      // 中止端点0
 248   3                  }
 249   2               break;
 250   2            case SC_GET_INTERFACE:                  // 获得接口
 251   2               DR_GetInterface();
 252   2               break;
 253   2            case SC_SET_INTERFACE:                  // 设置接口
 254   2               DR_SetInterface();
 255   2               break;
 256   2            case SC_SET_CONFIGURATION:               //设置配置
 257   2               DR_SetConfiguration();
 258   2               break;
 259   2            case SC_GET_CONFIGURATION:               //获得配置
 260   2               DR_GetConfiguration();
 261   2               break;
 262   2            case SC_GET_STATUS:                  // 获得状态
 263   2               if(DR_GetStatus())
 264   2                  switch(SETUPDAT[0])
 265   2                  {
 266   3                     case GS_DEVICE:            // 设备
 267   3                        EP0BUF[0] = ((BYTE)Rwuen << 1) | (BYTE)Selfpwr;
 268   3                        EP0BUF[1] = 0;
 269   3                        EP0BCH = 0;
 270   3                        EP0BCL = 2;
 271   3                        break;
 272   3                     case GS_INTERFACE:         // 接口
 273   3                        EP0BUF[0] = 0;
 274   3                        EP0BUF[1] = 0;
 275   3                        EP0BCH = 0;
 276   3                        EP0BCL = 2;
 277   3                        break;
 278   3                     case GS_ENDPOINT:         // 端点
 279   3                        EP0BUF[0] = *(BYTE xdata *) epcs(SETUPDAT[4]) & bmEPSTALL;
 280   3                        EP0BUF[1] = 0;
 281   3                        EP0BCH = 0;
 282   3                        EP0BCL = 2;
 283   3                        break;
 284   3                     default:            //无效命令
 285   3                        EZUSB_STALL_EP0();    
 286   3                  }
 287   2               break;
 288   2            case SC_CLEAR_FEATURE:                  // 清除特性
 289   2               if(DR_ClearFeature())
 290   2                  switch(SETUPDAT[0])
 291   2                  {
 292   3                     case FT_DEVICE:            // 设备
 293   3                        if(SETUPDAT[2] == 1)
 294   3                           Rwuen = FALSE;       // 禁止远程唤醒
 295   3                        else
 296   3                           EZUSB_STALL_EP0(); 
 297   3                        break;
 298   3                     case FT_ENDPOINT:     
 299   3                        if(SETUPDAT[2] == 0)
 300   3                        {
 301   4                           *(BYTE xdata *) epcs(SETUPDAT[4]) &= ~bmEPSTALL;
 302   4                           EZUSB_RESET_DATA_TOGGLE( SETUPDAT[4] );
 303   4                        }
C51 COMPILER V7.02a   CYDOWN                                                               07/31/2007 11:33:27 PAGE 6   

 304   3                        else
 305   3                           EZUSB_STALL_EP0();  
 306   3                        break;
 307   3                  }
 308   2               break;
 309   2            case SC_SET_FEATURE:                  // 设置特性
 310   2               if(DR_SetFeature())
 311   2                  switch(SETUPDAT[0])
 312   2                  {
 313   3                     case FT_DEVICE:        
 314   3                        if(SETUPDAT[2] == 1)
 315   3                           Rwuen = TRUE;     
 316   3                        else if(SETUPDAT[2] == 2)
 317   3                           break;
 318   3                        else
 319   3                           EZUSB_STALL_EP0();  
 320   3                        break;
 321   3                     case FT_ENDPOINT:     
 322   3                        *(BYTE xdata *) epcs(SETUPDAT[4]) |= bmEPSTALL;
 323   3                        break;
 324   3                     default:
 325   3                        EZUSB_STALL_EP0();     
 326   3                  }
 327   2               break;
 328   2                case SC_LED1:                                           //显示数字0
 329   2                              DR_LED1();
 330   2                              break;
 331   2                case SC_LED2:                                           //显示数字1
 332   2                              DR_LED2();
 333   2                              break;
 334   2                case SC_LED3:                                          //显示数字2
 335   2                              DR_LED3();
 336   2                              break;
 337   2                case SC_LED4:                                          //显示字符A
 338   2                              DR_LED4();              
 339   2                              break;
 340   2                case SC_LED5:                                          //显示字符F
 341   2                              DR_LED5();
 342   2                              break;
 343   2            default:                                  // 无效命令
 344   2               if(DR_VendorCmnd())
 345   2                  EZUSB_STALL_EP0();            // 停止断点0
 346   2         }
 347   1      
 348   1         //握手
 349   1         EP0CS |= bmHSNAK;
 350   1      }
 351          
 352          // 唤醒中断
 353          void resume_isr(void) interrupt WKUP_VECT
 354          {
 355   1         EZUSB_CLEAR_RSMIRQ();
 356   1      }
 357          
 358          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    974    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.02a   CYDOWN                                                               07/31/2007 11:33:27 PAGE 7   

   DATA SIZE        =     14      16
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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