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

📄 d12isr.lst

📁 usb_232(仅枚举)
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  D12ISR                                                                 11/14/2003 09:44:52 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE D12ISR
OBJECT MODULE PLACED IN D12ISR.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\c51.exe D12ISR.C DB OE COMPACT ROM(LARGE)

stmt level    source

   1          //#pragma SYMBOLS
   2          
   3          #include"stdio.h"
   4          #include"X52.H"
   5          #include"HAL.H"
   6          #include"D12CI.H"
   7          #include"MAIN.H"
   8          #include"usb100.H"
   9          //#include"absacc.h"
  10          /****************************************************************************
  11          * this program mainly handles interrupt generated by pdiusbd12.It retrieves *
  12          * data from pdiusbd12's internal FIFO to CPU memory and set up the proper   *
  13          * event flags to inform main loop program for processing.                   *
  14          *****************************************************************************/
  15          unsigned long ClockTicks = 0;
  16          unsigned char xdata MainEpBuf[256];
  17          unsigned char idata dd[4];
  18          unsigned int k;
  19          unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
  20          unsigned char idata EpBuf[EP2_PACKET_SIZE];
  21          //extern unsigned char idata GenEpBuf[EP1_PACKET_SIZE];
  22          //extern unsigned char idata EpBuf[EP2_PACKET_SIZE];
  23          //extern unsigned char D12_WriteBuffer(unsigned char endp ,unsigned char *buf,unsigned char len);
  24          unsigned char ioSize, ioCount;
  25          IO_REQUEST idata ioRequest;
  26          BOOL bNoRAM;
  27          //extern DATA_SAMPLE();
  28          //extern unsigned char adc_sam();
  29          //extern void D12_SetEndpointStatus(unsigned char bEndp ,unsigned char bStalled) reentrant;
  30          //extern unsigned char D12_ReadBuffer(unsigned char endp, unsigned char * buf,unsigned char len);
  31          //extern unsigned char D12_WriteBuffer(unsigned char endp, unsigned char * buf,unsigned char len)reentrant
             -;
  32          extern  EPPFLAGS  bEPPflags;
  33          extern CONTROL_XFER ControlData;
  34          
  35          //void adc_das();
  36          void fn_usb_isr();
  37          void bus_reset(void);
  38          void ep0_rxdone(void);
  39          void ep1_rxdone(void);
  40          void ep0_txdone(void);
  41          void ep1_txdone(void);
  42          void main_txdone(void);
  43          void main_rxdone(void);
  44          void dma_eot(void);
  45          
  46          timer_isr() interrupt 1
  47          {
  48   1              DISABLE;
  49   1              //ClockTicks++;
  50   1              bEPPflags.bits.timer = 1;
  51   1              ENABLE;
  52   1      }
  53          
  54          /* adc_das() interrupt 1
C51 COMPILER V7.01  D12ISR                                                                 11/14/2003 09:44:52 PAGE 2   

  55          {
  56          
  57          UCHAR idata result;
  58          result=adc_sam();
  59          
  60          
  61          }*/
  62          //UCHAR i;
  63          /*void data_sam(void)   interrupt 0    
  64          {
  65            UCHAR tmp;
  66            unsigned char  i=8;                    //ADC0809有八个模拟输入通道
  67            XBYTE[ADC]=i;
  68            WRITE=0;                //启动A/D转换
  69            //while(i && READ==0 && EOC==0);
  70            while(i>=1 && READ==0 );                //等待八个通道A/D转换完毕
  71                tmp=XBYTE[ADC];                   //读A/D转换结果
  72                 i--;
  73                 XBYTE[ADCdata+i]=tmp;             //结果存入数据缓冲区
  74                 XBYTE[ADC]=i;                     //启动下一个模拟通道的A/D转换
  75           }*/
  76          
  77          
  78          /*timer0() interrupt 1
  79          {
  80             DISABLE;
  81             bEPPflags.bits.suspend= 1;   //清除挂起改变标志
  82             ENABLE;
  83          
  84          
  85          }*/
  86          
  87          
  88          usb_isr() interrupt 0
  89          {
  90   1              DISABLE;
  91   1              fn_usb_isr();
  92   1              ENABLE;
  93   1      }
  94          
  95          void dma_eot(void)
  96          {
  97   1          //if(bEPPflags.bits.dma_state==DMA_PENDING)
  98   1      
  99   1           //      bEPPflags.bits.setup_dma=1;
 100   1          //else
 101   1                   //  bEPPflags.bits.dma_state=DMA_IDLE;
 102   1      
 103   1      
 104   1      }
 105          
 106          void bus_reset(void)
 107          {
 108   1      
 109   1      }
 110          
 111          void fn_usb_isr()
 112          {
 113   1              unsigned int i_st;
 114   1      
 115   1              bEPPflags.bits.in_isr = 1;
 116   1              
C51 COMPILER V7.01  D12ISR                                                                 11/14/2003 09:44:52 PAGE 3   

 117   1              i_st = D12_ReadInterruptRegister();
 118   1              
 119   1              if(i_st != 0)
 120   1              {
 121   2                      if(i_st & D12_INT_BUSRESET)
 122   2                            
 123   2                              {
 124   3                              bus_reset();
 125   3                              
 126   3                              bEPPflags.bits.bus_reset = 1;
 127   3                              }
 128   2                      // else
 129   2                     //  {
 130   2                              if(i_st & D12_INT_EOT)
 131   2                              {
 132   3                                   dma_eot();
 133   3                              }
 134   2                      
 135   2                               if(i_st & D12_INT_SUSPENDCHANGE)
 136   2                              
 137   2                                  {
 138   3                                   bEPPflags.bits.suspend = 1;
 139   3                                  }
 140   2                               
 141   2                                  if(i_st & D12_INT_ENDP0OUT)//0x01
 142   2                                 {
 143   3                                   ep0_rxdone();
 144   3                                 }
 145   2                                 
 146   2                                 if(i_st & D12_INT_ENDP0IN)//0x02
 147   2                                 {
 148   3                                   ep0_txdone(); 
 149   3                                  }
 150   2                                  
 151   2                                
 152   2                                                 
 153   2                               if(i_st & D12_INT_ENDP1IN)
 154   2                                   
 155   2                                 {  //bEPPflags.bits.ep1_transmit=1;
 156   3                                   ep1_txdone();
 157   3                                 }
 158   2                               if(i_st & D12_INT_ENDP1OUT)
 159   2                                 {
 160   3                                   ep1_rxdone();
 161   3                                 }
 162   2                                 
 163   2                               if(i_st & D12_INT_ENDP2IN)
 164   2                                 
 165   2                                 {
 166   3                                   main_txdone();
 167   3                                 }
 168   2                                  
 169   2                               if(i_st & D12_INT_ENDP2OUT)
 170   2                                 {
 171   3                                   main_rxdone();
 172   3                                 }
 173   2                         //  }      
 174   2               }//end of i_st
 175   1      
 176   1              bEPPflags.bits.in_isr = 0;
 177   1              
 178   1      }//end of fn_usb_isr
C51 COMPILER V7.01  D12ISR                                                                 11/14/2003 09:44:52 PAGE 4   

 179          
 180          //控制输出(control  out  function)
 181          void ep0_rxdone(void)
 182          {
 183   1              unsigned char ep_last, i;
 184   1              //last = D12_ReadEndpointStatus(0) ;
 185   1              ep_last = D12_ReadLastTransactionStatus(0); // Clear interrupt flag
 186   1              
 187   1              
 188   1              if (ep_last & D12_SETUPPACKET)
 189   1               //if (last & 0x04)
 190   1              {
 191   2      
 192   2                      ControlData.wLength = 0;
 193   2                      ControlData.wCount = 0;
 194   2              //判断端点是否满,如是,则取出
 195   2                      if( D12_ReadBuffer(0,(unsigned char *)(&(ControlData.DeviceRequest)),sizeof(ControlData.DeviceRequest)) 
             -!= sizeof(DEVICE_REQUEST)) 
 196   2                      {

⌨️ 快捷键说明

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