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

📄 vendor.lst

📁 周立功dp1581usb2.0实验仪
💻 LST
📖 第 1 页 / 共 2 页
字号:
 115          
 116          
 117          //***********************************************************************
C51 COMPILER V7.01  VENDOR                                                                 03/28/2003 14:38:29 PAGE 3   

 118          //*                                                                                                                                                    *
 119          //*     Routine         : DMA Mode                                                         *
 120          //*     Input           : DMA Controller setting                                                    *
 121          //*     Output  : None                                                                        *
 122          //*     Function        : to do GDMA data transfer                                            *
 123          //*                                                                                                                                                            *
 124          //***********************************************************************
 125          
 126          void DMA_Mode(Data)
 127          {
 128   1              UI Datcount;
 129   1      
 130   1              if(Data)
 131   1              {
 132   2                      //read
 133   2                      do
 134   2                      {
 135   3                              //Check for Out Token ACK interrupt
 136   3                              while(!USB_Int_Flag.BITS.EP2RX)
 137   3                              {
 138   4                                      if(USB_Int_Flag.BITS.SUSP || Kernel_Flag.BITS.Bus_Reset || USB_Int_Flag.BITS.EP0SETUP)
 139   4                                              break;
 140   4                              }
 141   3                              EA_DISABLE;
 142   3                              USB_Int_Flag.BITS.EP2RX = 0;
 143   3                              EA_ENABLE;
 144   3                              D14_Cntrl_Reg.D14_ENDPT_INDEX = 4;
 145   3                              D14_Cntrl_Reg.D14_DMA_ENDPOINT = 2;
 146   3                              //Read in FIFO data
 147   3                              if (bytecount > PIO_Count)
 148   3                              {
 149   4                                      Datcount = PIO_Count;
 150   4                              }
 151   3                              else
 152   3                              {
 153   4                                      Datcount = bytecount;
 154   4                              }
 155   3                              if(Kernel_Flag.BITS.HS_FS_State == FULL_SPEED)
 156   3                              {
 157   4                                      for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
 158   4                                              Endpt_FIFO[Count_PIO] = D14_Cntrl_Reg.D14_DATA_PORT_LSB;
 159   4                              }
 160   3                              else
 161   3                              {
 162   4                                      for(Count_PIO = 0 ; Count_PIO < Datcount; Count_PIO++)
 163   4                                              Temp = D14_Cntrl_Reg.D14_DATA_PORT_LSB;
 164   4                              }
 165   3                              bytecount -= Datcount;
 166   3                      }while(bytecount);
 167   2              }
 168   1              else
 169   1              {
 170   2                      //write
 171   2                      do
 172   2                      {
 173   3                              //initialize endpoint index
 174   3                              D14_Cntrl_Reg.D14_ENDPT_INDEX = 5;
 175   3                              D14_Cntrl_Reg.D14_DMA_ENDPOINT = 2;
 176   3                              //Write data to FIFO
 177   3                              if (bytecount>PIO_Count)
 178   3                              {
 179   4                                      D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) PIO_Count;
C51 COMPILER V7.01  VENDOR                                                                 03/28/2003 14:38:29 PAGE 4   

 180   4                                      D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (PIO_Count>>8);
 181   4                                      Datcount = PIO_Count;
 182   4                              }
 183   3                              else
 184   3                              {
 185   4                                      D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) bytecount;
 186   4                                      D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (bytecount>>8);
 187   4                                      Datcount = bytecount;
 188   4                              }
 189   3      
 190   3                              if(Kernel_Flag.BITS.HS_FS_State == FULL_SPEED)
 191   3                              {
 192   4                                      for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
 193   4                                              D14_Cntrl_Reg.D14_DATA_PORT_LSB = Endpt_FIFO[Count_PIO];
 194   4                              }
 195   3                              else
 196   3                              {
 197   4                                      for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
 198   4                                              D14_Cntrl_Reg.D14_DATA_PORT_LSB = Count_PIO % 256;
 199   4                              }
 200   3                              //Check for In Token ACK
 201   3                              while(!USB_Int_Flag.BITS.EP2TX)
 202   3                              {    
 203   4                                      if(USB_Int_Flag.BITS.SUSP || Kernel_Flag.BITS.Bus_Reset || USB_Int_Flag.BITS.EP0SETUP)
 204   4                                              break;
 205   4                              }    
 206   3                              EA_DISABLE;
 207   3                              USB_Int_Flag.BITS.EP2TX = 0;
 208   3                              EA_ENABLE;
 209   3                              bytecount -= Datcount; 
 210   3                      }while(bytecount);
 211   2                      //stop DMA controller
 212   2                      DMA_Start = GDMA_Stop;
 213   2                      //transfewr done,reset internal variables
 214   2                      DMA_Int_Flag.BITS.DMA_DONE = 0;
 215   2                      Count_PIO = 0;
 216   2              }
 217   1              Kernel_Flag.BITS.Transfer_Start = 0;  
 218   1      }
 219          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    627    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       4
   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 + -